条件时间 Window 基于船员类型

Conditional Time Window based on the type of crew

我们正在构建一个解决方案,以优化机组人员的运输(随时间变化的车辆容量问题 window)。问题是公共汽车必须在正确的时间接送到达的机组人员和下车的出发机组人员。我们可以设置一个时间 window 作为到达机组人员的接送时间,另一个时间 window 作为出发机组人员的下车时间吗?我也不能将优化分成运行,因为两种类型的工作人员都使用相同的总线?

这是一个有取货和送货时间的 VRP windows。 OptaPlanner Examples 还没有包含取件和送货示例,但许多用户之前已经实现了它。有多种方式可以进行取货和投递(请参阅关于邮件列表等的讨论)。

如果您有最简单的取件和送货用例,您不能同时在同一辆公共汽车上混合乘员,这很简单:只需将 Customer.location 拆分为 Customer.pickupLocation 和Customer.deliveryLocation。同样,将 readyTime 和 dueTime 拆分为 pickupReadyTime、pickupDueTime、deliveryReadyTime 和 deliveryDuetime。然后将 shadow var arrivalTime 拆分为 pickupArrivalTime 和 deliveryArrivalTime(如果需要)。相应地调整更新这两个 arrivalTimes 的变量侦听器。让该侦听器仍然确保如果 pickupReadyTime 在 pickupArrivalTime 之后,它会将 pickupArrivalTime 延迟到 pickupReadyTime。