朋友们,
我需要解决一个 TSP 问题,距离信息如下
我试图通过使用字典来解决它,但我无法弄清楚:
**实际上,甚至不知道如何在此处以文本形式发布代码(仅使用 Python 2 天)
任何建议/帮助都不仅仅是受欢迎。
谢谢!
答案 0 :(得分:1)
你可以这样做:
import numpy as np
TT= np.array([[0,5,2,13,4],
[3,0,6,3,14],
[2,6,0,4,5],
[2,3,7,0,8],
[4,2,5,5,0]])
# assume we start in node 0
currentStop = 0
routeList = [0]
for _i in range(len(TT)-1):
TT[:,currentStop] = 100000 # Set column of visited stop to very large number
currentStop = np.argmin(TT[currentStop,:])
routelist.append(currentStop)
print(routelist)
答案 1 :(得分:0)
TSP 是一个 NP-hard 问题,这意味着在计算上很难获得最佳结果。当数据量较小时可以尝试所有路由,但实际上我们有数千个节点(节点是 TSP 问题中的位置)。然后我们将使用不同的搜索算法在合理的时间内获得次优解。
由于您使用的是 Python,我建议您查看 ortools。您可以查看他们的简单示例以开始使用。它是用 C 语言编写的,带有 Python 包装器,因此比纯 Python 快得多。