0

亲爱的,
我有一个有两个布尔决策变量的模型,只有一个可以等于 ti 1。

如果我使用 AddAllDifferent 或者我使用简单约束 (ADD) x+y=1,它的求解器会更快吗?

4

1 回答 1

1

在这种情况下,我会放弃这两个想法并坚持使用布尔子句:

x.Not() OR y.Not()
AND
x OR y

或者如果 ortools 支持它:

x XOR y

(=伪代码->不一定是任何理智的语法)

这很简单,并且可以通过单元传播非常有效地进行推理。此外,2-SAT 事物可能在内部起作用(蕴涵图等)。

无需推理整数算术(包括 bool/int 的潜在通道)或全局约束。

上面的内容有时甚至在 SAT 中通过禁止所有可能的对来分解所有不同时使用。

(ortools可能很聪明地分析您的方法以获得相同的简化公式;但也许不是 -> 如果它如此简单,为什么不提供帮助)

于 2020-03-24T08:07:50.583 回答