MATLAB遗传算法求解带过程时间窗和同时取送货的车辆调度问题(VRPSPDTW)代码实例

MATLAB遗传算法求解带过程时间窗和同时取送货的车辆调度问题(VRPSPDTW)代码实例

实例问题描述:现有一配送中心向14个客户点配送牛奶,并取回奶桶。配总中心和客户点坐标及每个客户点的服务时间如下所示。每个配送车辆的派遣费用为100元,配送车每公里油费为0.7元,车辆最大容量为100桶,车辆行驶平均速度为60km/h,车辆从配送中心统一出发,假设车辆到达第一个客户的时间为客户允许的最早时间,后续路线需满足客户的时间窗要求。客户允许的最早到达时间和最晚到达时间如下表所示。请找到合适的配送方案,即求出最佳所用配送车辆数目和对应的配送路线,使得在满足车容量约束和时间窗约束下配送成本最低。

表1 配送中心和客户点信息表
编号 坐标(千米) 服务时间
(分钟) 配送量(桶) 客户允许的最早时间 客户允许的最晚时间
X Y 送货(d) 集货§ 时 分 时 分
0 100 80 0 0 0 0 0 0 0
1 1 40 15 18 24 4 24 9 5
2 4 60 20 18 16 4 16 10 23
3 6 110 15 25 23 5 23 9 30
4 50 130 25 19 18 5 18 9 48
5 70 30 15 22 19 4 19 10 1
6 90 5 20 19 21 5 1 9 50
7 120 14 15 18 20 4 20 9 55
8 150 35 20 16 21 5 21 10 0
9 160 190 15 14 15 4 15 9 5
10 127 170 20 19 24 5 24 10 4
11 140 149 20 24 15 4 15 9 55
12 63 157 15 20 22 5 22 9 42
13 79 30 15 23 18 5 18 10 38
14 73 145 20 20 19 4 19 10 54

0号点为配送中心,其余14个点为客户点
每辆车的车容量:100
车辆行驶平均速度:60km/h

MATLAB遗传算法求解带过程时间窗和同时取送货的车辆调度问题(VRPSPDTW)代码实例_第1张图片

配送中心和客户点坐标位置如图所示,你能找出最优配送路线么?找不出来没关系,智能算法来帮你。先看优化结果!

2 求解VRPSPDTW的遗传算法设计
遗传算法简介
遗传算法是一种基于自然选择和群体遗传机理的搜索算法,它模拟了自然选择和自然遗传过程中的繁殖、杂交和突变现象.再利用遗传算法求解问题时,问题的每一个可能解都被编码成一个“染色体”,即个体,若干个个体构成了群体(所有可能解).在遗传算法开始时,总是随机的产生一些个体(即初始解),根据预定的目标函数对每一个个体进行评估,给出一个适应度值,基于此适应度值,选择一些个体用来产生下一代,选择操作体现了“适者生存”的原理,“好”的个体被用来产生下一代,“坏”的个体则被淘汰,然后选择出来的个体,经过交叉和变异算子进行再组合生成新的一代,这一代的个体由于继承了上一代的一些优良性状,因而在性能上要优于上一代,这样逐步朝着最优解的方向进化.因此,遗传算法可以看成是一个由可行解组成的群体初步进化的过程.

2、遗传操作
遗传操作是模拟生物基因的操作,他的任务就是根据个体适应度对其施加一定的操作,从而实现优胜劣汰的进化过程.从优化搜索的角度来看,遗传操作可以使问题的解逐代优化,逼近最优解,遗传操作包括以下三个基本遗传算子:选择、交叉、变异.选择和交叉基本上完成了遗传算法的大部分搜索功能,变异增加了遗传算法找到最优解的能力.

运行结果:
MATLAB遗传算法求解带过程时间窗和同时取送货的车辆调度问题(VRPSPDTW)代码实例_第2张图片

优化结束!

优化的车辆使用数目为:3
车辆1的配送路径为:0 ->4 -> 3 -> 2 -> 1 -> 0
车辆2的配送路径为:0 ->11 -> 9 -> 10 -> 12 -> 14 -> 0
车辆3的配送路径为:0 ->13 -> 5 -> 6 -> 7 -> 8 -> 0
此方案下各项成本计算如下:
车辆派遣成本为:300
油耗成本为:589.2676
时间惩罚成本为:0
车辆容量惩罚成本为:0

点击查看麦哥个人简介及代码获取方式

你可能感兴趣的:(matlab)