【问题标题】:Google-OR: how to set the minimum constraint with dimensionGoogle-OR:如何使用维度设置最小约束
【发布时间】:2021-05-29 03:35:27
【问题描述】:

根据 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 问题的最小约束?

非常感谢

【问题讨论】:

    标签: optimization or-tools


    【解决方案1】:

    搜索邮件列表。这是一个常见的问题。

    简而言之:

    • 设置硬限制是个坏主意,因为它很快会导致不可行的问题。
    • 更好的解决方案是在每辆车的路线末端对 cumul 变量使用软下限。

    【讨论】:

      猜你喜欢
      • 2021-02-27
      • 2015-04-23
      • 2015-02-14
      • 1970-01-01
      • 1970-01-01
      • 2019-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多