|
|
|
|
|
|
|
|
|
Example:
|
|
|
|
|
Input: Integer Program IP;
SetOfLP = Linear Relaxation of IP;
Z* = NULL;
while ( SetOfLP ≠ empty )
{
LP1 = pick an arbitrary LP from SetOfLP;
Solve LP1 with Simplex Method:
Max1 = optimum value of LP1
Sol1 = solution values of the variables
if ( LP1 is infeasible )
{
delete LP1 from SetOfLP; // Bound heuristic 1
}
else if ( Z* ≠ NULL && Max1 ≤ Z* )
{
delete LP1 from SetOfLP; // Bound heuristic 2
}
else if ( Sol1 has only integer values )
{
if ( Max1 > Z* )
Z* = Max1; // Better incumbent solution found !
delete LP1 from SetOfLP; // Bound heuristic 3
}
else
{ /* ===============================
Apply "branch" heuristic
=============================== */
Select a variable xk that has a non-integer solution value;
Replace LP1 in SetOfLP with 2 derived LP programs:
LP1-A: add a constraint "xk ≤ roundDownValue"
LP1-A: add a constraint "xk ≥ roundUpValue"
}
}
|
|
|