微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 Google OR-Tools 中设置每条路线的最小位置?

如何解决如何在 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,# null slack
    [16,16,16],# maximum locations per vehicle
    True,# start cumul to zero
    'Counter')

解决方法

您不应该对节点数量设置硬性限制,因为它很容易使模型不可行。

推荐的方法是创建一个只计算访问次数的新维度(评估器总是返回 1),然后在每辆车的末尾对该维度的累积量推一个软下限。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。