当前位置: 首页 > news >正文

多旅行商问题:鹈鹕优化算法(Pelican Optimization Algorithm,POA)求解多仓库多旅行商问题MD-MTSP(提供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算法流程

在这里插入图片描述
参考文献:
[1] Trojovský P, Dehghani M. Pelican Optimization Algorithm: A Novel Nature-Inspired Algorithm for Engineering Applications. Sensors (Basel). 2022 Jan 23;22(3):855.

二、多仓库多旅行商问题

多旅行商问题(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中城市分布如下图所示:
在这里插入图片描述

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

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时:
鹈鹕优化算法的收敛曲线:
在这里插入图片描述

鹈鹕优化算法求得的路径:
在这里插入图片描述

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

3.2结果二

当五个旅行商的起始点城市分别为1、4 、7、8 、9时:
鹈鹕优化算法的收敛曲线:
在这里插入图片描述

鹈鹕优化算法求得的路径:
在这里插入图片描述

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

3.3结果三

当三个旅行商的起始点城市分别为15、21、24时:
鹈鹕优化算法的收敛曲线:
在这里插入图片描述

鹈鹕优化算法求得的路径:
在这里插入图片描述

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

四、完整MATLAB代码

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 1. 如何在Java中连接MySQL数据库?请解释使用JDBC连接的步骤。
  • 模拟+分类讨论,LeetCode 2332. 坐上公交的最晚时间
  • 前后端分离Vue美容店会员信息管理系统o7grs
  • Kubernetes中pod版本回滚相关的命令?
  • ant-design表格自动合并相同内容的单元格
  • 路由原理介绍
  • Springboot错误日志切面,找到post请求体被消费后的数据
  • Unity-Transform类-缩放和看向
  • CTFHub技能树-信息泄露-HG泄漏
  • linux-硬件与设备管理-硬件信息查看
  • 信息安全工程师(6)网络信息安全现状与问题
  • TI AM62X Secure Boot 流程简述
  • Python计算机视觉第十章-OpenCV
  • 开源项目 face parsing 人脸区域分割 人像区域分割 人脸分割 人像区域分割 BiSeNet
  • [mysql]mysql排序和分页
  • __proto__ 和 prototype的关系
  • 2017-09-12 前端日报
  • download使用浅析
  • Invalidate和postInvalidate的区别
  • Promise面试题2实现异步串行执行
  • 从0实现一个tiny react(三)生命周期
  • 从地狱到天堂,Node 回调向 async/await 转变
  • 从伪并行的 Python 多线程说起
  • 道格拉斯-普克 抽稀算法 附javascript实现
  • 高程读书笔记 第六章 面向对象程序设计
  • 关于springcloud Gateway中的限流
  • 模仿 Go Sort 排序接口实现的自定义排序
  • 区块链将重新定义世界
  • 如何设计一个比特币钱包服务
  • 入门到放弃node系列之Hello Word篇
  • 深度学习中的信息论知识详解
  • 算法-图和图算法
  • 突破自己的技术思维
  • 用mpvue开发微信小程序
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • 组复制官方翻译九、Group Replication Technical Details
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • #鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (12)目标检测_SSD基于pytorch搭建代码
  • (function(){})()的分步解析
  • (Matlab)使用竞争神经网络实现数据聚类
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • (一)Dubbo快速入门、介绍、使用
  • (一)项目实践-利用Appdesigner制作目标跟踪仿真软件
  • (转)shell中括号的特殊用法 linux if多条件判断
  • .bat批处理(四):路径相关%cd%和%~dp0的区别
  • .dwp和.webpart的区别
  • .NET Core IdentityServer4实战-开篇介绍与规划
  • .NET/C# 使用反射注册事件
  • .NET/C# 阻止屏幕关闭,阻止系统进入睡眠状态
  • .NET编程C#线程之旅:十种开启线程的方式以及各自使用场景和优缺点
  • /usr/bin/python: can't decompress data; zlib not available 的异常处理
  • @SpringBootConfiguration重复加载报错