旅行商问题的两种经典求解方法

背景

旅行商问题(Travelling salesman problem, TSP)是一个典型的整数规划问题,给定一系列点集V(|V|=n),在点集中从一点出发,寻找一条最短路径,该路径经过点集中的所有点,并且每个点只经过一次。

image-20220316103737293

对于该问题我们可以进行初步建模:

minijcijxijiVxij=1,jV,ijjVxij=1,iV,ijxij{0,1},i,jV

式中xi,j表示从节点i到节点j的路径,ci,j表示路径ij的长度;第一个约束保证一个节点只出发一次,第二个约束保证一个节点值到达一次。但是上述的两个约束并不能解决TSP问题,可能出现如下情况:

image

如上图,对于一个有6个节点的点集,(1)有子回路(2)无子回路均可以满足上式的约束条件,但很明显(1)有子回路不是TSP问题的解。

对于TSP问题,重点研究的表示如何消除子回路。下面介绍两种消除子回路的TSP问题求解方法。

Dantzig–Fulkerson–Johnson formulation

该方法由Dantzig,Fulkerson 和Johnson提出,模型如下:

minijcijxijiVxij=1,jV,ijjVxij=1,iV,iji,jSxij|S|1,2|S|N1,SVxij{0,1},i,jV

式中N=|V|表示点集Z中点的个数。

将该模型的第三个消除子回路的约束单独提出来:

i,jSxij|S|1,2|S|N1,SV

式中SV的一个真子集,这个式子的含义是:对于一个V中的任意真子集SS中连通的节点边数小于节点个数。

image-20220316103737293

如上图,对于一个有子回路的点集,其中的子集如S{5,6,7}=5675i,jSxij=3|S|1,不满足第三个约束。

Miller–Tucker–Zemlin formulation

该方法由Miller,Tucker和Zemlin,模型如下:

minijcijxijiVxij=1,jV,ijjVxij=1,iV,ijμiμj+NxijN1,i,jV,2ijNxij{0,1},μi0,μiR1iV

MTZ计算公式通过引入人工变量μ来消除子回路,单独提出第三个约束:

μiμj+NxijN1,i,jV,2ijN

μi的值表示回路中节点i的次序,对于非连通的两个节点ij,上式可以变换为:

μiμjN1

该式显然恒成立。

对于连通的两个节点ij,上式可以变换为:

μiμj1

如上图中的子集S{5,6,7}=5675μ5=1,μ6=2,μ7=3,μ5=4,显然不满足第三个约束。

参考文献

[1] C. E. Miller, A. W. Tucker, and R. A. Zemlin, "Integer Programming Formulation of Traveling Salesman Problems," Journal of the ACM, vol. 7, no. 4, pp. 326-329, 1960-10-01 1960, doi: 10.1145/321043.321046.
[2] A. Langevin, F. Soumis, and J. Desrosiers, "Classification of travelling salesman problem formulations," Operations Research Letters, vol. 9, no. 2, pp. 127-132, 1990.

posted @   久漫  阅读(5641)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示