Conditional constraints in binary integer programming problems

160 Views Asked by At

I am confronted with the problem of writing conditional constraints in a binary integer programming problem. Let us consider a typical knapsack problem. The constraint is that if items $1$ and $2$ are chosen then item $3$ must also be chosen. Let $x_1,x_2,x_3$ be the corresponding binary decision variables. Can I write $x_1+x_2-x_3<2$ for this constraint? Am I doing it correctly?

There is another constraint as well which says that if items $4$ and $5$ are chosen then items $6$ and $7$ must not be chosen. I feel myself unable to write this constraint. Please help me as to how to proceed.

1

There are 1 best solutions below

0
On

You can derive the desired linear constraints somewhat automatically via conjunctive normal form.

The first one is $$ (x_1 \land x_2) \implies x_3 \\ \lnot (x_1 \land x_2) \lor x_3 \\ \lnot x_1 \lor \lnot x_2 \lor x_3 \\ (1 - x_1) + (1 - x_2) + x_3 \ge 1 \\ x_1 + x_2 - x_3 \le 1 $$ Similarly, $$ (x_4 \land x_5) \implies (\lnot x_6 \land \lnot x_7) \\ \lnot (x_4 \land x_5) \lor (\lnot x_6 \land \lnot x_7) \\ (\lnot x_4 \lor \lnot x_5) \lor (\lnot x_6 \land \lnot x_7) \\ (\lnot x_4 \lor \lnot x_5 \lor \lnot x_6) \land (\lnot x_4 \lor \lnot x_5 \lor \lnot x_7) \\ (1 - x_4) + (1 - x_5) + (1 - x_6) \ge 1 \land (1 - x_4) + (1 - x_5) + (1 - x_7) \ge 1\\ x_4 + x_5 + x_6 \le 2 \land x_4 + x_5 + x_7 \le 2 $$