按距离优化路线

时间:2014-03-06 08:26:51

标签: javascript jquery maps here-api

我正在构建一个基于Here Maps的Web应用程序。 其主要功能包括将电子表格文件(.xls,.xlsx)上传到服务器并计划包含文件中地址的路线,最多可达500个航路点。

当然,这些航路点不是优化顺序的任何方式,所以我想让用户点击“OPTIMIZE ROUTE”按钮,这将按距离优化它。

例如,如果文件具有以下三个地址:

  1. 纽约
  2. 旧金山
  3. 长岛
  4. 默认路线是从NY到SF,然后再到LI。

    应用程序将检查距离并以这样的方式重新排序waypoints数组:

    NY - > LI - > SF

    我的问题: 在Here Maps中是否有内置路由优化功能,还是应该自己编写?

2 个答案:

答案 0 :(得分:2)

您应该查看Matrix Routing API(需要登录)。这将计算每个N×M个位置之间的“实际”距离。有了这些信息,您已将问题缩小到Travelling Salesman Problem。当然,TSP是NP完全的,所以除非你使用强力算法,否则你不能确定你得到了最佳答案。

我个人会看一个最近邻解决方案 - 快速,非常简单的编码,通常返回一个“合理的”,如果不是最佳的解决方案。您可以根据需要更新到更复杂的算法:

下面的伪代码:

  1. 从A点开始
  2. 矩阵路由请求到所有剩余点。
  3. 查找最近的,这将成为下一个Waypoint
  4. 从第2步开始重复。

答案 1 :(得分:0)

这被称为旅行商问题。

您需要有一张从任何地方到您支持的任何其他地方的距离表。

一旦拥有,您就可以使用任何通用的旅行销售员算法。

请注意,他们非常着名。