一、旅行商问题
旅行商问题(Traveling salesman problem, TSP)是一个经典的组合优化问题,它可以描述为一个商品推销员去若干城市推销商品,要求遍历所有城市后回到出发地,目的是选择一个最短的路线。当城市数目较少时,可以使用穷举法求解。而随着城市数增多,求解空间比较复杂,无法使用穷举法求解,因此需要使用优化算法来解决TSP问题。
一般地,TSP问题可描述为:一个旅行商需要拜访n个城市,城市之间的距离是已知的,若旅行商对每个城市必须拜访且只拜访一次,求旅行商从某个城市出发并最终回到起点的一条最短路径。
记n个城市序号构成集合为N={1,2,…,n},旅行商拜访完n个城市所经过的回路记为:
P
=
{
p
1
→
p
2
→
⋯
→
p
n
→
p
1
}
P=\left\{p_{1} \rightarrow p_{2} \rightarrow \cdots \rightarrow p_{n} \rightarrow p_{1}\right\}
P={p1→p2→⋯→pn→p1}
其中,
p
i
∈
N
,
p
i
≠
p
j
(
i
≠
j
)
,
i
=
1
,
2
,
⋯
,
n
p_{i} \in N, p_{i} \neq p_{j}(i \neq j), i=1,2, \cdots, n
pi∈N,pi=pj(i=j),i=1,2,⋯,n
若城市之间的距离矩阵为
D
=
∣
d
i
j
∣
n
×
n
D=\left|d_{i j}\right|_{n \times n}
D=∣dij∣n×n,则TSP问题的数学模型可表示为:
min
f
(
P
)
=
∑
i
=
1
n
−
1
d
p
i
,
p
i
+
1
+
d
p
n
,
p
1
\min f(P)=\sum_{i=1}^{n-1} d_{p_{i}, p_{i+1}}+d_{p_{n}, p_{1}}
minf(P)=i=1∑n−1dpi,pi+1+dpn,p1
其中,
f
(
P
)
f(P)
f(P)表示旅行商行走路线的总路径长度。
本文选取国际通用的TSP实例库TSPLIB中的测试集bayg29,bayg29中城市分布如下图所示:
二、算法简介
光学显微镜算法(Optical microscope algorithm,OMA)从光学显微镜对目标物体的放大能力中汲取灵感,使用肉眼进行初步观察,并通过物镜和目镜模拟放大过程。
参考文献:
Cheng, M. Y., & Sholeh, M. N. (2023). Optical microscope algorithm: a new metaheuristic inspired by microscope magnification for solving engineering optimization problems. Knowledge-Based Systems. DOI: https://doi.org/10.1016/j.knosys.2023.110939
原文链接:https://blog.csdn.net/2401_82411023/article/details/137400257
三、部分代码
close all
clear
clc
%数据集参考文献 REINELT G.TSPLIB-a traveling salesman problem[J].ORSA Journal on Computing,1991,3(4):267-384.
global data
load('data.txt')%导入TSP数据集bayg29
Dim=size(data,1)-1;%维度
lb=-100;%下界
ub=100;%上界
fobj=@Fun;%计算总距离
SearchAgents_no=100; % 种群大小(可以修改)
Max_iteration=1000; % 最大迭代次数(可以修改)
[fMin,bestX,curve]=OMA(SearchAgents_no,Max_iteration,lb,ub,Dim,fobj);
四、部分结果
算法得到的路径:1 > 28 > 12 > 6 > 9 > 5 > 26 > 29 > 3 > 2 > 21 > 24 > 13 > 20 > 10 > 4 > 18 > 14 > 17 > 22 > 15 > 19 > 11 > 25 > 7 > 23 > 16 > 27 > 8 > 1
算法求解的总路径总长:10026.1143