尽可能短的路线,从任何地方开始和结束
Shortest possible route, starting and finishing anywhere
我正在寻找一种算法来连接大量地理坐标 (100-1000),在它们之间创建最短路线,从任何地方开始并在其他任何地方结束。我正在与 Python.
合作
我研究了可用的算法,我的问题类似于旅行商,但它需要我定义一个起点,最后会回到同一个点。 我将乘坐 Uber 前往任何起点,并从任何其他终点返回家中。我想要的是尽量少走路的时候把所有的点都覆盖。我不在乎它从哪里开始或结束。
Prim 和 Kruskal 的算法似乎找到了很好的起点和终点,但他们创建了一棵树,而不是像 TSP 那样优化的步行路线。
Prim 的算法:
Kruskal 算法:
期望的结果基于 Prim/Kruskal,但使用 TSP 逻辑(手绘示例,未优化):
Prim 和 Kruskal 是查找生成树的算法。您正在尝试解决一个著名的 TS 变体(旅行商问题),其中您没有 return 到起点。
根据您的定义,您家的位置并不重要。您定义的问题是访问每个行进距离最短的位置,没有 return到您的起点。 "the literature".
对此进行了很好的介绍
"quick strike"解法是取任意标准TS解法,去掉最长的一段。这是一个很好的启发式方法,尽管它不能保证最佳解决方案。
如果您不需要生产化解决方案,请编写 Python 以 TSPLIB 格式转储您的距离矩阵,其中包含距离为零的额外城市(代表您将乘坐 Uber to/from 的地点)到彼此的城市。然后将其提供给(例如)Concorde or LKH.
我正在寻找一种算法来连接大量地理坐标 (100-1000),在它们之间创建最短路线,从任何地方开始并在其他任何地方结束。我正在与 Python.
合作我研究了可用的算法,我的问题类似于旅行商,但它需要我定义一个起点,最后会回到同一个点。 我将乘坐 Uber 前往任何起点,并从任何其他终点返回家中。我想要的是尽量少走路的时候把所有的点都覆盖。我不在乎它从哪里开始或结束。
Prim 和 Kruskal 的算法似乎找到了很好的起点和终点,但他们创建了一棵树,而不是像 TSP 那样优化的步行路线。
Prim 的算法:
Kruskal 算法:
期望的结果基于 Prim/Kruskal,但使用 TSP 逻辑(手绘示例,未优化):
Prim 和 Kruskal 是查找生成树的算法。您正在尝试解决一个著名的 TS 变体(旅行商问题),其中您没有 return 到起点。
根据您的定义,您家的位置并不重要。您定义的问题是访问每个行进距离最短的位置,没有 return到您的起点。 "the literature".
对此进行了很好的介绍"quick strike"解法是取任意标准TS解法,去掉最长的一段。这是一个很好的启发式方法,尽管它不能保证最佳解决方案。
如果您不需要生产化解决方案,请编写 Python 以 TSPLIB 格式转储您的距离矩阵,其中包含距离为零的额外城市(代表您将乘坐 Uber to/from 的地点)到彼此的城市。然后将其提供给(例如)Concorde or LKH.