java - 同时计算最快路线和一些点

标签 java algorithm routes gps gis

我有两名司机,每个司机一天需要开车前往大约 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/

最佳答案

您可以尝试jsprit .

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

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

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

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

关于java - 同时计算最快路线和一些点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25659613/

相关文章:

javascript - 第一个关于 Javascript 中 CodeSignal 的重复问题

javascript - Angular 2 中的路由器出现问题

java - JT400 和 UCanAccess 之间有冲突吗?

c++ - 使用递归算法求解背包

java - 如何将 HTML 转换为格式良好且样式属性完好的 DOCX

node.js - 将中间件应用于 Express 中的路由

php - 如何通过路由直接传递变量

Vert.x 上的 Java Rest API

java - 我应该在 Java 中向我的库 API 添加帮助器/实用程序方法吗?

java - 如何运行 App Engine Cloud Endpoints 的临时环境?