【问题标题】:Travelling Salesman: Using Matrix Routing API (HERE Maps)旅行推销员:使用矩阵路由 API(HERE 地图)
【发布时间】:2014-10-04 20:39:06
【问题描述】:

我的公司最近购买了 HERE 平台的企业许可证。在我正在处理的应用程序中,我需要解决旅行商问题,这意味着给定一个起点、一个目的地和它们之间的几个“航路点”,它必须计算我从@出发的最佳路线987654322@.

例如,如果我按以下顺序拥有这三个地址

1. London
2. Moscow
3. Paris

如果不对其进行优化,我会得到一条从伦敦到莫斯科,然后从那里返回巴黎的路线。这些地址的最佳路线是

1. London
2. Paris
3. Moscow

一个真实的例子是

- Start: Budapest
- End: Paris
- Waypoint 1: Berlin
- Waypoint 2: Vienna
- Waypoint 3: Stockholm
- Waypoint 4: Madrid
- Waypoint 5: Rome
- Waypoint 6: Bucharest
- Waypoint 7: Frankfurt
- Waypoint 8: Munchen
- Waypoint 9: Caen
- Waypoint 10: Barcelona

因此,应用程序接收地址并输出最短的 A.K.A 从布达佩斯到巴黎的“最佳”路线。

我已经与 HERE 的支持人员进行了交谈,他们告诉我我需要为此使用 Matrix Routing API(开发人员指南 PDF here),但是我真的不明白它如何解决我的问题。

据我所知,在文档中,您可以定义多个起点和多个目的地,因此它会计算它们之间的距离,但我看不出有任何方法可以使用一个固定的起始位置和另一个固定的目的地它们之间的多个航点。 Matrix Routing API 能否满足我们的需求?如果是的话,有人可以告诉我一些如何使用它的伪代码吗?

【问题讨论】:

  • 实际上旅行商问题的定义是(来自维基百科):“给定一个城市列表和每对城市之间的距离,访问每个城市一次的最短路径是什么?并返回原城?”即使您说您需要解决旅行商问题,但您给出的示例并不是旅行商问题。如果只是计算从布达佩斯通过任意数量的航路点到巴黎的最短路径的问题,这被称为最短路径问题,并且更容易解决。
  • @OP 你想找到从源头到目的地的最短路线,还是在访问中间所有城市时找到最短路线?
  • @user1990169 是的,完全正确。
  • @wookie919 你有什么现成的解决方案吗?我会在网上搜索,感谢您的见解!
  • @TrisztánThar 我很困惑,因为 user1990169 询问“你想找到 A OR B”,你回答“是的,完全正确”。那么它是哪一个?你想找到从源头到目的地的最短路线还是在访问中间所有城市时的最短路线?第一个问题可以使用 Dijkstra 算法轻松解决。据我所知,解决第二个问题没有简单的方法。

标签: javascript algorithm maps here-api


【解决方案1】:

您指向的 PDF 的 P 6 说

"API 的输出经常被用作其他的输入 优化方法,例如: • 计算一组位置的最短往返行程"

我由此推断,您无法单独使用他们的 API 来解决 TSP,因为这样“其他优化方法”就没有什么可做的了。我怀疑他们打算让您使用他们的 API 来计算节点之间的点对点距离,然后将其提供给 TSP 算法来完成。

有一天看到我们应该构建一个解决 TSP 的系统的要求让我有些困惑。事实证明,有 GIS 软件可以很好地做到这一点,并且可以实际使用,我们通过安装客户实际上已经在其他系统中使用的软件来满足要求。参见例如来自http://webhelp.esri.com/arcgisdesktop/9.3/index.cfm?TopicName=Algorithms_used_by_Network_Analyst“TSP 是一个组合问题,这意味着没有直接的方法来找到最佳序列。启发式方法用于在短时间内找到这些类型问题的良好解决方案。......禁忌搜索是专有的,但它已在 ESRI 内部进行了广泛的研究和开发,以迅速产生良好的结果。”

PS - 尽管 ESRI 说存在易于处理的组合问题,但据我们所知,TSP 不是其中之一。

【讨论】:

    【解决方案2】:

    寻找最优化游览不同地点的时间或距离的路径的问题是一个非常困难的问题,因为需要分析 N 个阶乘解(其中 N 是游览地点的数量),例如如果 N = 7有 5040 个解,如果 N = 8 是 40320,如果 N = 9 是 362880,依此类推。

    这是计算机科学中的一个难题,因为它无法在多项式时间内解决。这是一个 NP 难题(非确定性多项式时间难题),您可以使用启发式和近似算法找到次优解决方案。我使用其中一种算法来解决 iPhone/iPad 的问题http://igioel.com/app/OptimalRoute/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-22
      • 2019-09-13
      • 1970-01-01
      • 1970-01-01
      • 2011-09-08
      • 2012-12-07
      • 2015-04-28
      • 2017-11-11
      相关资源
      最近更新 更多