混合遗传算法求解多卡车-无人机路径优化问题(完整代码&数据)
目录
这几天看到一些不少文章,是做卡车+无人机路径优化,觉得挺有意思的。这个实际上就是卡车沿道路网行驶并直接服务部分客户,然后无人机从卡车所在节点起飞、 为单个客户送货后, 在卡车后续经过的某节点与卡车会合、被回收。
难点就在于卡车和无人机的同步约束,以及如何设计算法进行高效求解。如果这部分做得精彩,再加上一些小创新,发个高水平期刊还是没什么问题的。
从目前的文献来看,大部分文献都集中于单卡车-无人机的优化,缺少大规模客户的配送优化,求解算法上一般也比较固定。因此,今天,给大家带来一期基于模因算法(混合遗传算法)的多卡车-无人机路径优化研究。想获取代码不想看内容的小伙伴也可以直接拉到文末~
和之前的代码一样,您只需做的工作:一键运行main文件,即可出图!代码注释清晰,非常适合新手小白。
场景建模
假设有一个配送中心、若干客户、若干辆同型卡车,每辆卡车搭载一架无人机;卡车走曼哈顿距离;无人机走欧氏距离;无人机每次任务只为一个客户送货,从卡车路径上的某节点起飞,送完在卡车后续经过的某节点会合回收;卡车有载重上限,无人机有载荷上限和单次最大飞行时间;需求大的大件只能卡车送,小件才能交给无人机。
数据这里,我们这里配了一个非常适合卡车无人机的数据集,共有一个仓库和30个客户,需求量大小搭配(一部分适合无人机、一部分必须卡车),坐标分布合理,非常适合我们的实验。

如果需要增加或者替换坐标,只需按照我的数据集格式替换即可,非常适合新手小白~
数学模型与算法设计
为了更加贴近真实场景,我们选用了最小化最大完工时间,也就是所有卡车里最晚返回仓库那一辆的总用时,能够防止被审稿人质疑。
在求解算法方面,我们创新性的提出了一种混合遗传算法,由于嵌入了局部搜索,因此也被称为模因算法。具体流程如下:
1.编码。用客户优先级+无人机指派标记对解进行编码;
2.解码。按优先级排序 → 按卡车载重切分车辆 → 沿路径插入可行的无人机航次(自动校验载荷与续航);
3.适应度计算。用上面的计时模型算出最大完工时间作为适应度;
4.进化。这一步就是经典的遗传算法,包括选择、交叉、变异、精英保留。
5.局部搜索。对每个个体,在客户优先级序列上随机选取一段做移位扰动,重新解码并算出最大完工时间,只要比原来更优就接受,否则换一段继续尝试,最多若干次(可以自己设置次数)。这个操作能进一步提高遗传算法的收敛效果。
完整的数学模型如下:







结果展示
废话不多说,我们设置种群数量为100,迭代次数为50,直接来看下结果。运行main,自动出三张图加一个Excel。
首先是配送路径图。其中卡车走实线,无人机走虚线,不同的卡车和无人机用不同颜色的线标出,体现了多卡车-无人机的特点,并且也能够非常清晰地看到卡车路径以及无人机从车上飞出去送货再飞回的过程。

然后是收敛曲线。可以看到,最大完工时间随迭代次数下降,也是一个非常有力的算法成功求解的证明

最后是甘特图。每辆车的时间线全画出来,卡车行驶、客户服务、无人机起飞回收、无人机飞行并行排布,并标出最大完工时间。大多数卡车无人机的论文或者代码都没有这张图,而我们用这张图一下就能说清卡车和无人机的并行关系。

Excel 结果表。运行参数、总体结果、各车明细全部导出。
同时,命令行也会同时打印核心指标,示例如下:
算法耗时(秒) : 3.76
最优目标函数值 : 6.6137
最大完工时间 : 6.6137
使用卡车数 : 2
---卡车汇总---
运输距离 : 708
服务客户数: 26
---无人机汇总---
运输距离 : 112.1503
服务客户数: 4
更关键的是,我们的文件夹内非常清晰,没有什么乱七八糟的文件,并且附带了完整的数学模型,您只需运行的文件只有main一个,不信的可以看下面的截图!

以上所有图片,均可一键运行生成,无需配置环境,其他参数均可调!注释清晰!非常适合新手小白!
完整代码获取
想要获取以上完整代码的,可以复制下方链接到浏览器:
https://mbd.pub/o/bread/YZaTmZhqZg==
更多推荐
所有评论(0)