Optimization – Integer
programming
Siva
Optional: Gomory cuts and Job shop scheduling(81-100)
Integer programming and mixed
integer linear programming(MILP)
Two things in life:
Understanding what is happening!!
Deciding what to do!!
An example: Production planning
Integer programming – One time linear
programming and rounding off
i) Relax the integer constraints to real numbers.
ii) Solve the Linear programming problem.
iii) Round off the solution to the nearest integers.
( Profit from x1 is 6 per unit and from x2 it is 8.)
Simplex Algorithm: Explanation with Example
The Simplex Algorithm is an iterative method used to solve
Linear Programming (LP) problems. It is particularly efficient
for solving optimization problems involving a linear objective
function subject to linear equality and inequality constraints.
Very Important problem
Branch-and-Bound Example:
Knapsack Problem
Modelling with Mixed Integer
Linear Programming
Branch and bound using domain
knowledge – Direct approach
This solution is feasible, but not optimal.
Integer programming – Solution by
branch and bound
Algorithm BranchAndBound:
Input: Problem instance
Output: Optimal solution (if exists)
1. Initialize:
- Create an empty list of subproblems (active set). d. If the bound suggests potential for better
- Add the root problem (entire solution space) to the active solutions:
set. - Branch the subproblem into smaller
- Set the best-known solution to null (or an infeasible large subproblems by partitioning the feasible region.
value for minimization). - Add the new subproblems to the active set.
2. While the active set is not empty: 3. Return the best-known solution.
a. Select a subproblem from the active set (e.g., using
depth-first, breadth-first, or best-first search).
b. Remove the selected subproblem from the active set.
c. Solve the relaxation of the subproblem to compute a
bound:
- If the bound is worse than the current best-known
solution, discard the subproblem.
- If the bound improves the best-known solution and
satisfies all constraints:
- Update the best-known solution.
Algorithm BranchAndBound_Minimization: c. Bounding:
Input: Integer programming problem (minimize c^T x - If z* ≥ best_objective, discard P.
subject to Ax ≤ b, x ∈ Z^n) - If x* is integer and feasible:
Output: Optimal integer solution (if exists) If z* < best_objective:
best_objective ← z*
1. Initialize: best_solution ← x*
- Create an empty list of subproblems (active set).
- Add the root problem (original LP relaxation) to the
active set.
- Set best_solution ← null, best_objective ← +∞.
2. While the active set is not empty:
a. Select and remove a subproblem P from the active
set.
b. Solve the LP relaxation of P:
- Let x* be the solution and z* be the objective
value.