一、萤火虫算法(FA)简介
萤火虫算法(Firefly Algorithm,FA)是Yang等人于2009年提出的一种仿生优化算法。
参考文献:田梦楚, 薄煜明, 陈志敏, et al. 萤火虫算法智能优化粒子滤波[J]. 自动化学报, 2016, 42(001):89-97.
二、单仓库多旅行商问题SD-MTSP
单仓库多旅行商问题(Single-Depot Multiple Travelling Salesman Problem, SD-MTSP):𝑚个推销员从同一座中心城市出发,访问其中一定数量的城市并且每座城市只能被某一个推销员访问一次,最后返回到中心城市,通常这种问题模型被称之为SD-MTSP。
多旅行商问题(Multiple Traveling Salesman Problem, MTSP):单仓库多旅行商问题及多仓库多旅行商问题(含动态视频)_IT猿手的博客-CSDN博客
三、萤火虫算法(FA)求解SD-MTSP
本文选取国际通用的TSP实例库TSPLIB中的测试集bayg29作为测试例子,数据集可以自行修改。
3.1部分代码(可更改起点及旅行商个数)
close all clear clc %数据集参考文献 REINELT G.TSPLIB-a traveling salesman problem[J].ORSA Journal on Computing,1991,3(4):267-384. global data StartPoint Tnum % 导入TSP数据集 bayg29 load('data.txt') Tnum=3;%旅行商个数(可以自行更改)2-6 StartPoint=13; %选择起点城市(可以自行更改) nVar=size(data,1)-1;%维度 VarMin=-100;%下界 VarMax=100;%上界 CostFunction=@Fun;%计算总距离%% Problem Definition VarSize=[1 nVar]; % Decision Variables Matrix Size %% Firefly Algorithm Parameters MaxIt=200; % Maximum Number of Iterations nPop=50; % Number of Fireflies (Swarm Size)
3.2部分结果
(1)3个旅行商
第1个旅行商的路径:13->24->27->16->7->23->8->28->1->21->13
第1个旅行商的总路径长度:1344.618905
第2个旅行商的路径:13->6->12->9->5->26->3->29->2->20->13
第2个旅行商的总路径长度:1265.859392
第3个旅行商的路径:13->10->19->25->11->22->17->14->18->15->4->13
第3个旅行商的总路径长度:1091.970696
所有旅行商的总路径长度:3702.448993
(2)4个旅行商
第1个旅行商的路径:13->19->16->27->8->23->7->25->13
第1个旅行商的总路径长度:1271.534506
第2个旅行商的路径:13->4->15->11->22->17->14->18->13
第2个旅行商的总路径长度:1042.305138
第3个旅行商的路径:13->20->10->24->1->28->12->5->13
第3个旅行商的总路径长度:1246.835996
第4个旅行商的路径:13->2->29->3->26->9->6->21->13
第4个旅行商的总路径长度:1116.691542
所有旅行商的总路径长度:4677.367181