我在 python 中使用 or-tools v7.3.7083 实现了带有时间窗口、中断和惩罚的 VRP。但我发现休息时间没有按预期安排。
我简化为一条路线来解释:
车辆 0 的午休时间:开始 (240) 持续时间 (60)
车辆 0 的路线:
0 加载(0),时间(0,0) -> ... -> 7 加载(6),时间(227,227) -> 4 加载(7),时间(319,319) -> ...
位置 7 需要 32 分钟才能到达位置 4。根据分配,车辆在前往位置 7 到 4 的过程中休息:
地点 7 -> +13 分钟 -> 午休(+60 分钟)-> +19 分钟 ->地点 4
但是,我想要的是车辆休息而不是去位置 4:
地点 7 -> +13 分钟 -> 午休(+60 分钟)-> +32 分钟 ->地点 4
或者更好的是,先去位置 4,而不是午休:
地点 7 -> +32 分钟 ->午休(+60 分钟) -> 地点 4
如何在模型中指定此约束?
附代码文件: https ://gist.github.com/MarioLeung/45a32aaa7423c262ecdc384fc710c248
附上时间矩阵的数据文件: https ://gist.github.com/MarioLeung/0b9f3e9af76715339c64f1f6f72e3313