我正在尝试解决具有时间窗口限制的 TSP。我正在评估以下工具。
OptaPlanner - 由 Jboss 社区支持。不是特定于 TRP 的,而是通用约束求解器引擎。
Jsprit - 不确定它的支持。它是由 GraphHopper 开发的吗?它在 GitHub 上列出了 Graph Hopper 的子项目之一。
Google OR 工具 - 它是用 C++ 编写的。但可以在java中运行。
上述每种工具的优点和缺点是什么?市场上有更好的开源/付费工具吗?
是否有可能在jsprit中处理作业(在本例中为服务)之间的关系?
例如,一个工作必须与一个或多个其他工作同时开始.或者一项工作不得在另一项工作结束前开始(正常顺序).
如果没有,你知道其他可以处理这种限制的java库吗?
谢谢!
有没有人知道jsprit求解器默认情况下是否在路径中的两个点之间使用'作为乌鸦苍蝇'的几何距离?如果是这样,是否有可能通过提供jsprit作为参数预先计算的相邻点之间的时间/距离来约束这一点,例如Google Directions计算?
这是为了解决经典问题,例如如果现实世界的旅程来自河口的一侧而没有桥梁可用,那么两点之间的真实距离可能远远超过直线距离?
jsprit的维度是什么VehicleTypeImpl.Builder.newInstance("vehicleType").addCapacityDimension(0, 2)?
我们可以使用上述方法增加车辆容量.但任何人都可以清楚地描述维度是什么.
是否可以为Jsprit中的每种车型定义单独的成本矩阵?我有许多非常不同的车型(卡车,自行车,汽车,电动皮卡等),每种类型都有自己的成本矩阵.矩阵不是线性相关的,因此不能选择使用不同的距离和时间成本因子.VRP具有无限的机队规模.
我使用JSprit 1.6.2并实现了AbstractForwardVehicleRoutingTransportCosts -Interface.它的两个方法都有一个车辆参数,我用它来选择正确的矩阵,但传递的值总是为null,随后抛出NullPointerException.任何想法为什么这种方法不起作用,以及我如何让它工作?
提前致谢!