如何使用Concorde解决TSP问题?

时间:2017-12-28 12:35:24

标签: nodes traveling-salesman operations-research

我有12个节点和每对节点之间的距离(以米为单位)。节点指的是城市中的不同街道。我需要获得TSP的精确解决方案(非启发式),所以我想用协议程序解决TSP问题,但我无法引入数据。 Concorde接口只是让我引入随机节点并解决这个问题,但我想把它给我的数据。

我尝试使用以下结构创建.txt:

\#nodes \#edges
node1 node2 dist12
node1 node3 dist13
(etc)

并将扩展名更改为.qs(正如我所见,Concorde接受了这一点),但我没有获得任何结果。我还设置了扩展名.tsp而没有。

另外,我在谷歌地图中搜索了我的节点的坐标,并创建了文本文件:

12
45.609400, 8.874233
45.612743, 8.893011
45.610751, 8.898242
45.610617, 8.902134
45.609246, 8.905195
45.612339, 8.907780
45.617118, 8.903145
45.606889, 8.900597
45.601403, 8.878341
45.602539, 8.883501
45.604054, 8.879854
45.613369, 8.894035

但是,Concorde再也不接受我的档案。我究竟做错了什么?我应该如何在Concorde中介绍我的数据?

另外,我试图在NEOS服务器中为Concorde引入最后一个坐标的文件,结果不是预期的,如图所示: TSP

1 个答案:

答案 0 :(得分:0)

我目前正在调查qs格式。在网上找不到任何信息,但通过检查,它看起来如下。当然,没有逗号,并保持计数。保存为* .qs并打开它。

node_count edge_information_count
n1x n1y
n2x n2y
...
n(count)x n(count)y
n1 n2 edge_info
....
n1 n2 edge_info
...
n(count)1 n(count)2 edge_info

所以,我用你的数据工作(windows concorde ui版本,Win 8.1,HP笔记本电脑),删除逗号,修复标题行。这不是你想要的,但通过在边缘信息区域提供距离(并更新标题),它可能会起作用。

我的问题是,它是否使用边缘信息来获得解决方案?我无法说出来。我必须检查解决方案才能看到(我希望你能同时处理它)。但我知道如果你加载一个带有边缘信息的qs,解决它,保存它,它会用解决方案替换边缘信息。

这里是你的欧几里得解决方案,而不是你想要的:

12 0
45.609400 8.874233
45.612743 8.893011
45.610751 8.898242
45.610617 8.902134
45.609246 8.905195
45.612339 8.907780
45.617118 8.903145
45.606889 8.900597
45.601403 8.878341
45.602539 8.883501
45.604054 8.879854
45.613369 8.894035