我正在尝试实施车辆路线示例的变体,而不是客户,我有“接送”和“下车”。我的硬约束是:
除了这些严格限制之外,我的解决方案与车辆路线示例非常相似,其中每辆车都有一系列位置(PickUp或DropOff)。
我遇到的问题是使用默认移动它不能轻易地将PickUp和DropOff移动到不同的车辆。例如,以下更改移动会导致无效状态,因此将被拒绝:
为了正确完成移动,我需要做一个额外的移动,以便下拉属于与拾取器相同的链:
执行某种复合移动同时执行两个移动感觉是正确的做法,但是我不确定解决此问题的最佳方法。有没有人遇到类似的问题?
答案 0 :(得分:0)
我以前见过用户这样做过。 optaplanner-examples本身还没有VRPPD示例(PD代表拾取和交付),因此您不能只复制粘贴。
重新使用 CompositieMove ,看一下构建它的静态方法。
通常有用:构建自定义MoveListFactory(稍后将其重构为MoveIteratorFactory以向外扩展)并使其生成CompositeMove
和/或ChainedChangeMove
的{{1}}。< / p>