✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。
🍎个人主页:Matlab科研工作室
🍊个人信条:格物致知。
更多Matlab仿真内容点击👇
⛄ 内容介绍
电动车在物流领域中取代燃油车是一个广泛的发展趋势.但电动车的电池利用率低,充电时间长,相关充电配套设施建设不完善,存在"续驶里程焦虑"等现象成为了电动车推广和应用的重要制约因素,也是一般路径规划模型不适用于电动车的原因.因此,针对电动车的特性研究路径规划问题具有重要的理论研究价值和实用价值.此外,现有的电动车路径规划研究中关于电量消耗模型的构建,大多假设与速度和载重无关.但是,电动车的实际行驶效果和理论研究表明,速度和载重对电动车的电量消耗具有显著的非线性影响,行驶速度每增加或减少10km/h,单位里程电量消耗量变化10%以上,而车辆载重每增加或减少100kg,单位里程电量消耗平均变化约4.2%,这些影响是不可忽略的,在研究路径规划时需加以考虑.本文基于速度和载重对电量消耗的非线性影响以及客户时间窗,车辆载重及电量的约束,以最小化电动车启动成本,充电成本,总行驶里程成本和总时间惩罚成本为目标函数,构建了基于非线性电量消耗的电动车路径规划模型,并采用遗传算法算法分别对问题求解,综合比较选择更优的路径规划结果.
⛄ 部分代码
%% 判断当前方案是否满足时间窗约束和载重量约束,0表示违反约束,1表示满足全部约束
%输入:chrom 个体
%输入:cap 最大载重量
%输入:demands 需求量
%输入:a 顾客时间窗开始时间[a[i],b[i]]
%输入:b 顾客时间窗结束时间[a[i],b[i]]
%输入:L 配送中心时间窗结束时间
%输入:s 客户点的服务时间
%输入:dist 距离矩阵,满足三角关系,暂用距离表示花费c[i][j]=dist[i][j]
%输出:flag 0表示违反约束,1表示满足全部约束
function [flag,c]=Judge(VC,cap,demands,a,b,L,s,dist,chesu,bl)
flag=1; %假设满足约束
NV=size(VC,1); %车辆使用数目
%% 计算每辆车的装载量 init_v
init_v=vehicle_load(VC,demands);
%% 计算每辆车配送路线上在各个点开始服务的时间,还计算返回集配中心时间
bsv=begin_s_v(VC,a,s,dist,chesu,bl);
%% 判断是否违背时间窗约束,0代表不违背,1代表违背(violate 为一个为只包含0和1 的矩阵,1代表违反)
[violate_INTW, c]=Judge_TW(VC,bsv,a,b,L);
%% 遍历每条路径,一旦有一条路径不满足约束,flag=0
for i=1:NV
find1=find(violate_INTW{i}==1,1,'first'); %寻找该条路径违反时间窗约束的顾客位置
if init_v(i)>cap || ~isempty(find1)
flag=0;
break
end
end
end
⛄ 运行结果
⛄ 参考文献
[1] 周屹, 李海龙, 王锐. 遗传算法求解物流配送中带时间窗的VRP问题[J]. 吉林大学学报:理学版, 2008, 46(2):4.
[2] 阎庆, 邰蕾蕾. 用混合遗传算法解决有时间窗的车辆路径规划问题[J]. 安徽大学学报:自然科学版, 2007, 31(2):4.
[3] 周景欣. 遗传算法求解带时间窗的车辆路径问题[J]. 中国储运, 2023(1):2.
[4] 蒋波. 基于遗传算法的带时间窗车辆路径优化问题研究[D]. 北京交通大学, 2010.