提问人:Leonardo Ribeiro 提问时间:8/3/2023 最后编辑:Laurent PerronLeonardo Ribeiro 更新时间:8/4/2023 访问量:97
在 OrTools CP-SAT 中修复某些变量时模型不可行
Model infeasible when fixing some variables in OrTools CP-SAT
问:
我在Ortools CP-SAT中有一个布尔变量,比方说x。该变量位于约束条件中,假设 y = -5 * x。我在模型中还有另外两个约束,它们是模型。加法 (y >= 0)。OnlyEnforceIf(z) 和模型。加(y < 0)。OnlyEnforceIf(z.Not())。当我尝试修复 x = 1 并求解它时,我得到的答案是该模型不可行?有谁知道原因? 我以为这是可行的。
答:
0赞
Bhartendu Awasthi
8/4/2023
#1
下面的代码片段对我有用。我没有指定目标函数,因为我不确定。
from ortools.sat.python import cp_model as cp
model = cp.CpModel()
x = model.NewBoolVar("")
model.Add(x == 1)
z = model.NewBoolVar("")
y = model.NewIntVar(-100, 100, name = "")
model.Add(y == -5 * x)
model.Add(y >= 0).OnlyEnforceIf(z)
model.Add(y < 0).OnlyEnforceIf(z.Not())
solver = cp.CpSolver()
# model.Minimize(y)
solver.Solve(model) # status = 4 => optimal
solver.Value(x) # x = 1
solver.Value(z) # z = 0
solver.Value(y) # y = -5
评论