Google-OR: 如何设置带维度的最小约束
Google-OR: how to set the minimum constraint with dimension
根据 Google-OR 文档:https://developers.google.com/optimization/reference/constraint_solver/routing/RoutingModel#AddDimension add dimension
只允许设置某物的上限。
我正在尝试在取货和送货问题 (https://developers.google.com/optimization/routing/pickup_delivery) 中设置车辆在路线上的距离下限。我试过了:
def negative_distance_callback (from_index, to_index):
"""
return the negative distance, use for minimization
"""
return -1 * distance_callback(from_index, to_index)
transit_neg_callback_index = routing.RegisterTransitCallback(negative_distance_callback)
dimension_name = 'Negative_Distance'
routing.AddDimension(
transit_neg_callback_index,
0, # no slack
-1000, # vehicle minimum travel distance
True, # start cumul to zero
dimension_name)
negative_distance_dimension = routing.GetDimensionOrDie(dimension_name)
negative_distance_dimension.SetGlobalSpanCostCoefficient(100)
想法是创建一个负距离回调并尝试最大化它。
但是,我遇到了错误:Check failed: min_capacity >= 0 (-1000 vs. 0)
如何使用 Google-OR 设置 PDP 问题的最小约束?
非常感谢
搜索邮件列表。这是一个常见的问题。
简而言之:
- 设置硬限制不是一个好主意,因为它很快会导致无法解决问题。
- 更好的解决方案是在每辆车的路线末端对累积变量使用软下界。
根据 Google-OR 文档:https://developers.google.com/optimization/reference/constraint_solver/routing/RoutingModel#AddDimension add dimension
只允许设置某物的上限。
我正在尝试在取货和送货问题 (https://developers.google.com/optimization/routing/pickup_delivery) 中设置车辆在路线上的距离下限。我试过了:
def negative_distance_callback (from_index, to_index):
"""
return the negative distance, use for minimization
"""
return -1 * distance_callback(from_index, to_index)
transit_neg_callback_index = routing.RegisterTransitCallback(negative_distance_callback)
dimension_name = 'Negative_Distance'
routing.AddDimension(
transit_neg_callback_index,
0, # no slack
-1000, # vehicle minimum travel distance
True, # start cumul to zero
dimension_name)
negative_distance_dimension = routing.GetDimensionOrDie(dimension_name)
negative_distance_dimension.SetGlobalSpanCostCoefficient(100)
想法是创建一个负距离回调并尝试最大化它。
但是,我遇到了错误:Check failed: min_capacity >= 0 (-1000 vs. 0)
如何使用 Google-OR 设置 PDP 问题的最小约束?
非常感谢
搜索邮件列表。这是一个常见的问题。
简而言之:
- 设置硬限制不是一个好主意,因为它很快会导致无法解决问题。
- 更好的解决方案是在每辆车的路线末端对累积变量使用软下界。