【问题标题】:Calculating the fastest routes and some points on the same time同时计算最快的路线和一些点
【发布时间】:2014-09-04 07:26:50
【问题描述】:

我有两个司机,每个司机有一组大约 15 个地点,他们需要在一天内开车去这些地点。计算两个司机的最短路线不是问题(使用矩阵路由 api)。

司机在他们的路线中可以有相同的位置。如果它们相同,那么它们都需要同时存在。所以我需要制作计算最快路线的软件,但有时司机需要同时在同一个位置。

我的问题:我该如何制作这个软件,有没有我可以使用的库?

以 6 个位置为例(软件需要计算 15 个):

司机A的位置:

  • 51.873215,4.606388(开始)
  • 51.7498817,4.3705702
  • 51.8395805,4.3535099(同驱动B)
  • 51.8961411,4.4681101
  • 52.0041504,4.48627
  • 52.061006,4.486609(完)

司机B的位置:

  • 51.873215,4.606388(开始)
  • 51.7914314,4.6571202
  • 51.8422203,4.33954
  • 51.8670325,4.3453742
  • 51.8395805,4.3535099(同司机A)
  • 51.7084897,4.6603792(完)

软件需要对坐标进行排序以获得最快的路线。但是司机需要在这个位置同时在同一个位置:51.8395805,4.3535099

预期输出驱动 A:https://www.google.nl/maps/dir/51.873215,4.606388/51.8395805,4.3535099/51.7498817,4.3705702/51.8961411,4.4681101/52.0041504,4.48627/52.061006,4.486609/

预期的输出驱动 B: https://www.google.nl/maps/dir/51.873215,4.606388/51.8395805,4.3535099/51.8422203,4.33954/51.8670325,4.3453742/51.7914314,4.657120251.7084897,4.6603792/

【问题讨论】:

  • “计算两个司机的最短路线不是问题”-似乎没有人告诉我"Travelling salesman problem"现在已经解决了。
  • @FlorentBayle 实际上,对于 15 个位置来说,解决 TSP 非常容易,DP 解决方案将足够快,甚至可能用于幼稚解决方案的分支定界技术。
  • 他们是否同时开始旅行?
  • 是的,他们同时开始旅行。
  • 您能否提供一个示例输入和预期输出,以澄清问题?

标签: java algorithm routes gps gis


【解决方案1】:

你可以试试jsprit

如果您先验地确定两个驱动程序在指定位置相遇的时间窗口,那么建模很容易(只需查看 wiki 中的“简单示例”即可了解您如何建模和解决此类问题)问题)。 时间窗口定义如下:

Service.Builder.newInstance("service").setTimeWindow(TimeWindow.newInstance(10,20)) ...

如果您不想提前设置时间窗口,则需要学习如何设置自己的状态和约束。它部分记录在here 以及一些示例和邮件列表中。

要考虑从一个位置到另一个位置的最短路线(从矩阵路由 API),只需使用 core.util.VehicleRoutingTransportCostMatrix(jsprit.examples.CostMatrixExample 说明它)并将矩阵分配给您的问题。

【讨论】:

    【解决方案2】:

    它看起来类似于 vrp 问题。您可以将问题分解为更小的问题,例如将驾驶员必须会面的位置视为一个站点。然后你可以使用带有这个约束的 vrp 算法。

    【讨论】:

      猜你喜欢
      • 2014-11-28
      • 1970-01-01
      • 2016-10-23
      • 2014-01-28
      • 2016-07-23
      • 2019-10-17
      • 1970-01-01
      • 2018-05-21
      • 2016-01-15
      相关资源
      最近更新 更多