繁体   English   中英

如何在Google或工具的TSP中输入数据(Travelling Salesman Prob ..)?

[英]How to input data in Google or-tools's TSP (Travelling Salesman Prob..)?

我是Python的新手,请尝试使用Google的优化(or-)工具来解决旅行商问题(TSP):

https://github.com/google/or-tools/blob/1b98e19ec2b202e253d605cae2cf664abb4ae2e6/examples/python/tsp.py

我可以运行它并获得示例的随机输入数字的漂亮输出,但是我找不到如何自己输入数据的任何方法。 我要做的就是输入具有x / y坐标的文件/列表。 在网站上

https://or-tools.googlecode.com/svn/trunk/documentation/user_manual/manual/tsp/tsp.html

它们显示了输入文件的外观/外观,但是如何使用tsp.py文件实现并运行该文件? 在该示例中,似乎通过以下方式创建了随机输入

class RandomMatrix(object):“”“随机矩阵。”“”

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

 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) 

def Distance(self,from_node,to_node):返回self.matrix [from_node] [to_node]

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

 matrix = RandomMatrix(FLAGS.tsp_size) matrix_callback = matrix.Distance if FLAGS.tsp_use_random_matrix: routing.SetArcCostEvaluatorOfAllVehicles(matrix_callback) else: routing.SetArcCostEvaluatorOfAllVehicles(Distance) 

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

似乎Matrix是一个“ 2-D数组”,由其from_nodeto_node索引。 节点编号为0,1,...,最多节点数-1。

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

你能理解这个吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM