亲爱的,
我有一个有两个布尔决策变量的模型,只有一个可以等于 ti 1。
如果我使用 AddAllDifferent 或者我使用简单约束 (ADD) x+y=1,它的求解器会更快吗?
亲爱的,
我有一个有两个布尔决策变量的模型,只有一个可以等于 ti 1。
如果我使用 AddAllDifferent 或者我使用简单约束 (ADD) x+y=1,它的求解器会更快吗?
在这种情况下,我会放弃这两个想法并坚持使用布尔子句:
x.Not() OR y.Not()
AND
x OR y
或者如果 ortools 支持它:
x XOR y
(=伪代码->不一定是任何理智的语法)
这很简单,并且可以通过单元传播非常有效地进行推理。此外,2-SAT 事物可能在内部起作用(蕴涵图等)。
无需推理整数算术(包括 bool/int 的潜在通道)或全局约束。
上面的内容有时甚至在 SAT 中通过禁止所有可能的对来分解所有不同时使用。
(ortools可能很聪明地分析您的方法以获得相同的简化公式;但也许不是 -> 如果它如此简单,为什么不提供帮助)