Integer Programming
Mihály Hideg, Bence Pór
What is Integer Programming
• A type of optimization where some or all variables must be integers:
Branch🌿 and Bound (B&B) method
1. Relaxation (Bounding Step): 3. Bounding (Pruning Step):
• Solve the LP relaxation of the integer • If a branch’s LP relaxation gives a worse
program solution than an already known integer
• If the solution satisfies the integer solution, discard (prune) it.
constraints, it is optimal. • If the LP relaxation is infeasible, discard the
• If not, use the obtained value a bound. branch.
2. Branching: 4. Repeating Until Optimality:
• Select a fractional variable from the LP • Continue branching and bounding until no
relaxation solution. more subproblems remain.
• Create two new subproblems by imposing • The best integer solution found is the
additional constraints optimal solution.
• Solve the new LP relaxations for these
subproblems.
B&B example
Solution not in the feasible region
B&B example
X=
Fathomed
Cutting Planes Method
Steps of the Cutting ✂️Plane Method
1. Solve the LP relaxation (ignore the integer constraints)
2. Check if the solution is integer if yes, you’re done
3. If not, add a cutting plane (a valid constraint that removes the current
fractional solution but keeps all integer ones)
4. Resolve the LP with the new constraint
5. Repeat steps 2–4 until the solution is integer
Cutting Planes example
Dual simplex
• Minumim ratio test instead of ratio
test
Combining B&B and Cutting Planes
Why Combine them?
• Branch and Bound: Systematic enumeration, can be slow due to large trees.
• Cutting Planes: Strengthens the relaxation, but can be expensive if used alone.
• Combination Advantage: Faster convergence, smaller search trees, and better LP
relaxations.
The common way to combine them is called Branch and Cut.
Branch and Cut
1. Solve the Linear Programming (LP) relaxation.
2. Apply Cutting Planes to tighten relaxation.
3. If solution is integer → done. If not, branch as in B&B.
4. Repeat at each node as needed.
Complexity
• IP problems involve a discrete, non-convex
space, which makes finding the optimal solution
computationally hard (nooooo:()
• Because of complexity, most solvers use
heuristics
• Heuristics are rules-of-thumb or smart shortcuts
• They don’t guarantee the best (optimal) solution…
• …but they often give you a “good enough” solution
quickly.
• Rounding heuristics, Local search, etc.
Python implementation
• Several good libraries
• pulp for simple problems
• Commercial solvers:
• Gurobi, CPLEX, SCIP
• Used in supply chain, scheduling, network
design, finance.
Pulp
Thank you for your kind
attention! ❤️
• Examples from: [Link]