01 代码使用方法
解压压缩包后,在MATLAB中找到解压文件夹,双击并打开PSO_VRPTW.m文件,点击运行此文件。
比如说我是将压缩包PSO求解VRPTW代码(微信公众号:优化算法交流地).zip放在桌面上,其次将该文件夹解压至桌面,然后在MATLAB中找到该文件夹路径,双击打开PSO_VRPTW.m文件即可运行代码。
代码中使用的算例依然是solomon测试算例(公众号后台回复solomon,即可提取数据集),其中以r101算例为例为各位讲解一下r101.txt文件中的数据代表什么含义。
这个文件中的数据实际上分为两部分:
1)VEHICLE数据,即配送车辆数据;
2)CUSTOMER数据,即顾客数据。
首先来看VEHICLE数据,NUMBER表示车辆最大使用数目,即在r101算例中车辆最大使用数目为25;CAPACITY表示每辆车的最大装载量,即在r101算例中每辆车的最大装载量为200;
其次看CUSTOMER数据,CUST NO.表示顾客序号,即为第1列数据含义;XCOORD.表示顾客横坐标,即为第2列数据含义;YCOORD.表示顾客纵坐标,即为第3列数据含义;DEMAND表示顾客需求量,即为第4列数据含义;READY TIME表示顾客左时间窗,即为第5列数据含义;DUE DATE表示顾客右时间窗,即为第6列数据含义;SERVICE TIME表示对顾客的服务时间,即为第7列数据含义。
02 实验结果展示
分别将c101和r101两组算例作为实验数据的输入,以评估算法设计的优劣,实验结果如下:
r101算例
最优配送方案路线图
迭代过程图
配送方案截图
国际上最优解是车辆使用数目为19,车辆行驶总距离为1645.79。
我们得到的结果为车辆使用数目为19,车辆行驶总距离为1667.58。
c101算例
最优配送方案路线图
迭代过程图
配送方案截图
国际上最优解是车辆使用数目为10,车辆行驶总距离为828.94。
我们得到的结果为车辆使用数目为10,车辆行驶总距离为828.94。
03 代码设计思路
代码设计思路为在基本PSO框架基础上,重构针对VRPTW问题的编码与解码方式,在每个粒子更新位置过程中嵌入relocate操作,在主循环结束后对全局最优粒子再次进行局部搜索操作。