多旅行商问题:鹈鹕优化算法(Pelican Optimization Algorithm,POA)求解多仓库多旅行商问题(提供Matlab代码)

一、鹈鹕优化算法

鹈鹕优化算法(Pelican Optimization Algorithm,POA)由Pavel Trojovský和Mohammad Dehghani 于2022年提出,该算法模拟了鹈鹕在狩猎过程中的自然行为。
在这里插入图片描述

鹈鹕很大,喙很长,喉咙里有一个大袋子,用来捕捉和吞咽猎物。这种鸟喜欢群体和社交生活,并以数百只鹈鹕为一组生活。鹈鹕的外观如下:它们的体重约为2.75至15公斤,高度约为1.06至1.83米,翼展约为0.5至3米。鹈鹕的食物主要由鱼类组成,更罕见的是青蛙,海龟和甲壳类动物;如果它非常饿,它甚至会吃海鲜。鹈鹕经常一起打猎。鹈鹕在确定猎物的位置后,从10-20米的高度潜入猎物。当然,一些物种也会在低海拔地区下降到它们的猎物。然后,它们在水面上展开翅膀,迫使鱼进入浅水区,以便它们可以轻松捕获鱼。当捕获鱼时,大量的水进入鹈鹕的喙,在吞下鱼之前将头部向前移动以除去多余的水。

1.1算法原理

POA模拟了鹈鹕在攻击和狩猎猎物时的行为和策略,分为两个阶段:

1.1.2逼近猎物(全局探索阶段)

在第一阶段,鹈鹕确定猎物的位置,然后向这个确定的区域移动。对这种鹈鹕的策略进行建模,可以进行搜索空间扫描,并发挥所提出的POA在发现搜索空间不同区域方面的探索能力。POA中的重要一点是,猎物的位置是在搜索空间中随机生成的。这增加了POA在精确搜索问题解决空间方面的探索能力。上述概念和鹈鹕向猎物位置移动的策略通过下面模型进行数学模拟。
在这里插入图片描述

1.1.3水面飞行(局部探索阶段)

在第二阶段,鹈鹕到达水面后,在水面上展开翅膀,将鱼向上移动,然后将猎物收集在喉咙袋中。这种策略导致攻击区域内更多的鱼被鹈鹕捕获。对鹈鹕的这种行为进行建模,使所提出的POA收敛到狩猎区域中更好的点。这个过程增加了本地搜索能力和POA的利用能力。从数学的角度来看,该算法必须检查鹈鹕位置附近的点,以收敛到更好的解决方案。鹈鹕在狩猎过程中的这种行为在数学建模为:
在这里插入图片描述

1.2算法流程

在这里插入图片描述

二、多仓库多旅行商问题

多旅行商问题(Multiple Traveling Salesman Problem, MTSP)是著名的旅行商问题(Traveling Salesman Problem, TSP)的延伸,多旅行商问题定义为:给定一个座城市的城市集合,指定个推销员,每一位推销员从起点城市出发访问一定数量的城市,最后回到终点城市,要求除起点和终点城市以外,每一座城市都必须至少被一位推销员访问,并且只能访问一次,需要求解出满足上述要求并且代价最小的分配方案,其中的代价通常用总路程长度来代替,当然也可以是时间、费用等。多仓库多旅行商问题是其中一种多旅行商问题。
多旅行商问题(Multiple Traveling Salesman Problem, MTSP):单仓库多旅行商问题及多仓库多旅行商问题(含动态视频)

多仓库多旅行商问题(Multi-Depot Multiple Travelling Salesman Problem, MD-MTSP):个推销员从座不同的城市出发,访问其中一定数量的城市并且每座城市只能被某一个推销员访问一次,最后回到各自出发的城市,这种问题模型被称之为MD-MTSP。

三、求解结果

本文选取国际通用的TSP实例库TSPLIB中的测试集bayg29,bayg29中城市分布如下图所示:
多旅行商问题:鹈鹕优化算法(Pelican Optimization Algorithm,POA)求解多仓库多旅行商问题(提供Matlab代码)_第1张图片

本文采用鹈鹕优化算法求解bayg29:

完整代码:https://mbd.pub/o/bread/Y52YlJtr

StartPoint=[1 5 8 15];%起点(可以修改) 必须由小到大排列
Tnum=length(StartPoint);%旅行商个数
Dim=size(data,1)-Tnum;%维度
lb=-100;%下界
ub=100;%上界
fobj=@Fun;%计算总距离
SearchAgents_no=50; % 种群大小(可以修改)
Max_iteration=1000; % 最大迭代次数(可以修改)
[bestX,fMin,curve]=POA(SearchAgents_no,Max_iteration,lb,ub,Dim,fobj);  %鹈鹕优化算法

部分结果如下:

3.1结果一

当四个旅行商的起始点城市分别为1、5 、8 、15时:
鹈鹕优化算法的收敛曲线:
多旅行商问题:鹈鹕优化算法(Pelican Optimization Algorithm,POA)求解多仓库多旅行商问题(提供Matlab代码)_第2张图片

鹈鹕优化算法求得的路径:
多旅行商问题:鹈鹕优化算法(Pelican Optimization Algorithm,POA)求解多仓库多旅行商问题(提供Matlab代码)_第3张图片

鹈鹕优化算法求解的最短总路径:4545.99

3.2结果二

当五个旅行商的起始点城市分别为1、4 、7、8 、9时:
鹈鹕优化算法的收敛曲线:
多旅行商问题:鹈鹕优化算法(Pelican Optimization Algorithm,POA)求解多仓库多旅行商问题(提供Matlab代码)_第4张图片

鹈鹕优化算法求得的路径:
多旅行商问题:鹈鹕优化算法(Pelican Optimization Algorithm,POA)求解多仓库多旅行商问题(提供Matlab代码)_第5张图片

鹈鹕优化算法求解的最短总路径:6480.2949

3.3结果三

当三个旅行商的起始点城市分别为15、21、24时:
鹈鹕优化算法的收敛曲线:
多旅行商问题:鹈鹕优化算法(Pelican Optimization Algorithm,POA)求解多仓库多旅行商问题(提供Matlab代码)_第6张图片

鹈鹕优化算法求得的路径:
多旅行商问题:鹈鹕优化算法(Pelican Optimization Algorithm,POA)求解多仓库多旅行商问题(提供Matlab代码)_第7张图片

鹈鹕优化算法求解的最短总路径:4535.7506

四、参考代码

文件夹内包含所有代码及使用说明,点击main.m即可运行,可更改旅行商个数及起点。
多旅行商问题:鹈鹕优化算法(Pelican Optimization Algorithm,POA)求解多仓库多旅行商问题(提供Matlab代码)_第8张图片

你可能感兴趣的:(TSP,单目标应用,MATLAB,matlab,NP-hard问题,多旅行商问题,鹈鹕优化算法)