如何解决Google-OR:如何使用维度设置最小约束
根据 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,# 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 问题设置最小约束?
非常感谢
解决方法
搜索邮件列表。这是一个常见问题。
简而言之:
- 设置硬限制是个坏主意,因为它很快就会导致不可行的问题。
- 更好的解决方案是在每辆车的路线末端对 cumul 变量使用软下限。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。