我试图在OR-TOOLS RL VRPTW问题中强制执行移位长度约束.换挡长度是车辆服务的总时间(中转+等待+服务),从到达第一个位置到离开最后一个位置。
看起来Time dimension
是最好的选择,但是它积累了第一个位置的窗口开始,这不是很好。
因此,为了重新迭代,我想要一个维度来累积运输时间、服务时间和等待时间(对于每个位置的时间窗口),但是我不希望它累积路径中第一个位置的窗口启动时间(因为这正是这个司机开始换班的地方)。如果驱动程序在节点i处启动,在节点j处完成,则我希望约束为:time_dimension.CumulVar(j) - time_dimension.CumulVar(i) < shift_length
。
有什么明显的模特技巧我错过了吗?
发布于 2020-05-17 12:59:38
谢谢你的回答。为了给其他人提供更具体的帮助,我贴出了这样的答案:将一辆汽车的最大行车长度设置为600,你可以这样做:
for vehicle_id in range(data['num_vehicles']):
time_dimension.SetSpanUpperBoundForVehicle(600, vehicle_id)
https://stackoverflow.com/questions/56466874
复制相似问题