我面临一些现实世界的VRP优化问题,并想踢轮胎的jsprit。我有一组具有相关技能约束的作业;一组用户来为那些具有技能限制和时间窗口的作业提供服务;以及基于lat的基于上述所有这些的坐标。
我一直在运行一些示例,如VRPWithBackhaulsExample,因此我可以看到,我需要设置一组ConstraintManagers,但在以下领域将域映射到jsprit概念时遇到了困难:
我只是想得到正确的方向,任何的指导欢迎。
发布于 2017-08-28 17:40:27
如何用JSprit输入来表示lat-lons?
您可以使用正常的lat/long (例如51.5287718, -0.2416806)输入。如果没有显式设置距离矩阵,Jsprit使用欧氏距离计算器。见代码在这里和这里。
除了默认的欧氏距离计算器外,它们还有一个大圆距离/成本计算器,它使用Haversine公式。您只需要在构建问题之前调用.setRoutingCost(新的GreatCircleCosts()),请参阅这里。
如果你需要道路距离,那么你必须自己生成一个距离矩阵。您可以使用类似谷歌地图距离矩阵API或图形矩阵API (我们目前使用后者是因为Google许可限制),例如,您可以扩展AbstractForwardVehicleRoutingTransportCosts类,对一个距离矩阵服务进行API调用,然后执行类似于vrpBuilder.setRoutingCost(instanceOfYourCustomDistanceMatrix)的操作。
如果您不想在Java级别上工作,开放式物流(ODL)工作室可以很好地处理这类事情。查看车辆路径和调度教程,了解ODL如何使用Graphhopper为您构建距离矩阵。
在非交付模型中是否有使用时间窗口的例子?
不确定你要求的是什么,但是时间窗口对于服务工作也是有好处的。
无耻的插件:如果您不想编写任何Java,并且不想设置ODL,您可以在intelligentrouting.io使用我们的web应用程序。
https://stackoverflow.com/questions/45868165
复制相似问题