Valid inequalities
Valid inequalities are additional constraints that can be added to a correct integer program that potentially strengthen the formulation, i.e. reduce the size of the feasible region for the linear programming relaxation.
For example, in the 0-1 knapsack problem,
\begin
&\max&\sum_
^n v_i x_i
&\text
& \sum_
^n w_i x_i &\leq b
&&x_i & \in {0,1}&i&=1,\ldots,n,
\end
for any set
C \subset {1,\ldots,n}
such that
\sum_
w_i x_i > b
we can add the cover inequalities
\sum_
x_i \leq |C|-1
To be completely concrete, suppose that
n=2
, and our instance was
\begin
&\max& x_1 + 2x_2
&\text
& 3x_1 + 4 x_2 &\leq 5
&&x_1,\, x_2 & \in {0,1}.
\end
The feasible region of this LP and the feasible region of the integer hull are shown below.
|
0 |
1 |
1.6667 |
---|---|---|---|
LP |
1.25 |
.5 |
0 |
IP hull |
1 |
0 |
0 |
User Cuts in CPLEX
User cuts are, at a high level, valid inequalities for an integer program that strengthen the formulation, but are not required for correctness of the formulation.
CPLEX checks for violated user cuts at the highlighted stage in the diagram below.
|