在 pyscipopt 中添加一个 NOT 约束

adding a NOT-constraint in pyscipopt

我想向我的 PySCIPOpt 模型添加一个 NOT 约束。我可以看到 andConsAndaddConsOraddConsXor,但没有一个用于 NOT 运算符。添加 NOT 约束的最简单方法是什么?

我想出了:

x = model.addVar('B')
not_x = model.addVar('B')

model.addCons(not_x == (x - 1) * (x - 1))

但这看起来很难看。

我需要 not_x 的原因是我想稍后将它添加到连词中,例如:

model.addConsAnd([not_x, y], True)

但是,据我所知,如果我使用 Python 而不是运算符:

,PySCIPOpt 接口将不起作用
model.addConsAdd([not x, y], True)

所以上面的行破坏了我的 jupyter notebook 中的内核。

感谢任何帮助。

二进制变量 x 的表达式 not x1-x 相同。这在 mixed-integer 编程模型中广泛使用。