前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >非对称TSP问题(Asymmetric Travelling Salesman Problem)转换为对称TSP问题

非对称TSP问题(Asymmetric Travelling Salesman Problem)转换为对称TSP问题

作者头像
用户1621951
发布2021-03-16 11:23:44
2.2K1
发布2021-03-16 11:23:44
举报
文章被收录于专栏:数据魔术师数据魔术师

小伙伴们有没有这样的经验:在上课10分钟前从寝室骑车奔向教学楼时,寝室到教学楼的路非常拥挤;而这个时候,如果有东西落在寝室,从教学楼往寝室方向的车道却很空。换句话说,在一些场合,从点

i

到点

j

的行驶时间和从点

j

到点

i

的行驶时间是不同的。这个现象当然不会被学者们忽视。这也就是我们今天要介绍的非对称类问题(asymmetric)。

非对称TSP与对称TSP

在我们以往介绍的TSP问题和VRP问题中,算例通常给出客户点的二维坐标,两点之间的距离通过欧拉距离计算得到,所以两点间不同向的边距离是相同的。

我们在设计算子时可以对一些边进行“翻转”,例如将:

“1→2→3→4→5”

翻转为

“1→4→3→2→5”

这个时候,由于距离的对称性,“2→3→4”与“4→3→2”两段路径的距离是相同的,不需要重新计算。但在我们今天介绍的非对称TSP问题中,由于反向后距离发生变化,这两段路径的距离将发生改变,这种去重优化的方法就失效了。

1983年学者Roy Jonker和 Ton Volgenant提出了一种将非对称TSP问题转换为对称TSP问题的方法。通过这种方法,我们可以将非对称TSP问题转化为对称TSP问题,然后使用解决对称TSP问题的算法求解该问题,而不需要重新设计算法。

转化方法

Roy和Ton通过扩充原问题graph的规模的方式,在新的graph上求解对称TSP问题,然后将对称TSP问题的解转化为原非对称TSP问题的解。

通过以下操作,将一个非对称TSP问题的距离矩阵

C

转化为对称TSP问题的距离矩阵

\tilde{C}

\tilde{C}^T = \tilde{C}

):

\bar{C} = C

,并设置

\bar{c}_{i i}=-M(i \in N)

。(M是一个很大的数,N为节点集合)

U

为一个n维方阵,对

\forall i, j \in N

u_{i j}=\infty
\tilde{\boldsymbol{C}}=\left[\begin{array}{ll}U & \overline{\boldsymbol{C}}^T \\ \overline{\boldsymbol{C}} & \boldsymbol{U}\end{array}\right]

得到的矩阵

\tilde{\boldsymbol{C}}

就是新的对称TSP问题的距离矩阵。可以看出,这个矩阵是一个2n*2n规模的方阵,新的节点集为

\{1,2, \ldots, n, n+1, \ldots, 2 n\}

求解这个新的对称TSP问题得到的最优解必定是以下形式(或其对称形式):

i_{1} \rightarrow\left(i_{1}+n\right) \rightarrow i_{2} \rightarrow\left(i_{2}+n\right) \rightarrow \cdots \rightarrow i_{n} \rightarrow\left(i_{n}+n\right) \rightarrow i_{1}

其中

i_{k} \in N

也就是说,新问题的最优解中,每一个节点必定指向到它对应的拓展出的节点,而每一个新的节点必定指向原先图中的某个节点。该解对应的原问题的最优解即为:

i_{1} \rightarrow i_{2} \rightarrow \cdots \rightarrow i_{n} \rightarrow i_{1}

下面小编通过一个例子来具体讲述距离矩阵转换的过程。对一个三个节点的非对称TSP问题,原问题的距离矩阵为:

\begin{bmatrix} 0&3&5\\ 7&0&9\\ 6&8&0 \end{bmatrix}\quad

对应的有向图为:

我们先构造一个对应的距离矩阵

U

,对应的子图为:

然后将两幅子图合在一起,得到如下的无向图:

转化为对称TSP问题后的距离矩阵为:

\begin{bmatrix} +\infty&+\infty&+\infty&-M&7&6\\ +\infty&+\infty&+\infty&3&-M&8\\ +\infty&+\infty&+\infty&5&9&-M\\ -M&3&5&+\infty&+\infty&+\infty\\ 7&-M&9&+\infty&+\infty&+\infty\\ 6&8&-M&+\infty&+\infty&+\infty& \end{bmatrix}\quad

容易得到对称问题的最优路径为“1→4→2→5→3→6→1”。取奇数位的路径为“1→2→3→1”,即为原问题最优解。

深入理解

看了前文的转化方法,是不是感觉特别简单呢?只需要通过一些简单的矩阵操作就可以得到新的距离矩阵,路径的转化也非常简单,只需要取奇数位的节点编号即可。

在原论文中作者提出一个定理:新问题的最优解必定对应一个原问题的最优解,并没有给出完整证明。事实上转化的思维也很简单,这里小编给大家文字证明一下。

在矩阵操作的第一步得到

\bar{C}

的过程中,

\bar{c}_{i i}=-M

在新矩阵

\tilde{\boldsymbol{C}}

中实际上对应了边

i_{k} \rightarrow \left(i_{k} +n\right)

\left(i_{k} +n\right) \rightarrow i_{k}

。所以在新问题的最优解中,必须尽可能多的包含

i_{k} \rightarrow\left(i_{k}+n\right)

这类边。由于一个节点只能访问一次,所以这类边最多存在n条。由于矩阵

U

的每一个数都是无穷大,因此不存在

\left(i_{k1}+n\right) \rightarrow\left(i_{k2}+n\right)

以及

i_{k1} \rightarrow i_{k2}

这两种边,因此新问题的解解中剩下的边只能是

\left(i_{k1}+n\right) \rightarrow i_{k2}

的形式了。

由于

\left(i_{k1}+n\right) \rightarrow i_{k2}

的距离与

i_{k1} \rightarrow i_{k2}

的距离相等,并且每个新问题最优解中必定存在n条距离为-M的边,因此新的目标函数相当于原问题的目标函数减去一个常数(n*M),因此原问题与新问题等价。

小编解释的可能有点绕,不过原理并不复杂,相信同学们能够思考清楚。

代码分享

为了验证方法的准确性,小编基于干货 | JAVA调用cplex求解一个TSP模型详解中的TSP模型代码编写了将非对称TSP问题转化对称TSP问题进行求解的代码。(代码下载见文末)事实上,上述文章提到的模型不需要改动也可以作为非对称TSP问题的模型,只需要修改输入为矩阵形式,一样可以求解。小编简单测试了“直接通过模型求解”和“转化为对称问题通过模型求解”两种形式,验证转化方法的正确性:

直接求解模型结果:

直接求解

转化为对称问题求解模型结果:

转化求解

可以看到,对于测试算例(9个节点的小算例),两种方法得到的路径是一模一样的。下图中可以看到,新模型的目标值是-88398.0,正好等于9*(-10000)+1602.0 (M=10000),这与我们之前的推理也吻合。由于转化后问题的节点规模为原来的两倍,相应的算法时间消耗也扩大了很多(0.183s到1.203s)。

先提醒一下,如果问题存在不止一个最优解,可能两次得到的路径会不一样哦,小伙伴们自己测试时遇到了可别骂小编弄错了。

结语

自此,非对称TSP问题转化为对称TSP问题的方法已经介绍完了。值得一提的是,原作者1983年的论文还提出了一种针对局部非对称TSP问题(也就是部分节点距离不对称,部分对称)的转化方法,不需要增大节点规模到2n。可惜的是,该方法后来被证明有误,新问题的解的结果只能作为原问题最优解的下界,作者在1986年的论文中承认了自己的错误。看来学术研究即使暂时被承认,也一样要经受时间的考验啊!

参考文献:

  1. Jonker, R., & Volgenant, T. (1986). Transforming asymmetric into symmetric traveling salesman problems: erratum. Operations Research Letters, 5(4), 215-216.
  2. Jonker, R., & Volgenant, T. (1983). Transforming asymmetric into symmetric traveling salesman problems. Operations Research Letters, 2(4), 161-163.

欲下载相关代码文献,请移步留言区

- END -

文案&代码:周航(华中科技大学管理学院本科二年级)

指导老师:秦虎老师(华中科技大学管理学院)

排版:周航(华中科技大学管理学院本科二年级)

审稿:黄楠(华中科技大学管理学院)

如对文中内容有疑问,欢迎交流。PS:部分资料来自网络。


如有需求,可以联系:

秦虎老师(华中科技大学管理学院:professor.qin@qq.com)

周航(华中科技大学管理学院本科二年级:zh20010728@126.com)

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-03-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据魔术师 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 非对称TSP与对称TSP
  • 转化方法
  • 深入理解
  • 代码分享
  • 结语
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档