【问题标题】:Optimal map routing with Google Maps使用谷歌地图优化地图路线
【发布时间】:2008-12-03 15:53:09
【问题描述】:

有没有办法使用 Google Maps API 在给定一组航路点的情况下返回“优化”路线(换句话说,对于旅行商问题的“足够好”的解决方案),还是总是返回以指定顺序的点路线?

【问题讨论】:

标签: google-maps traveling-salesman


【解决方案1】:

Google Maps API DirectionsRequest 中有一个名为 optimizeWaypoints 的选项,它应该可以满足您的需求。不过,这最多只能处理 8 个航路点。

或者,您可以将一个开源(MIT 许可)库与 Google Maps API 一起使用,以获得最佳(最多 15 个位置)或非常接近最佳(最多 100 个位置)的路线。

http://code.google.com/p/google-maps-tsp-solver/

您可以在 www.optimap.net 上查看正在运行的库

【讨论】:

  • 很遗憾,接受的地点不超过 50 个。
【解决方案2】:

它总是按顺序排列。

所以我认为你必须一次一个地找出每对点之间的距离(或时间),然后自己解决旅行商问题。不过,也许您可​​以说服 Google 地图添加该功能。我想什么是“足够好”的解决方案取决于你在做什么以及它需要多快。

【讨论】:

  • 您的答案现在不正确。 Google 现在支持 TSP 问题。免费版的谷歌地图包括起点、终点和 8 个中间点。 (共10分)希望您再次编辑以供以后用户参考:)
【解决方案3】:

在典型的 TSP 问题中,假设一个人可以直接在任意两点之间移动。对于地面道路,情况并非如此。当 Google 计算两点之间的路线时,它会进行启发式生成树优化,通常会得出一个相当接近最优路径的路径。

要计算 TSP 路线,首先必须让 Google 计算图中每个节点之间的成对距离。我认为这需要 n*(n-1) / 2 计算。然后可以采用这些距离并对它们执行 TSP 优化。

OpenStreetMaps.org 有一个Java WebStart 应用程序,它可以做你想做的事。当然,计算是在客户端运行的。该项目是开源的,可能值得一看。

您是在寻找位置之间的最佳直线路径,还是最佳行驶路线?如果你只是想点点,如果你能得到GPS坐标,就变成了一个很容易的问题。

【讨论】:

  • 如何从 API 中取回“相当接近最优路径”?我只能按照输入的顺序取回积分。
  • Google 不会对积分进行排序。 Google 计算的最佳路径是两点之间的距离。从纽约到加利福尼亚有几种方式?接近无限。 Google 会为您找到一条不错的路线,这可能接近最佳路线,但也可能有更短的路线。
【解决方案4】:

Google 为旅行推销员问题提供了现成的解决方案。您可以在这里找到 OR-Tools(Google 的运筹学工具):https://developers.google.com/optimization/routing/tsp

你需要做的基本上是两件事:

您还可以注意到:

除了寻找经典旅行推销员的解决方案 问题,OR-Tools 还提供了更通用类型的方法 TSP,包括以下内容:

  • 非对称成本问题——传统的 TSP 是对称的:从 A 点到 B 点的距离等于从 B 点到 B 点的距离 A 点。但是,将物品从 A 点运送到 B 点的成本 可能不等于将它们从 B 点运送到 A 点的成本。 OR-Tools 还可以处理成本不对称的问题。

  • 收集奖品的 TSP,通过访问节点获得收益

  • 具有时间窗的 TSP

其他链接:

【讨论】:

    【解决方案5】:

    刚刚找到http://gebweb.net/optimap/,它看起来又漂亮又简单。使用谷歌地图的在线版本。

    【讨论】:

    • 哇,很棒的网站,很高兴它上线了这么久——这对我的朋友很有用!!!
    猜你喜欢
    • 1970-01-01
    • 2016-08-28
    • 1970-01-01
    • 2011-07-11
    • 2014-08-12
    • 2014-08-14
    • 2012-12-08
    • 2011-07-22
    • 2012-05-17
    相关资源
    最近更新 更多