使用 Mapbox 优化 API 的多个驱动程序?

Multiple drivers with Mapbox Optimization API?

使用Mapbox Optimization API 是否可以优化多个driver之间的路由?

示例:添加了 6 个位置,添加了 2 个 driver,路由在两个 driver 之间拆分/优化

我还处于计划阶段,所以我自己还没有深入研究,但是我看到的代码和所有示例都只针对单个 driver 优化。 . 以前有人做过这样的事吗?您有什么可以推荐给我的正确方向吗?

Mapbox的优化APIreturns输入coordinates之间的duration-optimized路由,也就是解决so-called"Travelling Salesman Problem". This is a well-known, NP-hard图论问题,这意味着该问题没有已知的通用 polynomial-time 解决方案。

用于计算上述 duration-optimized 路由的基础数据是连接 coordinates 输入和 API 请求的边的成本函数。您可以使用 Mapbox's Matrix API.

检索一组这些坐标位置之间的成本值(包括流量)

this Stack Overflow post.

的答案中所述,向问题添加第二个 driver/salesman 会使问题的解决难度成倍增加

这里a link to a scientific paper讨论了解决这个问题的可能方法。

正如研究界所证明的那样,每个 driver 的 Multiple Travelling Salesman Problem is not straightforward to implement. If you do not want to engage in this non-trivial task of implementing an algorithm that would solve it for you, you could implement a function that will make an educated guess on how to split up the destination coordinates between the two drivers. This "educated guess" could be based on values obtained from the Matrix API. You could make a one-to-many request 的解决方案,然后为每个坐标取两个持续时间中较小的一个,并将坐标分配给适当的 driver.然后,您可以使用 Mapbox 的优化 API 分别解决两个独立的旅行商问题。

即使您确实实现了可以解决多重旅行商问题的算法,问题的复杂性也会随着 driver 的数量和 waypoints 的数量呈指数级增长。因此,您最终可能会得到一个可行的解决方案,但不一定会在可靠的时间内进行计算。在实施解决方案时要牢记这些性能限制。