【问题标题】:What is a practical solution to the Travelling Salesman prblem, using Google Maps?使用 Google 地图解决旅行推销员问题的实用方法是什么?
【发布时间】:2011-10-12 07:34:59
【问题描述】:

什么是旅行推销员问题的实用解决方案,使用谷歌地图/地理定位/路线查找?

我不需要最好的解决方案,在 5% 以内就可以了。

例如,我在英国有 20 个地点可以访问,顺序不限。这可能需要扩展到数百个位置。

鉴于我可以查找距离(但不想查找数百个距离),我可以使用哪种算法?

【问题讨论】:

  • 谷歌地图与它有什么关系?
  • @Lior - 他们可能有一个我不知道的 API。
  • @Bart - 你在我编辑时发表了评论 - 我的第一个问题是它是 O(N^2),但 O(N^2) != N^2。
  • @chrisdew,是的,我刚刚看到你的编辑。 :)
  • @chrisdew,您是否已经尝试搜索关键字"tsp fast approximation"?我写了一些不错的文章。

标签: algorithm google-maps traveling-salesman


【解决方案1】:

在JS中实现了这个TSP项目http://code.google.com/p/google-maps-tsp-solver/

你可以在这里看到现场演示http://gebweb.net/optimap/

【讨论】:

    【解决方案2】:

    Google 的路线 API 上确实有一个参数,可以将路线优化为旅行商问题:

    来自文档(关键部分是&waypoints=optimize:true|...):

    以下示例计算从阿德莱德出发的公路旅行路线, 南澳大利亚到南澳大利亚的每个主要葡萄酒产区使用 路线优化。

    http://maps.googleapis.com/maps/api/directions/json?origin=Adelaide,SA
      &destination=Adelaide,SA
      &waypoints=optimize:true|Barossa+Valley,SA|Clare,SA|Connawarra,SA|McLaren+Vale,SA
      &sensor=false
    

    检查计算的路线将表明该路线是 使用以下航点顺序计算:

    "waypoint_order": [ 1, 0, 2, 3 ]
    

    按照@Kunukn 的建议,一次性使用OptiMap 可能更容易

    【讨论】:

      【解决方案3】:

      您可以使用 long lat 粗略估计这些位置之间的距离,然后查找彼此附近的位置。

      一个更简单的替代方法是将您的地图分成 3 x 3 部分。仅查找相邻路段中位置的路线。

      但这些技术并非 100% 准确。

      即使查找所有路径,最终查找的次数也不会超过 190 次。

      【讨论】:

      • 我应该补充一点,这可能需要及时扩展到几百个位置。
      • 在这种情况下,根据您希望结果的准确程度,您也许可以将地图划分为更多部分......或根据长纬度估计距离。
      【解决方案4】:

      您正在寻找欧几里得 TSP 的多项式近似值,已经提出了几种算法。看看here

      【讨论】:

      • 谢谢,这看起来很有用。我的问题可以被认为是欧几里得吗?正方形中的四个点:对角之间的行程时间可能大于两侧的行程时间。 (例如,沿着这两个边缘有一条高速公路。)
      • 既然您无论如何都在寻找近似值,我相信这些考虑因素通常可以忽略不计。如果不是 - 查找非对称 TSP。
      • 谢谢,我一开始会选择en.wikipedia.org/wiki/…,如果效果不够好,我会看看更学术(吓人)的方法。
      猜你喜欢
      • 2019-09-04
      • 2011-05-26
      • 1970-01-01
      • 1970-01-01
      • 2013-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-28
      相关资源
      最近更新 更多