To make things more precise, suppose we are given: 1 <= X1, X2 <= 10;
The so-called disjunctive formulation is:
! Case A;
X1A = 2 * X2A;
X1A <= 10 * ZA; ! Enforce upper bounds;
X2A >= 1 * ZA; ! Enforce lower bounds;
! Case B;
X2B = 2 * X1B;
X2B <= 10 * ZB; ! Enforce Upper bounds;
X1B >= 1 * ZB; ! Enforce lower bounds;
! Tie all the cases together;
ZA + ZB = 1; !Must choose 1 of the cases;
X1A + X1B = X1;
X2A + X2B = X2;
! ZA and ZB = 0 or 1;
Suppose we choose the arbitrary objective:
Max = X1 + 0.9* X2;
If you relax the requirement that ZA, ZB = 0 or 1
to:
0 <= ZA, ZB <= 1, and solve the resulting Linear(not integer) program,
you get the naturally integer solution:
Variable Value
X1A 10.00000
X2A 5.000000
ZA 1.000000
X1 10.00000
X2 5.000000
So Branch-and-Bound is not required in this particular example for this formulation.
Other formulations may not have this nice quality.