我正在尝试在OR Tools Python API中构建MIP模型。我有两个表达式x
和y
,并且想制作一个变量b
,当x == y
时等于1,否则为0。到目前为止,我一直在尝试为-M(1 - b) <= x - y <= M(1 - b)
的某个较大的值添加M
的约束,如果b
则强制x != y
为0。我陷入困境的地方是添加一个约束,如果b
强制x == y
为1。我想我会想要诸如x - y >= 1 - b
或y - x >= 1 - b
之类的东西,但是我不知道如何在逻辑上组合这样的约束。有关如何执行此操作的任何建议?还是采用完全不同的方法?
答案 0 :(得分:0)
我认为以下表达式对您有用:
b <= x - y + 1
b <= y - x + 1
b >= 1-x + 1-y - 1
b >= y + x - 1
答案 1 :(得分:0)
请注意,根据模型的性质,CP-SAT求解器可能具有竞争力。并提供本地化和半标准化。
请看看