如何解决是否可以实现多个目标? OR-TOOLS 约束编程
我遇到了一个问题,我有一组具有给定生产能力的仓库,它们以给定的成本向客户列表发送一些产品。我正在努力将发送产品的总成本降至最低,以便满足每个客户的需求。该部分已排序。
现在我需要添加一个新的目标(或约束),我尝试以最低的成本满足所有客户的需求,同时尽可能使用最少的仓库数量。假设从 5 个仓库开始,如果问题是不可能的,则尝试 6、7、8 等,直到找到解决方案,我使用尽可能少的仓库数量来满足所有需求。
我如何使用 or-tool 约束编程模块来解决这个问题?甚至有可能吗?我仔细查看了文档,但找不到任何似乎符合此想法的约束或函数。
解决方法
用第一个目标求解,用解约束目标,用新目标提示和求解。
from ortools.sat.python import cp_model
model = cp_model.CpModel()
solver = cp_model.CpSolver()
x = model.NewIntVar(0,10,"x")
y = model.NewIntVar(0,"y")
# Maximize x
model.Maximize(x)
solver.Solve(model)
print("x",solver.Value(x))
print("y",solver.Value(y))
print()
# Hint (speed up solving)
model.AddHint(x,solver.Value(x))
model.AddHint(y,solver.Value(y))
# Maximize y (and constraint prev objective)
model.Add(x == round(solver.ObjectiveValue())) # use <= or >= if not optimal
model.Maximize(y)
solver.Solve(model)
print("x",solver.Value(y))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。