如何在 Google OR-Tools 中设置每条路线的最少位置?
How to set minimum locations per route in Google OR-Tools?
我正在尝试限制每辆车访问的最小位置,我已经成功实施了最大位置限制,但在确定最小位置时遇到了问题。我的最大位置代码:
def counter_callback(from_index):
"""Returns 1 for any locations except depot."""
# Convert from routing variable Index to user NodeIndex.
from_node = manager.IndexToNode(from_index)
return 1 if (from_node != 0) else 0;
counter_callback_index = routing.RegisterUnaryTransitCallback(counter_callback)
routing.AddDimensionWithVehicleCapacity(
counter_callback_index,
0, # null slack
[16,16,16], # maximum locations per vehicle
True, # start cumul to zero
'Counter')
您不应该对节点数量施加硬性限制,因为它很容易使模型不可行。
推荐的方法是创建一个只计算访问次数的新维度(评估器总是returns 1),然后在每个维度的末尾推动该维度的累积变量的软下限车辆。
我正在尝试限制每辆车访问的最小位置,我已经成功实施了最大位置限制,但在确定最小位置时遇到了问题。我的最大位置代码:
def counter_callback(from_index):
"""Returns 1 for any locations except depot."""
# Convert from routing variable Index to user NodeIndex.
from_node = manager.IndexToNode(from_index)
return 1 if (from_node != 0) else 0;
counter_callback_index = routing.RegisterUnaryTransitCallback(counter_callback)
routing.AddDimensionWithVehicleCapacity(
counter_callback_index,
0, # null slack
[16,16,16], # maximum locations per vehicle
True, # start cumul to zero
'Counter')
您不应该对节点数量施加硬性限制,因为它很容易使模型不可行。
推荐的方法是创建一个只计算访问次数的新维度(评估器总是returns 1),然后在每个维度的末尾推动该维度的累积变量的软下限车辆。