首页 > 解决方案 > VRP中的无限车辆

问题描述

如何让 Optaplanner 在 VRP 问题中使用无限或动态数量的车辆?

在分数计算期间,车辆的数量被最小化,因为每辆车都有一个基本成本。求解器应该初始化它认为方便的尽可能多的车辆

@PlanningEntityCollectionProperty
@ValueRangeProvider(id = "vehicleRange")
public List<Vehicle> getVehicleList() {
    return vehicleList;
}

目前我只是用预定义的车辆数量(例如 100 000)初始化车辆列表,但我不确定这对性能的影响,因为搜索空间比必要的大得多。

标签: optaplanner

解决方案


开箱即用,这是唯一的方法。您计算出数据集的最小最大车辆数,并使用它来确定车辆数。一方面,最小最大车辆数量永远不会大于访问次数。但通常你可以证明它远不止于此。

话虽如此,OptaPlanner 架构确实支持创建或删除车辆的 Move,至少在理论上是这样。没有开箱即用的动作可以做到这一点,因此您需要构建自定义动作来做到这一点 - 而且它会很快变得复杂。有一天,我们打算支持开箱即用的通用创建/删除移动。


推荐阅读