粒子群优化算法(PSO)求解带时间窗的车辆路径问题(VRPTW)MATLAB代码讲解

作品简介
新来的小伙伴可在公众号后台回复 代码,即可提取一整套高质量智能优化算法MATLAB代码

粒子群优化算法(PSO)求解带时间窗的车辆路径问题(VRPTW)这篇推文中我们讲解了使用PSO求解VRPTW的基本思路,今天我们就讲一讲PSO求解VRPTW的MATLAB代码。

本期推文目录:
01 代码使用方法
02 实验结果展示
03 代码设计思路
04 代码分享

01 代码使用方法


解压压缩包后,在MATLAB中找到解压文件夹,双击并打开PSO_VRPTW.m文件,点击运行此文件。比如说我是将压缩包PSO求解VRPTW代码.zip放在桌面上,其次将该文件夹解压至桌面,然后在MATLAB中找到该文件夹路径,双击打开PSO_VRPTW.m文件即可运行代码。


代码中使用的算例依然是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操作,在主循环结束后对全局最优粒子再次进行局部搜索操作。

04 代码分享

如下代码链接
创作时间: