Python 如何在Google或tools中输入数据';s TSP(旅行推销员问题)?

Python 如何在Google或tools中输入数据';s TSP(旅行推销员问题)?,python,Python,我对Python非常陌生,尝试使用Google的优化(或-)工具来解决旅行商问题(TSP): 我可以运行它,并为示例的随机输入数获得一个很好的输出,但是我自己找不到任何方法来输入数据。我只想输入一个x/y坐标的文件/列表。现场 它们显示了输入文件应该/可以是什么样子,但是如何使用tsp.py文件实现和运行它呢?在本例中,似乎通过以下方式创建了随机输入: 类随机矩阵(对象):“随机矩阵” definit(自身,大小): “”“初始化随机矩阵。”“” def距离(自身、从_节点到_节点): 返回

我对Python非常陌生,尝试使用Google的优化(或-)工具来解决旅行商问题(TSP):

我可以运行它,并为示例的随机输入数获得一个很好的输出,但是我自己找不到任何方法来输入数据。我只想输入一个x/y坐标的文件/列表。现场

它们显示了输入文件应该/可以是什么样子,但是如何使用
tsp.py
文件实现和运行它呢?在本例中,似乎通过以下方式创建了随机输入:

类随机矩阵(对象):“随机矩阵”

definit(自身,大小): “”“初始化随机矩阵。”“”

def距离(自身、从_节点到_节点): 返回self.matrix[从\u节点][到\u节点]

不幸的是,我甚至不知道它是以什么格式创建的,这将是我自己创建输入的第一步。在代码的后面部分,先前创建的输入用作:


我假设这一部分区分了随机输入(这是标准情况)和手动输入,这正是我所需要的。

似乎
矩阵
是一个“二维数组”,通过其
从\u节点
到\u节点
进行索引。节点编号为0,1,…,最多为节点数-1

矩阵中存储的是节点之间的成对距离。例如,如果有三个节点,则可以将矩阵设置为:
[[0,3,5],[3,0,7],[5,7,0]]
,它表示边长为3,5和7的“三角形”贴图


这对你有意义吗?

不要;删除前面的问题,你就不必提了。另外,请阅读并在格式化你的文章上多加努力。非常感谢。事实上,这已经很有道理了。实际上,我试图通过
dir()
locals()
查找
矩阵的内容,但它没有出现在列表中。下一个大问题是在代码中的什么地方(以及如何)包含这样一个矩阵?我假设我必须使用
矩阵
以某种方式创建
距离
,因为代码中还有另一部分(当我禁用随机生成时它是活动的)说
def Distance(I,j):\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\将距离代码放在这里。\\return i+j
但是他们需要什么变量(类型/名称)?@user56574从您发布给我的代码中,似乎
def Distance(i,j)
是一个基于他们的ID返回两点之间距离的函数。例如,我们有三个城市:0=芝加哥,1=旧金山,2=纽约市。然后,例如,
Distance(0,0)
应返回0,
Distance(0,1)
应返回2000(英里),即芝加哥和旧金山之间的距离为2000英里;等等这有意义吗?嗨,比尔,我花了一段时间,但我相信我明白了。我现在从文件中读入一个
DistMatrix
,并通过修改后的
return
命令读取值:
return float(DistMatrix[I][j])
。仍然有一些缺陷和问题需要解决,例如,如何禁止某些连接以保持庞大的矩阵较小,但这更是算法的一个问题,总体而言,我认为我走在了正确的轨道上。非常感谢你的努力!
rand = random.Random()
rand.seed(FLAGS.tsp_random_seed)
distance_max = 100
self.matrix = {}
for from_node in xrange(size):
  self.matrix[from_node] = {}
  for to_node in xrange(size):
    if from_node == to_node:
      self.matrix[from_node][to_node] = 0
    else:
      self.matrix[from_node][to_node] = rand.randrange(distance_max)
matrix = RandomMatrix(FLAGS.tsp_size)
matrix_callback = matrix.Distance
if FLAGS.tsp_use_random_matrix:
  routing.SetArcCostEvaluatorOfAllVehicles(matrix_callback)
else:
  routing.SetArcCostEvaluatorOfAllVehicles(Distance)