一、多仓库多旅行商问题
多旅行商问题(Multiple Traveling Salesman Problem, MTSP)是著名的旅行商问题(Traveling Salesman Problem, TSP)的延伸,多旅行商问题定义为:给定一个𝑛座城市的城市集合,指定𝑚个推销员,每一位推销员从起点城市出发访问一定数量的城市,最后回到终点城市,要求除起点和终点城市以外,每一座城市都必须至少被一位推销员访问,并且只能访问一次,需要求解出满足上述要求并且代价最小的分配方案,其中的代价通常用总路程长度来代替,当然也可以是时间、费用等。多仓库多旅行商问题是其中一种多旅行商问题。
多仓库多旅行商问题(Multi-Depot Multiple Travelling Salesman Problem, MD-MTSP):𝑚个推销员从𝑚座不同的城市出发,访问其中一定数量的城市并且每座城市只能被某一个推销员访问一次,最后回到各自出发的城市,这种问题模型被称之为MD-MTSP。
二、麻雀搜索算法SSA
麻雀搜索算法(sparrow search algorithm,SSA)由Jiankai Xue等人于2020年提出,该算法是根据麻雀觅食并逃避捕食者的行为而提出的群智能优化算法。SSA 主要是受麻雀的觅食行为和反捕食行为的启发而提出的。该算法比较新颖,具有寻优能力强,收敛速度快的优点。麻雀群觅食过程也是发现者-跟随者模型的一种,同时还叠加了侦查预警机制。麻雀中找到食物较好的个体作为发现者,其他个体作为跟随者,同时种群中选取一定比例的个体进行侦查预警,如果发现危险则放弃食物,安全第一。
麻雀搜索算法SSA
三、麻雀搜索算法SSA求解多仓库多旅行商问题MDMTSP
本文选取国际通用的TSP实例库TSPLIB中的测试集bayg29,bayg29中城市分布如下图所示:
以5个旅行商为例,部分代码如下:可以修改旅行商个数及起点
close 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 15 16 20];%起点城市的序号(可以修改) 必须由小到大排列 (建议:2到6个旅行商)
Tnum=length(StartPoint);%旅行商个数
Dim=size(data,1)-Tnum;%维度
lb=-100;%下界
ub=100;%上界
fobj=@Fun;%计算总距离
SearchAgents_no=50; % 种群大小(可以修改)
Max_iteration=200; % 最大迭代次数(可以修改)
[fMin,bestX,curve]=SSA(SearchAgents_no,Max_iteration,lb,ub,Dim,fobj);
部分结果如下:
第一次运行结果
第1个旅行商的路径:1->10->2->3->6->1
第1个旅行商的总路径长度:1465.946793
第2个旅行商的路径:5->12->28->23->25->5
第2个旅行商的总路径长度:1878.669742
第3个旅行商的路径:15->18->14->22->11->15
第3个旅行商的总路径长度:640.156231
第4个旅行商的路径:16->7->27->8->24->16
第4个旅行商的总路径长度:1128.538878
第5个旅行商的路径:20->13->29->26->9->21->4->19->17->20
第5个旅行商的总路径长度:1853.051537
所有旅行商的总路径长度:6966.363182
文章来源:https://www.toymoban.com/news/detail-443389.html
第二次运行结果
第1个旅行商的路径:1->28->12->9->6->1
第1个旅行商的总路径长度:738.241153
第2个旅行商的路径:5->26->3->2->10->5
第2个旅行商的总路径长度:1209.793371
第3个旅行商的路径:15->25->13->4->22->15
第3个旅行商的总路径长度:1205.321534
第4个旅行商的路径:16->27->23->8->24->16
第4个旅行商的总路径长度:832.105763
第5个旅行商的路径:20->29->21->19->7->11->14->17->18->20
第5个旅行商的总路径长度:1776.569728
所有旅行商的总路径长度:5762.031549
文章来源地址https://www.toymoban.com/news/detail-443389.html
四、完整MATLAB代码
到了这里,关于MD-MTSP:麻雀搜索算法SSA求解多仓库多旅行商问题(提供MATLAB代码,可以修改旅行商个数及起点)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!