带有多个起点和一个终点的旅行推销员

时间:2014-01-17 21:49:07

标签: algorithm google-maps path graph-algorithm shortest-path

我正在尝试制作一个Google地图应用程序,该应用程序涉及从不同位置路由车辆。例如,假设有三辆车,每辆车位于不同的位置,他们必须覆盖10个位置并到达一个共同的目的地。我需要找到最佳方式来覆盖3辆车的所有10个点。我知道Google Directions API提供了一个“路径点”功能来解决旅行商问题,但这仅限于一辆车。我查看了车辆路径问题,但无法找到解决我问题的算法。如果有人能指出我正确的方向来解决这个问题,我将不胜感激。

2 个答案:

答案 0 :(得分:1)

我相信这可以被视为网络流问题,并通过线性编程解决。大多数关于线性编程的书都解决了这些问例如,这里是关于优化的书中的chapter

在您的情况下,我会将您的起始位置建模为源,将汽车作为产品运输,城市是节点,单个接收器是最终目的地。路线上的权重是距离。

网络流量问题的一个特例是“最短路径树问题”(上面引用的论文的第8页),这听起来像你的确切问题,只是反过来:你从一个公共点开始并转移到其他节点。你问题的解决方案应该是一样的。

答案 1 :(得分:0)

您可以将此建模为旅行商问题(一位销售员访问所有城市并返回其起点)。您必须对问题进行的修改是:

从终点到起点的成本为零。 终点应该与有车一样重复多次。

然后,TSP的解决方案将以最低成本连接所有城市。从其中一个起点到终点的一个副本的每条路径(此行程的一部分)是其中一辆车应该采取的路线。

由于此解决方案可以使用最先进的TSP求解器,因此使用您自己构建的算法可能会获得更好的结果。