0
点赞
收藏
分享

微信扫一扫

【SDPVRP问题】基于遗传算法求解同时取送货的车辆路径问题含Matlab代码

1 简介

同时取货和送货车辆路径问题(VRP_SPD)是经典车辆路径问题(VRP)的一个扩展,在VRP_SPD中,顾客可能要求同时取货和送货服务.本文针对这类问题,提出一种以集成方式处理取货和送货操作的遗传算法仿真分析表明,本文算法比现有算法能取得更好的优化结果,且具有很好的稳定性.

【SDPVRP问题】基于遗传算法求解同时取送货的车辆路径问题含Matlab代码_matlab代码

【SDPVRP问题】基于遗传算法求解同时取送货的车辆路径问题含Matlab代码_参考文献_02

【SDPVRP问题】基于遗传算法求解同时取送货的车辆路径问题含Matlab代码_遗传算法_03

【SDPVRP问题】基于遗传算法求解同时取送货的车辆路径问题含Matlab代码_遗传算法_04

【SDPVRP问题】基于遗传算法求解同时取送货的车辆路径问题含Matlab代码_参考文献_05

2 部分代码

%输出解的序列中插入代表配送中心的0,分隔子路径
function [R,Rlength,carNum]=OUTPUT(chrom)
global Delivery Pickup;
chrom_new=[];
vecOUTtmp=Delivery(chrom);
vecINtmp=Pickup(chrom);
vecAnstmp=chrom;
num=0;
carNum=0; %所需车辆数
totalDis=0;
num_total=length(chrom);
chrom_new(1)=0;
len=2;
old_len=1;
while(1)
vecOUTtmp=vecOUTtmp(num+1:end);
vecINtmp=vecINtmp(num+1:end);
vecAnstmp=vecAnstmp(num+1:end);
num1=rule1_2(vecOUTtmp); %判断满足送货总量小于车的载重量的配送点个数
num2=rule1_2(vecINtmp); %判断满足取货量小于车的载重量的配送点个数
num3=rule3(vecINtmp,vecOUTtmp); %判断满足每个客户点的载重量小于载重负荷的配送点个数
num=min(num1,min(num2,num3)); %满足全部约束条件的配送点个数
carNum=carNum+1;
vecAnsOUT=vecAnstmp(1:num);
totalDis=totalDis+myDist(vecAnsOUT); %计算一辆车的总运输距离
num_total=num_total-num;
chrom_new(len:len+num-1)=chrom(old_len:old_len+num-1);
len=len+num;
old_len=old_len+num;
chrom_new(len)=0;
len=len+1;
if num_total<=0
break;
end
end
R=chrom_new;
Rlength=totalDis;
carNum=carNum;


3 仿真结果

【SDPVRP问题】基于遗传算法求解同时取送货的车辆路径问题含Matlab代码_遗传算法_06


【SDPVRP问题】基于遗传算法求解同时取送货的车辆路径问题含Matlab代码_参考文献_07

4 参考文献

[1]彭春林, 梁春华, 周泓. 求解同时取货和送货车辆路径问题的改进遗传算法[J]. 系统仿真学报, 2008, 20(9):5.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。

【SDPVRP问题】基于遗传算法求解同时取送货的车辆路径问题含Matlab代码_参考文献_08

举报

相关推荐

0 条评论