Integer programming: if a or b then a, b, and c

1.2k Views Asked by At

I'm writing a mixed integer programming (MIP) constraint where my $\color{blue}{\texttt{binary variables}}$ are $a, b,$ and $c$ to meet the following condition: $$ (a \lor b) \to (a \land b \land c)$$ My equation so far is: $$ 3a + 3b \ge a + b + c $$ I am getting some erroneous results. Is it possible to develop such an equation?

1

There are 1 best solutions below

5
On BEST ANSWER

You could add another binary variable $y$ and use the set of constraints $$y\geq a+b,$$ $$a\geq y,$$ $$b\geq y,$$ $$c\geq y.$$

If you want to reduce the number of additional constraints down to two, $$a+b+c\geq 3a\quad \text{and}\quad a+b+c\geq 3b$$ would do the trick.

However, you can't reduce it down to one and have that constraint be linear, for the following reason: Any linear constraint is of the form $$x a +yb+zc\geq 0,$$ and since you want it to be violated for $(a,b,c)\in\{(0,1,1),(1,0,0)\}$, your coefficients have to satisfy $y+z<0$ and $x<0$. Summed together, these observations however imply that $$x + y + z<0,$$ meaning your constraint cannot hold for $(1,1,1)$.