CH4003D Milp
CH4003D Milp
PROCESS OPTIMIZATION
Integer Programming
Integer Programming
• Many problems in plant operation, design, location, and scheduling involve variables that
are not continuous but instead have integer values.
• Mixed-Integer Programming (MIP) problem – the objective function depends on two sets of
variables; integer variables and continuous variables.
• Integer Programming (IP) problem – if only integer variables are involved.
• Binary Integer Programming (BIP) – all variables are either 0 or 1.
• Mixed-Integer Linear Programming (MILP) problems – linear in the objective function and
constraints.
• Mixed-Integer NonLinear Programming (MINLP) problems – nonlinear in some of the
objective function and/or constraints.
Branch and Bound Technique
• The branch and bound technique can be applied to mixed-integer as well as general integer
programming problems.
• It uses a partitioning method for the independent variables to divide up all the possible
feasible solutions into subsets and serially searches for the optimum solution in the most
promising subsets.
• The term "branch" derives from the concept of successively adding constraints to the
independent integer variables in the problem.
• Bounding occurs because each subproblem solution forms a bound on the value of the
objective function.
• With the addition of tighter constraints in the integer variable (branching), we know that the
objective function value for the subproblem cannot improve, hence certain branches can be
eliminated from consideration in the search for the optimum.
Branch and Bound Technique – The Procedure
1. Obtain the continuous (noninteger) solution of the problem (LP relaxation); designate this
problem “C”.
2. Does the solution to C satisfy all integer requirements? If yes, then you are finished. If not,
proceed to step 3.
3. From a review of the solution to problem C select one integer variable which has a
noninteger value (say α).
Consider the value of 𝑥𝑎 , α, to be a starting node. Construct two nodes which branch from
α by adding constraints
(a) 𝑥𝑎 ≥ smallest integer greater than α
(b) 𝑥𝑎 ≤ largest integer less than α
Call problem C with the added constraints problems C1 and C2
Next solve the continuous problem for C1 or C2, say C1. We return to the other branch later.
Branch and Bound Technique – The Procedure
4. Review the solution to C1, and branch on a new variable 𝑥𝑏 , using two partitioning
constraints as before.
Select the branch which initially appears to be more promising for the next subproblem to
solve.
It may be necessary to branch on 𝑥𝑎 again if later solutions require it.
Continue branching on integer variables until one of three things happens:
(a) You reach a solution which satisfies all the integer constraints (this may require fixing all
of the variables at integer values)
(b) The objective function for a solution of a subproblem becomes inferior to any previously
obtained solution which satisfies the integer constraints
(c) No feasible solution is found to exist
5. Next you backtrack to a previous node on the same branch, use the alternative constraint,
and solve the optimization subproblem.
Evaluate subproblem solutions as additional nodes as in step 4.
Once a branch is fathomed, back tract again until you finally reach the original solution
(node 1).
Record the best value for the branch just analyzed for comparison with other branches.
Branch and Bound Technique – Example Problem