• MD-MTSP:粒子群优化算法PSO求解多仓库多旅行商问题MATLAB(可更改数据集,旅行商的数量和起点)


    一、多仓库多旅行商问题MD-MTSP

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

    多旅行商问题(Multiple Traveling Salesman Problem, MTSP):单仓库多旅行商问题及多仓库多旅行商问题(含动态视频)_IT猿手的博客-CSDN博客

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

    二、粒子群优化算法PSO求解MD-MTSP

    本文选取国际通用的TSP实例库TSPLIB中的测试集bayg29作为测试例子,数据集可以自行修改。

    3.1部分代码(可更改起点及旅行商个数)

    1. close all
    2. clear
    3. clc
    4. global data  StartPoint Tnum
    5. %数据集参考文献  REINELT G.TSPLIB-a traveling salesman problem[J].ORSA Journal on Computing,1991,3(4):267-384.
    6. % 导入TSP数据集 bayg29
    7. load('data.txt')
    8. StartPoint=[1 5 15 16 20];%起点城市的序号(可以修改) 必须由小到大排列 (建议:26个旅行商)
    9. Tnum=length(StartPoint);%旅行商个数
    10. Dim=size(data,1)-Tnum;%维度
    11. lb=-100;%下界
    12. ub=100;%上界
    13. fobj=@Fun;%计算总距离
    14. SearchAgents_no=100; % 种群大小(可以修改)
    15. Max_iteration=3000; % 最大迭代次数(可以修改)
    16. [fMin,bestX,curve]=PSO(SearchAgents_no,Max_iteration,lb,ub,Dim,fobj); 
     
    

    3.2部分结果

    (1)5个旅行商

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

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

    第2个旅行商的路径:5->3->10->4->24->5

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

    第3个旅行商的路径:15->14->22->17->18->15

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

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

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

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

    第5个旅行商的总路径长度:1411.453152

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

    (2)4个旅行商

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

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

    第2个旅行商的路径:15->2->18->14->11->25->19->15

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

    第3个旅行商的路径:16->27->8->28->1->21->13->16

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

    第4个旅行商的路径:20->10->24->23->7->4->22->17->20

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

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

    三、完整Matlab代码

  • 相关阅读:
    vue-element学习(四)
    Java:继承和多态
    QTableWidget的初始化、批量添加数据、批量添加控件、分页跳转、定位到指定行、添加/插入/删除行的功能实现
    Android 缓存清理实现工具类
    高防服务器的原理
    无头链表二级指针方式实现(C语言描述)
    bindiff can‘t compare IDA string table
    【SQL语法基础】什么是SQL函数?为什么使用SQL函数可能会带来问题?
    Cy3.5-PEG-maleimide/马来酰亚胺,Cy3.5-聚乙二醇-马来酰亚胺,MAL-PEG-Cy3.5
    查找算法——二分查找
  • 原文地址:https://blog.csdn.net/weixin_46204734/article/details/133953686