MD-MTSP:孔雀优化算法POA求解多仓库多旅行商问题(提供MATLAB代码,可以修改旅行商个数及起点)

news/2025/2/21 9:06:05/

一、多仓库多旅行商问题

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

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

二、孔雀优化算法POA

孔雀优化算法 ( Peafowl Optimization Algorithm, POA), 是由 Jingbo Wang 等于2022 年提出的一种群体智能优化算法。 其灵感来源于孔雀的群体行为。

孔雀优化算法POA提供MATLAB代码

三、孔雀优化算法POA求解多仓库多旅行商问题MDMTSP

MDMTSP:孔雀优化算法POA求解多仓库多旅行商问题
本文选取国际通用的TSP实例库TSPLIB中的测试集bayg29,bayg29中城市分布如下图所示:
在这里插入图片描述

以四个旅行商为例,部分代码如下:可以修改旅行商个数及起点

完整MATLAB code link :https://mbd.pub/o/bread/ZJmTlJxpclose all
clear
clc
global data  StartPoint Tnum
%数据集参考文献  REINELT G.TSPLIB-a traveling salesman problem[J].ORSA Journal on Computing,1991,3(4):267-384.
% 导入TSP数据集 bayg29
load('data.txt')
StartPoint=[1 5 10 16];%起点城市的序号(可以修改) 必须由小到大排列 (建议:2到6个旅行商)
Tnum=length(StartPoint);%旅行商个数
Dim=size(data,1)-Tnum;%维度
lb=-100;%下界
ub=100;%上界
fobj=@Fun;%计算总距离
SearchAgents_no=50; % 种群大小(可以修改)
Max_iteration=2000

部分结果如下:

第1个旅行商的路径:1->29->3->26->9->12->6->1

第1个旅行商的总路径长度:1194.571053

第2个旅行商的路径:5->2->21->27->23->8->28->5

第2个旅行商的总路径长度:1256.980509

第3个旅行商的路径:10->18->15->4->24->13->20->10

第3个旅行商的总路径长度:1043.168251

第4个旅行商的路径:16->19->14->17->22->11->25->7->16

第4个旅行商的总路径长度:1265.622377

所有旅行商的总路径长度:4760.342189

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

四、完整MATLAB代码


http://www.ppmy.cn/news/66323.html

相关文章

安卓屏幕适配那些事情面试,一篇全部搞定

安卓屏幕适配那些事情面试,一篇全部搞定 零.弄懂px/ dp /dpi /屏幕分辨率/尺寸,屏幕适配的原理一.autolayout二.autosize今日头条三.smallestWidth 限定符screenMatch 零.弄懂px/ dp /dpi /屏幕分辨率/尺寸,屏幕适配的原理 https://blog.csd…

社交媒体中的“点赞”“喜欢”是如何存储在数据库中的?

你有没有想过 Instagram、Twitter、Facebook 或任何社交媒体平台如何跟踪谁喜欢你的帖子?让我们在这篇文章中弄清楚! 1:序言 最近,我受邀在一个名为“CityJS”的活动中发言。但问题在于:我是 PHP 开发人员。我根本不懂…

修改文章的软件-有没有自动修改文章的软件

自动修改文章神器 自动修改文章神器是一种利用人工智能和自然语言处理技术,帮助用户快速修改和优化文章的工具。该软件能够检测文章的语法和拼写错误、表达不当的问题,并自动提供修改和优化建议。用户只需根据软件的提示进行修改,就能得到高…

SpringMVC的基础知识

创建SpringMVC项目 SpringMVC项目其实和SpingBoot项目差不多,就多引入了一个SpringWeb项目而已拉 可以看这篇博客,创建的就是一个SpringMVC项目--创建项目の博客 SpringMVC是啥 Spring是啥相信大家都了解 啥是MVC呢?MVC是Model View Controller的缩写 我们分开看这三个词Model…

ASEMI代理ADUM3223ARZ-RL7原装ADI车规级ADUM3223ARZ-RL7

编辑:ll ASEMI代理ADUM3223ARZ-RL7原装ADI车规级ADUM3223ARZ-RL7 型号:ADUM3223ARZ-RL7 品牌:ADI /亚德诺 封装:SOIC-16 批号:2023 安装类型:表面贴装型 引脚数量:16 工作温度:-40C~125…

C++学习记录——이십일 AVL树

文章目录 1、了解AVL树2、模拟实现3、旋转1、左单旋2、右单旋3、双旋(先左后右)4、双旋(先右后左) 4、检查平衡5、测试性能(随机数)6、删除 1、了解AVL树 如果数据有序或接近有序,二叉搜索树将…

近40个开源的工业软件-工业4.0

不同的工业流程,需要不同的工业软件。面向研发设计环节的开源软件,今天就来介绍一下面向生产控制环节的开源软件,主要为可编程逻辑控制器(PLC)、分布式控制系统(DCS)、生产执行系统(MES&#xf…

排序算法总结

本文包含以下七种排序算法。 一、插入排序 1.插入排序(Insert Sort)的基本原理,每步将一个待排序的对象,按其关键码大小,插入到前面已经排好序的一组对象适当位置上,直到对象全部插入为止。 2.算法步骤 ①设待排序的记录存…