用纯 Python 解决旅行销售员问题的简单库。
项目描述
python-tsp是一个用纯 Python 编写的库,用于解决典型的旅行推销员问题 (TSP)。它可以与对称和非对称版本一起使用。
安装
pip install python-tsp
例子
给定一个作为 numpy 数组的距离矩阵,很容易以最低成本计算哈密顿路径。例如,要使用动态编程方法:
import numpy as np
from python_tsp.exact import solve_tsp_dynamic_programming
distance_matrix = np.array([
[0, 5, 4, 10],
[5, 0, 8, 5],
[4, 8, 0, 3],
[10, 5, 3, 0]
])
permutation, distance = solve_tsp_dynamic_programming(distance_matrix)
解将是[0, 1, 3, 2],总距离为 17。注意它始终是一条闭合路径,因此在节点 2 之后我们回到 0。
要使用元启发式方法解决相同的问题:
from python_tsp.heuristics import solve_tsp_simulated_annealing
permutation, distance = solve_tsp_simulated_annealing(distance_matrix)
请记住,作为元启发式,解决方案可能因执行而异,并且不能保证最优性。但是,在较大的情况下,它可能是一种更快的选择。
如果您使用的是开放式 TSP 版本(不需要返回原点),只需将距离矩阵第一列的所有元素设置为零:
distance_matrix[:, 0] = 0
permutation, distance = solve_tsp_dynamic_programming(distance_matrix)
在这种情况下,我们得到[0, 2, 3, 1],距离为 12。请注意,在这种情况下,距离矩阵实际上是不对称的,这里的方法也适用。
前面的示例假设您已经有一个距离矩阵。如果不是这种情况,距离模块已经准备了一些函数来计算欧几里得距离矩阵或 大圆距离。
例如,如果您有一个数组,其中每一行都有一个点的纬度和经度,
import numpy as np
from python_tsp.distances import great_circle_distance_matrix
sources = np.array([
[ 40.73024833, -73.79440675],
[ 41.47362495, -73.92783272],
[ 41.26591 , -73.21026228],
[ 41.3249908 , -73.507788 ]
])
distance_matrix = great_circle_distance_matrix(sources)
有关更多示例和可用方法列表,请参阅项目的存储库。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
python_tsp-0.3.1.tar.gz
(13.5 kB
查看哈希)
内置分布
python_tsp-0.3.1-py3-none-any.whl
(18.0 kB
查看哈希)
关
python_tsp -0.3.1.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e113daacc71987621718e5895817dfd50f3b76b87d5d50f4e118550c8c4a4423 |
|
MD5 | 93486b1db64751fd2527584a63068d9d |
|
布莱克2-256 | 14bf0d3ac69eac0d55e3faefa764e968c91da05f19d7f64e8cd6185231019e52 |
关
python_tsp -0.3.1-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 3af48a471505b392177b556a991203b95b1a2011cd9d66a7ca709a8a59d24bce |
|
MD5 | c71695b99d36b7f57398e71bfc3ab090 |
|
布莱克2-256 | fc994c655eb120f79a1ad25f5884b5de370e1002fc4cc1b88d8a62e5b16d9334 |