使用谷歌地图API距离矩阵解决旅行商问题与/时间窗口(TSPTW)或车辆路由Prblm与时间窗口(VRPTW)

时间:2014-04-24 17:35:23

标签: algorithm google-maps google-maps-api-3 routing traveling-salesman

Google API为路线点a-b提供了很好的指导,现在提供多个航路点和TSP优化(https://developers.google.com/maps/documentation/directions/#Waypoints)。

我想更进一步,解决带时间窗的旅行商问题(TSPTW),也称为带时间窗的车辆路径问题。换句话说,我想在优化步骤中添加约会和服务时间。

Google地图提供了distanceMatrix API方法,该方法在给定一组多个起始位置和多个结束位置的情况下,返回距离矩阵和每个之间的估计行程时间。鉴于这些信息,如何计算在某些时间必须查看n个航点的航线,即预约? https://developers.google.com/maps/documentation/javascript/reference#DistanceMatrixService

我发现了一篇关于这个主题的论文,但我很难将理论和数学转化为实际的代码: http://www.akk.ke.hu/index.php?mid=60&did=739

我是LAMP开发人员,正在寻找PHP或JavaScript的解决方案。

是否还有其他建议可以使用google maps API或任何其他地图解决方案解决VRPTW问题?

2 个答案:

答案 0 :(得分:0)

试试这个:为每个约会制作一个数组,并添加一个" Effort"属性。逐步通过阵列并计算作为每个项目与其上方和下方项目之间的物理距离的平方和,计算空间距离以及时间的总和。找到数组中具有最高值" Effort"的项目,并尝试将其重新放置在每个位置的数组中,以找到该项目的最低位置。对每个项目执行此过程。重复上述步骤,直到所有项目的总工作量停止减少或低于可接受的值。

答案 1 :(得分:0)

在此视频https://www.youtube.com/watch?v=RR7GXoWiUw4中,您可以看到如何解决TSP问题。当您计算路线的成本时,您需要检查所有任务的时间窗口。

如果您不想编写此算法,可以使用Google的库:https://developers.google.com/optimization/routing/tsp/vehicle_routing_time_windows