我们正在使用optaplanner尝试通过时间窗改善我们当前的车辆路线。我们有一些小问题,我们不确定如何克服:
我们目前对第二个问题的想法是创建两个新类:
public class ReturningCustomer extends TimeWindowedCustomer {
protected int returningId;
和
public class ReturnToDepot extends TimeWindowedCustomer {
protected int returningId;
第一个用特殊包为客户建模,这些包将被退回。第二个是代表司机返回车厂的“假”客户。 ReturnToDepot与仓库本身具有相同的位置。比较他们在Drools中的ID将确保他们在同一车辆的路径上。作为另一个客户处理ReturnToDepot有望确保规划人员找到将其放入路线的最佳方式。
然而,对于午休模特,我们不太清楚该怎么做。
有更好的方法对此进行建模吗?什么是午餐休息时间模型的最佳方式?是否有任何样本可以指出我们正确的方向?
感谢。
答案 0 :(得分:3)
从TimeWindowed VRP示例开始,您可以执行以下2个请求:
午休时间:调整VariableListener
中的到达时间计算,以便在第3个小时后到达任何时间将再次为到达时间增加30分钟。根据您的业务需求 - 例如,他们只能在不在地点的地点之间休息 - 可选择添加一个硬约束,以确保在第3小时和第5小时之间到达。
及时回到软件仓库:在名为arrivalBackToDepotTime
的Vehicle上添加影子变量,然后使用variableListenerRef
重新使用ArrivalTimeUpdateVariableListener
,然后再使用arrivalBackToDepotTime
需要更新该字段。添加硬约束以检查每个客户车辆<img src="..../uploads/image.png" width="300" height="500" />
是否小于客户到达仓库所需的时间。