用纯Python解决旅行推销员问题的简单库。

python-tsp的Python项目详细描述


python-tsp是一个用纯Python编写的库,用于解决典型的旅行问题 销售人员问题(TSP)。在

安装

pip install python-tsp

示例

将距离矩阵作为一个数阵,很容易计算出哈密顿量 成本最低的路径。例如,要使用动态规划方法:

^{pr2}$

解决方案是[0, 1, 3, 2],总距离为17。注意到了 始终是一条闭合路径,因此在节点2之后,我们返回到0。在

用元启发式方法解决同样的问题:

frompython_tsp.heuristicsimportsolve_tsp_simulated_annealingpermutation,distance=solve_tsp_simulated_annealing(distance_matrix)

请记住,作为元启发式,解决方案可能会因执行而有所不同 执行,并没有最佳的保证。但是,它可能是 在更大的情况下更快的选择。在

如果您使用的是开放TSP版本(不需要返回到 原点),只需将距离矩阵第一列的所有元素设置为 零:

distance_matrix[:,0]=0permutation,distance=solve_tsp_dynamic_programming(distance_matrix)

在这个例子中,我们得到距离为12的[0, 2, 3, 1]。在

前面的例子假设你已经有了一个距离矩阵。如果不是的话 在这种情况下,distances模块准备了一些函数来计算 欧几里得距离矩阵或 Great Circle Distance。在

例如,如果您有一个数组,其中每一行都有纬度和经度 有一点

importnumpyasnpfrompython_tsp.distancesimportgreat_circle_distance_matrixsources=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)

参见project’s repository 更多示例和可用方法列表。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
来自偏移量的java JavaPairInputStream流   gzip Java TarInputStream读取tar的文件名。包含另一个tar的gz文件。gz文件   如何在Linux shell脚本中确定和使用实际的java路径   java请求太多FirebaseError   java错误json解析   java在localserver上发送安卓应用程序的输出   JavaSpring:启动和停止webapplication时更新DBtable条目   java如何使用JavaFX在矩形处设置文本?   java SQL查询在Hibernate中出现异常   java我无法使用javamail代码通过outlook(hotmail帐户)配置发送邮件,但在gmail中工作正常   java是不同的持久性。测试运行/JPA装置的xml属性   无头Eclipse的java导出战   使用ContentVersionStrategy的java Spring引导缓存禁止使用gzip进行资源压缩   java如何获取计算机的设备令牌?   图像文件的java ImageInfo不包含有效值   继承强制在Java中使用基类方法