如何用 JSprit 输入来表示经纬度?
您可以使用正常的纬度/经度(例如51.5287718, -0.2416806)输入。如果没有明确设置距离矩阵,Jsprit 使用欧几里得距离计算器。请参阅此处和此处的代码。
除了默认的欧几里得距离计算器,他们还有一个使用Haversine 公式的大圆距离/成本计算器。您只需要在构建问题之前调用 .setRoutingCost(new GreatCircleCosts()) ,请参见此处。
如果您需要道路距离,那么您必须自己生成距离矩阵。您可以使用诸如Google Maps Distance Matrix API或Graphhopper Matrix API之类的东西(由于 Google Maps API 许可限制,我们目前使用后者)例如,您可以扩展AbstractForwardVehicleRoutingTransportCosts类,对距离矩阵服务进行 API 调用,然后执行类似的操作vrpBuilder.setRoutingCost(instanceOfYourCustomDistanceMatrix)
如果您不想在 Java 级别工作,Open Door Logistics (ODL) Studio非常适合这种类型的事情。查看车辆路由和调度教程,了解 ODL 如何使用 Graphhopper 为您构建距离矩阵。
是否有在非交付模型中使用时间窗口的示例?
不知道你在问什么,但时间窗口也适用于服务工作。
无耻插件:如果您不想编写任何 Java 并且不想设置 ODL,可以在smartrouting.io使用我们的网络应用程序。