【路径规划】基于模拟退火改进遗传算法求解带时间窗自行车路径规划问题(VRPTW)matlab代码

1 简介

车辆路径问题(Vehicle Routing Problem, VRP)是物流配送过程中的关键问题之一,随着物流配送行业竞争日益激烈和客户对物流配送时效性要求越来越高,对车辆路径问题的研究,尤其是对带时间窗车辆路径问题(Vehicle Routing Problem With Time Windows, VRPTW)的研究,不仅可以帮助运输企业提高服务水平,为客户提供快捷,准时,安全,舒适的服务,而且有助于企业节约运输成本,提高车辆利用效率,缩短生产周期,加速资金周转,实现资源的合理配置,汲取"第三利润源泉"的财富,因此研究带时间窗车辆路径问题具有重要的现实意义. 本文正是基于以上背景对带时间窗的车辆路径优化问题进行了相关研究.论文从旅行商问题出发,通过分析带时问窗车辆路径优化问题的基本理论,对可用于求解VRPTW的各种优化算法进行了对比,确定了遗传算法作为本文VRPTW求解算法.在此基础上,考虑配送距离,配送及时性以及配送车辆数对配送成本的影响,构建了以配送总成本最小化为目标的带有惩罚函数的VRPTW优化模型,并设计了适合于该模型求解的染色体编码方式以及遗传算子等.最后,应用算例进行了仿真试验,利用MATLAB软件分别计算出基于改进遗传算法和基本遗传算法的最优目标函数值与最优配送路径方案,通过对试验结果的对比分析,验证了本文所建模型及求解算法的合理性和有效性.

2 部分代码

%交叉算法采用部分匹配交叉%交叉算法采用部分匹配交叉
function [a,b]=intercross(a,b)
L=length(a);
if L<=10  %确定交叉宽度
   W=9;
elseif ((L/10)-floor(L/10))>=rand&&L>10
   W=ceil(L/10)+8;
else
   W=floor(L/10)+8;
end
p=unidrnd(L-W+1);%随机选择交叉范围,从p到p+W
for i=1:W
   %交叉
   x=find(a==b(1,p+i-1));
   y=find(b==a(1,p+i-1));
  [a(1,p+i-1),b(1,p+i-1)]=exchange(a(1,p+i-1),b(1,p+i-1));
  [a(1,x),b(1,y)]=exchange(a(1,x),b(1,y));   
end





%function [FARM]=intercross(FARM,D,Pc)
%[s,t]=size(FARM);%n*N
%FARM1=FARM;
%for i=1:2:s
 % if Pc>rand&&i<=s-1
   %     crosspoint =randperm(t-1);
 %       if crosspoint(2)<crosspoint(1)
  %         p=crosspoint(2);
%           crosspoint(2)=crosspoint(1);
  %         crosspoint(1)=p;
  %     end
   %     middle=zeros(1,crosspoint(2)-crosspoint(1));
  %     middle=FARM(i,crosspoint(1)+1:crosspoint(2));
  %     FARM(i,crosspoint(1)+1:crosspoint(2))=FARM(i+1,crosspoint(1)+1:crosspoint(2));
 %       FARM(i+1,crosspoint(1)+1:crosspoint(2))=middle;
   %     for j=1:crosspoint(1)
   %         while find(FARM(i,crosspoint(1)+1:crosspoint(2))==FARM(i,j))
    %           zhi=find(FARM(i,crosspoint(1)+1:crosspoint(2))==FARM(i,j));
 %               y=FARM(i+1,crosspoint(1)+zhi);
   %             FARM(i,j)=y;
  %           end
   %     end
 
 %     for j=crosspoint(2)+1:t
 %           while find(FARM(i,crosspoint(1)+1:crosspoint(2))==FARM(i,j))
 %               zhi=find(FARM(i,crosspoint(1)+1:crosspoint(2))==FARM(i,j));
  %               y=FARM(i+1,crosspoint(1)+zhi);
%                 FARM(i,j)=y;
   %         end
   %   end
      
      % 如果个体退化选择父代
      
   %   for i=1:s
   %       if myLength(D,FARM1(i,:))<myLength(D,FARM1(i,:))
          %   FARM(i,:)=FARM1(i,:);
   %       end
  %   end
 % end
%en
     

3 仿真结果

4 参考文献

[1]范月林, 周素萍. 基于改进遗传算法的带时间窗VRP问题研究[J]. 电脑知识与技术:学术交流, 2011.

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Matlab科研辅导帮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值