使用谷歌地图API距离矩阵来解决带时间窗口的旅行商问题(TSPTW)或带时间窗口的车辆路径Prblm(VRPTW)[关闭]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用谷歌地图API距离矩阵来解决带时间窗口的旅行商问题(TSPTW)或带时间窗口的车辆路径Prblm(VRPTW)[关闭]相关的知识,希望对你有一定的参考价值。

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

我找到了一篇关于这个主题的论文,但我很难将理论和数学翻译成实际的代码:qazxsw poi

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

是否有任何其他建议使用谷歌地图API或任何其他地图解决方案的数据解决VRPTW?

答案

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

另一答案

在这个视频http://www.akk.ke.hu/index.php?mid=60&did=739你可以看到如何解决TSP问题。当您计算路线的成本时,您需要检查所有任务都放在他们的时间窗口中。

如果你不想写这个算法,你可以使用谷歌的库:https://www.youtube.com/watch?v=RR7GXoWiUw4

以上是关于使用谷歌地图API距离矩阵来解决带时间窗口的旅行商问题(TSPTW)或带时间窗口的车辆路径Prblm(VRPTW)[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

谷歌地图距离矩阵API提供不可能短的duration_in_traffic结果,结果也不同于谷歌地图

使用 GoogleMap 的 TSP(旅行商问题)求解器

将地图坐标转换为坐标系

遗传算法解决旅行商问题(TSP)一:初始化和适应值

matlab解决TSP问题(货郎担问题,旅行商问题)的模拟退火算法

matlab解决TSP问题(货郎担问题,旅行商问题)的模拟退火算法