基于船员类型的条件时间窗口

时间:2017-01-16 14:48:00

标签: optaplanner

我们正在构建一个优化机组人员运输的解决方案(带时间窗的车辆容量问题)。问题是当接送到达机组人员和离开出发机组人员时,公共汽车必须处于正确的时间。我们可以设置到达机组的接送时间的时间窗口和出发机组的下车时间的另一个时间窗口吗?此外,由于两种类型的工作人员使用相同的总线,我无法将优化分解为运行?

1 个答案:

答案 0 :(得分:1)

这是一个带拾取和交付以及时间窗口的VRP。 OptaPlanner示例尚未包含拾取和交付示例,但许多用户之前已实现过。有几种方法可以进行取件和交付(参见邮件列表上的讨论等)。

如果您拥有最简单的取件和交付用例,您无法同时在同一总线中混合工作人员,则很容易:只需将Customer.location拆分为Customer.pickupLocation和Customer.deliveryLocation即可。同样,将readyTime和dueTime分为pickupReadyTime,pickupDueTime,deliveryReadyTime和deliveryDuetime。然后将shadow var arrivalTime拆分为pickupArrivalTime,如果需要,可以将deliveryArrivalTime拆分。调整变量侦听器,相应地更新这两个到达时间。让侦听器仍然确保如果pickupReadyTime在pickupArrivalTime之后,它会将pickupArrivalTime延迟到pickupReadyTime。