我正在尝试在一个项目中使用google CP-SAT 求解器,版本 9.11.4210。问题的一部分包括用另一个变量除以两个变量之和,但求解器返回MODEL_INVALID
。我已将问题简化如下:
model = CpModel()
v1 = model.NewIntVar(1, 1, "var1")
v2 = model.NewIntVar(1, 1, "var2")
div = model.NewIntVar(2, 2, "div")
model.add_division_equality(div, v1 + v2, v2)
solver = CpSolver()
status = solver.solve(model)
if status == MODEL_INVALID:
print("The model is invalid")
当我用 替换分子时,模型并非无效v1 + 1
。你知道为什么会发生这种情况或如何解决吗?
您检查过错误信息吗?
了解如何启用日志记录
它会告诉您乘积、除法、模数都接受 1-var 仿射表达式作为参数(a * var + v)。
因此,您需要为具有超过 1 项的线性表达式创建中间变量。