【发布时间】:2017-03-11 12:06:29
【问题描述】:
我的问题是对Capacitated Vehicle Routing Problem (CVRP) 的修改,最终也将包含时间窗口。
由于 时间窗口 已经内置在示例中,我应该不难弄清楚它们。但是,我需要更改 CVRP 示例的 核心约束 之一,我对如何去做有点迷茫。
我的模特
在我尝试建模的系统中,Vehicle 可以离开它的Depot,转到几个不同的Customers,然后加载材料。但是,我的模型与示例的不同之处在于Vehicle 可以访问任何Depot 中间链来存放其当前负载。
问题
我一直在研究documentation 试图弄清楚如何做到这一点,到目前为止我的基本理解是我必须更改Depot 的定义(也许通过实现Standstill)能够成为车辆访问地点链的一部分,和/或可能只是将Depot 整合到Customer 与某种特殊规则,即访问Depot 会清空车辆而不是增加需求.
我也一直在研究 shadow variables 和 variable listeners,但我不知道这是否是正确的方法。这有点令人困惑。
任何人都可以提供一些提示或建议,或者在我把自己挖得太深之前指出正确的方向吗?
【问题讨论】:
-
将Vehicle类重命名为VehicleTrip,这样一辆车可以做多次旅行吗?如果您有时间窗,则将每个 VehicleTrip 连接到上一个行程(提前固定)。让每辆车行驶 3 次左右。
-
@GeoffreyDeSmet 如果我这样做了,我仍然需要一些方法来连接它们,而且我不确定如何让求解器考虑到这一点。我如何将每个 VehicleTrip 的结束时间链接到另一个的开始时间?同样,我正在考虑一个可变侦听器,但我还没有完全理解那些
-
请edit 提出您的问题并提供提到的
documentation的链接。也许一些minimal reproducible example 或视觉草图模型可以展示您的尝试,并为我们提供指导您的基础。
标签: java optaplanner vehicle-routing