我正在尝试使用Concorde来解决TSP的一些不对称实例。虽然官方网站说Concorde确实解决了这种情况,但我看到有人说它不是(https://cs.stackexchange.com/a/16336,http://www.math.uwaterloo.ca/tsp/road/austria.html)。我只怀疑官方网站,因为我有以下测试实例:
NAME: test
TYPE: ATSP
DIMENSION: 4
EDGE_WEIGHT_TYPE: EXPLICIT
EDGE_WEIGHT_FORMAT: FULL_MATRIX
EDGE_WEIGHT_SECTION
999 | 2 | 2 | 2
2 |999| 2 | 2
2 | 2 |999| 2
2 | 2 | 2 |999
EOF
协和飞机按照预期给了我:
最优解:8.00
在.sol文件中,路由:0 1 3 2.
但如果我将矩阵更改为:
EDGE_WEIGHT_SECTION
999 |100| 3 |100
2 |999| 2 | 2
2 | 2 |999| 2
2 | 2 | 2 |999
EOF
现在给出的解是106,序列为0 3 1 2。 无论我在第一排放的是什么数字,协和式飞机都不会选择第三个城市(索引2,价值3)。
有人知道为什么会这样吗?我读错了输入吗?
- 的修改 -
实际上,ATSP问题的实例并非来自官方网站。它来自这个:
http://comopt.ifi.uni-heidelberg.de/software/TSPLIB95/
因为这个库的名称是TSPLIB(与Concorde的官方问题相同),我引起了这种混乱。我不确定这个TSPLIB95如何与Concorde Solver相关(或者它是否与之相关)。
答案 0 :(得分:2)
Concorde仅适用于对称TSP。您必须执行标准技巧将ATSP转换为对称TSP(带有其他节点)。