车辆在仓库重新装载并继续

Vehicle reloading at depot and continuing

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

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

对于 1 和 3,使用 AddDimensionWithVehicleTransits 效果很好。 对于第二个约束,如果车辆是空的,它必须return到仓库取回物品并重新开始。

我看过加油示例,因此设置容量 < 0 的节点工作正常。但在我的例子中,加油站是加油点,求解器不会让车辆 return 到它。

我的维度是这样设置的:

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 使用可选的仓库和再填充容量。