我尝试使用ORTOOL和Python生成交付计划。
我的约束如下:


每辆车都有开始时间和结束时间
每辆车都有自己的储存物品容量,在仓库取走
每辆车都有自己的速度。


对于1和3,使用AddDimensionWithVehicleTransits可以正常工作。
对于第二个约束,如果车辆为空,则必须返回到仓库以取回物品并重新启动。

我已经看过加油示例,因此设置容量小于0的节点效果很好。但是在我的情况下,仓库是加油站,求解器不会使车辆返回加油站。

我的尺寸设置如下:

routing.AddDimensionWithVehicleCapacity(
    capacity_evaluator,
    0,
    [capacity[vehicle].get('capacity', dataconfig.default_capacity) for vehicle in data.vehicles],
    True,
    'Capacity'
)


基本上,最大容量为4:

Route for Vehicle1
[LOCATION, START, CAPACITY]
['Depot', '4:0', 0]
[u'7', '9:0', 1]
[u'6', '10:0', 4]
['Depot', '11:00', 4]


我需要的:

Route for Vehicle1
[LOCATION, START, CAPACITY]
['Depot', '4:0', 0]
[u'Location1', '9:0', 1]
[u'Location2', '10:0', 4]
['Depot', '11:00', 0]
[u'Location3', '12:0', 1]
[u'Location4', '13:0', 2]
[u'Location5', '14:0', 4]
['Depot', '15:00', 0]


关于如何将加油站送到仓库的任何想法?

问候

最佳答案

它通过Mizux Dev的注释而获得成功,可以使用slackvar或AddDimensionWithVehicleTransitAndCapacity使用具有补充容量的可选软件仓库。

关于python - 车辆在仓库重新装填并继续,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51153760/

10-12 21:25