OR-TOOLS RL VRPTW问题中的移位长度约束?

时间:2019-06-05 19:31:45

标签: or-tools

我正在尝试在OR-TOOLS RL VRPTW问题中实施移位长度约束。 换档时长是指车辆在服务中(运输+等待+服务)的总时间,从到达第一个位置到离开最后一个位置

看起来Time dimension是最佳选择,但它会累积第一个位置的窗口开始,这不是很好。

因此,我要重申一下-我想要一个用于累积运输时间,服务时间和等待时间(针对每个位置的时间窗口)的维度,但我不希望它累积第一个位置的窗口开始时间在路线中(因为这正是该驾驶员的换档的起点。如果驾驶员在节点i处开始并在节点j处结束,我希望约束为:time_dimension.CumulVar(j) - time_dimension.CumulVar(i) < shift_length

我缺少任何明显的建模技巧吗?

1 个答案:

答案 0 :(得分:3)

谢谢@ihadanny的回答。为了给其他人更多具体的帮助,我发布了这个答案: 将车辆的最大路线长度设置为例如600可以做到:

for vehicle_id in range(data['num_vehicles']):
        time_dimension.SetSpanUpperBoundForVehicle(600, vehicle_id)