【问题标题】:How to solve a TSP using Concorde?如何使用协和飞机解决 TSP?
【发布时间】:2017-12-28 12:35:24
【问题描述】:

我有 12 个节点和每对节点之间的距离(以米为单位)。节点指的是一个城市的不同街道。我需要获得 TSP(不是启发式)的精确解,所以我想用 Concorde 程序解决 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 服务器中为协和飞机引入最后一个坐标文件,结果不是预期的,如图所示:

【问题讨论】:

    标签: nodes traveling-salesman operations-research


    【解决方案1】:

    我目前正在研究 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
    

    【讨论】:

    • 问题是我的节点太近了,所以协和飞机没有做出正确的计算
    猜你喜欢
    • 2011-08-23
    • 2015-06-14
    • 1970-01-01
    • 1970-01-01
    • 2019-11-16
    • 2016-05-05
    • 1970-01-01
    • 2017-08-02
    • 1970-01-01
    相关资源
    最近更新 更多