我有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中介绍我的数据?
答案 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