VRP 中的无限车辆
Unlimited vehicles in VRP
如何让 Optaplanner 在 VRP 问题中使用无限或动态数量的车辆?
在分数计算过程中车辆的数量被最小化,因为每辆车都有一个基本成本。求解器应该初始化它认为方便的尽可能多的车辆
@PlanningEntityCollectionProperty
@ValueRangeProvider(id = "vehicleRange")
public List<Vehicle> getVehicleList() {
return vehicleList;
}
目前我只是用预定义数量的车辆初始化车辆列表,例如 100 000,但我不确定这对性能的影响,因为搜索 space 比需要的要大得多。
开箱即用,这是唯一的方法。您计算出数据集的 最小最大车辆数量 并使用它来确定车辆数量。其一,车辆的最小最大数量永远不会大于访问次数。但通常你可以证明它远不止于此。
也就是说,OptaPlanner 架构确实支持创建或删除载具的 Move,至少在理论上是这样。没有开箱即用的动作可以做到这一点,因此您需要构建自定义动作来做到这一点——而且它会很快变得复杂。有一天,我们打算支持通用 create/delete 开箱即用的移动。
如何让 Optaplanner 在 VRP 问题中使用无限或动态数量的车辆?
在分数计算过程中车辆的数量被最小化,因为每辆车都有一个基本成本。求解器应该初始化它认为方便的尽可能多的车辆
@PlanningEntityCollectionProperty
@ValueRangeProvider(id = "vehicleRange")
public List<Vehicle> getVehicleList() {
return vehicleList;
}
目前我只是用预定义数量的车辆初始化车辆列表,例如 100 000,但我不确定这对性能的影响,因为搜索 space 比需要的要大得多。
开箱即用,这是唯一的方法。您计算出数据集的 最小最大车辆数量 并使用它来确定车辆数量。其一,车辆的最小最大数量永远不会大于访问次数。但通常你可以证明它远不止于此。
也就是说,OptaPlanner 架构确实支持创建或删除载具的 Move,至少在理论上是这样。没有开箱即用的动作可以做到这一点,因此您需要构建自定义动作来做到这一点——而且它会很快变得复杂。有一天,我们打算支持通用 create/delete 开箱即用的移动。