MIP:添加变量以指示平等

时间:2019-01-18 21:47:59

标签: python or-tools mixed-integer-programming

我正在尝试在OR Tools Python API中构建MIP模型。我有两个表达式xy,并且想制作一个变量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 - by - x >= 1 - b之类的东西,但是我不知道如何在逻辑上组合这样的约束。有关如何执行此操作的任何建议?还是采用完全不同的方法?

2 个答案:

答案 0 :(得分:0)

我认为以下表达式对您有用:

b <= x - y + 1
b <= y - x + 1
b >= 1-x + 1-y - 1
b >= y + x - 1

答案 1 :(得分:0)

请注意,根据模型的性质,CP-SAT求解器可能具有竞争力。并提供本地化和半标准化。

请看看