一、VRP简介

1 VRP基本原理
车辆路径规划问题(Vehicle Routing Problem,VRP)是运筹学里重要的研究问题之一。VRP关注有一个供货商与K个销售点的路径规划的情况,可以简述为:对一系列发货点和收货点,组织调用一定的车辆,安排适当的行车路线,使车辆有序地通过它们,在满足指定的约束条件下(例如:货物的需求量与发货量,交发货时间,车辆容量限制,行驶里程限制,行驶时间限制等),力争实现一定的目标(如车辆空驶总里程最短,运输总费用最低,车辆按一定时间到达,使用的车辆数最小等)。
VRP的图例如下所示:

2 问题属性与常见问题
车辆路径问题的特性比较复杂,总的来说包含四个方面的属性:
(1)地址特性包括:车场数目、需求类型、作业要求。
(2)车辆特性包括:车辆数量、载重量约束、可运载品种约束、运行路线约束、工作时间约束。
(3)问题的其他特性。
(4)目标函数可能是总成本极小化,或者极小化最大作业成本,或者最大化准时作业。

3 常见问题有以下几类:
(1)旅行商问题
(2)带容量约束的车辆路线问题(CVRP)



该模型很难拓展到VRP的其他场景,并且不知道具体车辆的执行路径,因此对其模型继续改进。



(3)带时间窗的车辆路线问题
由于VRP问题的持续发展,考虑需求点对于车辆到达的时间有所要求之下,在车辆途程问题之中加入时窗的限制,便成为带时间窗车辆路径问题(VRP with Time Windows, VRPTW)。带时间窗车辆路径问题(VRPTW)是在VRP上加上了客户的被访问的时间窗约束。在VRPTW问题中,除了行驶成本之外, 成本函数还要包括由于早到某个客户而引起的等待时间和客户需要的服务时间。在VRPTW中,车辆除了要满足VRP问题的限制之外,还必须要满足需求点的时窗限制,而需求点的时窗限制可以分为两种,一种是硬时窗(Hard Time Window),硬时窗要求车辆必须要在时窗内到达,早到必须等待,而迟到则拒收;另一种是软时窗(Soft Time Window),不一定要在时窗内到达,但是在时窗之外到达必须要处罚,以处罚替代等待与拒收是软时窗与硬时窗最大的不同。


模型2(参考2017 A generalized formulation for vehicle routing problems):
该模型为2维决策变量



(4)收集和分发问题
(5)多车场车辆路线问题
参考(2005 lim,多车场车辆路径问题的遗传算法_邹彤, 1996 renaud)

由于车辆是同质的,这里的建模在变量中没有加入车辆的维度。


(6)优先约束车辆路线问题
(7)相容性约束车辆路线问题
(8)随机需求车辆路线问题

4 解决方案
(1)数学解析法
(2)人机交互法
(3)先分组再排路线法
(4)先排路线再分组法
(5)节省或插入法
(6)改善或交换法
(7)数学规划近似法
(8)启发式算法

5 VRP与VRPTW对比

二、遗传算法简介

1 引言


2 遗传算法理论
2.1 遗传算法的生物学基础


2.2 遗传算法的理论基础




2.3 遗传算法的基本概念






2.4 标准的遗传算法


2.5 遗传算法的特点


2.6 遗传算法的改进方向

3 遗传算法流程



4 关键参数说明

三、案例及部分源代码

1 案例
约束条件:

拥有多个物流中心。
车辆从某一个物流中心出发,完成配送任务后,可以不回到原来出发的物流中心,返回距离最近的物流中心,即开放式车辆路径。当然,根据车辆服务最后一个客户与所有物流中心的距离,如果与原来出发的物流中心是最短距离,也可以返回原来出发的物流中心。
优化目标:车辆固定使用成本(200元/辆)、车辆行驶时间成本(0.3元/分钟)、车辆等待时间成本(0.3元/分钟)、车辆服务时间(0.3元/分钟)成本之和最小。
约束条件:(1)不超过车辆容量限制(车辆容量为1000单位),(2)服务必须在客户时间窗内进行,(3)车辆可以提前到达客户,产生等待时间。(4)设定车辆从物流中心的出发时间为0时刻,即第0分钟。

2 部分源代码

%%遗传算法求解vrp问题(为选择操作从新设计后程序)
%D是距离矩阵,n为种群个数
%C为停止代数,遗传到第 C代时程序停止,C的具体取值视问题的规模和耗费的时间而定
%交叉概率Pc,变异概率Pm
%R为最短路径,Rlength为路径长度
function VRPvolume_shangyuan=30;                       %一架飞机对伤员的载量约束volume_wuzi=200;                           %一架飞机对物资的载量约束sudu_feiji=200;                            %一架飞机的速度base_num1=5;                               %各个仓库的飞机数量base_num2=5;base_num3=5;n=100;                                      %个体数C=100;                                     %迭代次数Pc=0.8;Pm=0.3;%主程序入口
tab=2         ; %tab=1,则程序跑的是所有点%tab=2,则程序跑的是有缺失的点if tab==1%初始化load('h.mat');demand_shangyuan(1,:)=a(:,4);demand_wuzi(1,:)=a(:,6);zuobiao(1,:)=a(:,2);zuobiao(2,:)=a(:,3);timewindow(1,:)=a(:,8);timewindow(2,:)=a(:,9);D = linjiejuzhen( zuobiao );    [N,NN]=size(D);%初始化点的出发仓库和回归仓库for i=1:N;dis(1,i)=sqrt((zuobiao(1,i)-22)^2+(zuobiao(2,i)-75)^2);dis(2,i)=sqrt((zuobiao(1,i)-75.8)^2+(zuobiao(2,i)-80.1)^2);dis(3,i)=sqrt((zuobiao(1,i)-53.4)^2+(zuobiao(2,i)-59.9)^2);if (dis(1,i)<=dis(2,i))if (dis(1,i)<=dis(3,i))dis(4,i)=1;elsedis(4,i)=3;endelseif (dis(2,i)<=dis(3,i))dis(4,i)=2;elsedis(4,i)=3;endend    endclear i;[R,minlen]=geneticVRP(D,dis,timewindow,demand_shangyuan,demand_wuzi,volume_shangyuan,volume_wuzi,sudu_feiji,base_num1,base_num2,base_num3,n,C,Pc,Pm,zuobiao);%运算返回最优路径R和其总距离Rlength
else%初始化delete=[49 34 9 10 58];%要删除的点delete=sort(delete,'descend');[M,MM]=size(delete);load('h.mat');demand_shangyuan(1,:)=a(:,4);demand_wuzi(1,:)=a(:,6);zuobiao(1,:)=a(:,2);zuobiao(2,:)=a(:,3);timewindow(1,:)=a(:,8);timewindow(2,:)=a(:,9);xiba=0;for i=1:MMxiba=xiba+demand_shangyuan(1,delete(i))+demand_wuzi(1,delete(i));end[B,BB]=size(demand_shangyuan);old=(1:BB);for new=1:MMold(delete(new))=[];demand_shangyuan(delete(new))=[ ];demand_wuzi(delete(new))=[];zuobiao(:,delete(new))=[];timewindow(:,delete(new))=[];endD = linjiejuzhen( zuobiao );    [N,NN]=size(D);%初始化点的出发仓库和回归仓库for i=1:N;dis(1,i)=sqrt((zuobiao(1,i)-22)^2+(zuobiao(2,i)-75)^2);dis(2,i)=sqrt((zuobiao(1,i)-75.8)^2+(zuobiao(2,i)-80.1)^2);dis(3,i)=sqrt((zuobiao(1,i)-53.4)^2+(zuobiao(2,i)-59.9)^2);if (dis(1,i)<=dis(2,i))if (dis(1,i)<=dis(3,i))dis(4,i)=1;elsedis(4,i)=3;endelseif (dis(2,i)<=dis(3,i))dis(4,i)=2;elsedis(4,i)=3;endend    endclear i;[R,minlen]=geneticVRP_delete(old,xiba,D,dis,timewindow,demand_shangyuan,demand_wuzi,volume_shangyuan,volume_wuzi,sudu_feiji,base_num1,base_num2,base_num3,n,C,Pc,Pm,zuobiao);%运算返回最优路径R和其总距离Rlength
end

四、运行结果

五、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 包子阳,余继周,杨杉.智能优化算法及其MATLAB实例(第2版)[M].电子工业出版社,2016.
[2]张岩,吴水根.MATLAB优化算法源代码[M].清华大学出版社,2017.

【VRP】基于matalb遗传算法求解多中心的车辆路径规划问题【含Matlab源码 114期】相关推荐

  1. 【配送路径规划】基于matlab蚁群优化节约算法单中心多城市配送车辆路径规划【含Matlab源码 017期】

    一.VRP简介 1 VRP基本原理 车辆路径规划问题(Vehicle Routing Problem,VRP)是运筹学里重要的研究问题之一.VRP关注有一个供货商与K个销售点的路径规划的情况,可以简述 ...

  2. 【RRT三维路径规划】基于matlab RRT算法无人机三维路径规划【含Matlab源码 155期】

    一.获取代码方式 获取代码方式1: 通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码. 获取代码方式2: 完整代码已上传我的资源:[三维路径规划]基于matlab RRT算法无人机三维 ...

  3. 【RRT三维路径规划】基于matlab RRT算法无人机三维路径规划【含Matlab源码 1363期】

    一.获取代码方式 获取代码方式1: 通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码. 获取代码方式2: 完整代码已上传我的资源:[三维路径规划]基于matlab RRT算法无人机三维 ...

  4. 【APF三维路径规划】基于matlab人工势场算法无人机三维路径规划【含Matlab源码 168期】

    一.获取代码方式 获取代码方式1: 通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码. 获取代码方式2: 完整代码已上传我的资源:[三维路径规划]基于matlab人工势场算法无人机三维 ...

  5. 【A_star三维路径规划】基于matlab A_star算法无人机三维路径规划【含Matlab源码 446期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[三维路径规划]基于matlab A_star算法无人机三维路径规划[含Matlab源码 446期] 获取代码方式2: 付费专栏Matla ...

  6. 【RRT三维路径规划】基于matlab RRT_Star算法三维路径规划【含Matlab源码 1571期】

    一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[三维路径规划]基于matlab RRT_Star算法三维路径规划[含Matlab源码 1571期] 点击上面蓝色字体,直接付费下载,即可. ...

  7. 【BFS三维路径规划】基于matlab广度优先搜索算法无人机三维路径规划【含Matlab源码 270期】

    一.获取代码方式 获取代码方式1: 通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码. 获取代码方式2: 完整代码已上传我的资源:[三维路径规划]基于matlab广度优先搜索算法无人机 ...

  8. 【路径规划】基于matlab DWA算法机器人局部避障路径规划【含Matlab源码 890期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[路径规划]基于matlab DWA算法机器人局部避障路径规划[含Matlab源码 890期] 获取代码方式2: 通过订阅紫极神光博客付费 ...

  9. 【PSO三维路径规划】基于matlab粒子群融合遗传算法多无人机三维路径规划【含Matlab源码 333期】

    一.无人机简介 0 引言 随着现代技术的发展,飞行器种类不断变多,应用也日趋专一化.完善化,如专门用作植保的大疆PS-X625无人机,用作街景拍摄与监控巡察的宝鸡行翼航空科技的X8无人机,以及用作水下 ...

  10. 【TWVRP】基于matlab鲸鱼算法求解带时间窗开放式车辆路径问题【含Matlab源码 1986期】

    ⛄一.鲸鱼算法简介 鲸鱼优化算法(Whale Optimization Algorithm,WOA)是澳大利亚学者Mirjalili等根据座头鲸的狩猎方式提出的一种新的群智能优化算法.鲸鱼在大海中随机 ...

最新文章

  1. 5位华人博士入选2021苹果学者!其中1名北大在读博士师从崔斌教授
  2. c语言万年历设计目的,万年历设计报告
  3. android 图片放大缩小 多点触摸,Android 多点触摸(图片放大缩小)
  4. windows下配置Python环境并安装Pycharm2018
  5. 作为微软技术.net 3.5的三大核心技术之一的WCF虽然没有WPF美丽的外观
  6. linux中快捷脚本,Linux下Shell编程快捷键大全(日常整理)
  7. 依据经纬度解析商圈scala实现
  8. 如果因为断电等导致文件损坏的系统无法开启的解决办法(鸟哥私房菜)
  9. hdu 1333水题
  10. Flink + TiDB,体验实时数仓之美
  11. AMD显卡超频显示器方法
  12. Jensen不等式概率论形式的证明
  13. 软件需求工程 高校教学平台 测试计划
  14. c语言do while例子,C语言do while循环
  15. 干货| RNA质检的那些事
  16. 博文收藏夹(updating)
  17. 基于OpenStack的云测试平台
  18. Echarts使用二:全国地图与各省市地图联动
  19. Rosalind第68题:Counting Optimal Alignments
  20. C++实现九九乘法 (by yzs-device)

热门文章

  1. (五)Thymeleaf标准表达式之——[7-8]条件表达式 默认表达式
  2. 【转载】【C基础】#define宏定义中的#,##,@#,\ 这些符号的神奇用法
  3. 003_如何正确的进入容器
  4. 转HashMap Hashtable区别
  5. Interview Experience in Singapore(Part Ⅲ)
  6. 关于自定义通知事件的跨线程问题
  7. 20200604每日一句
  8. 190317每日一句
  9. Atitit spring cache key的生成 与ken生成规范 1. Good key name meth.params 1 1.1. Use epl 的mode but only clss
  10. Atitit 工具选型的因素与方法 attilax总结