Cutting Planes in Mixed Integer Programming
Santanu S. Dey
School of Industrial and Systems Engineering,Georgia Institute of Technology.
February, 2010
(Many Thanks to Q. Louveaux for sharing some Images)
Outline
Mixed Integer Programming (MIP)
MIP are useful!
MIP are difficult to solve
How we go about solving MIPs
Cutting Planes
Part 1Mixed Integer Programming
Mixed Integer Programming: ‘Linear Problem’ with Discrete Variables
Mixed Integer Program (MIP)
max c1x1 + · · · + cnxns.t. a11x1 + · · · + a1nxn ≤ b1
.... . .
......
am1x1 + · · · + amnxn ≤ bmx1, x2, · · · , xk ∈ Z+ → nonnegative integers
I will typically use “x",“y" to represent
decision variablesand all the other
letters to representdata.
If k = n, then Integer Program.
If k = 0, then Linear Program.
I This seemingly simple class of optimization problems can be used tomodel a very large class of real world problems...
I I want to illustrate its expressive power with an elementary example
I This seemingly simple class of optimization problems can be used tomodel a very large class of real world problems...
I I want to illustrate its expressive power with an elementary example
An Example: Production Planning
1. We have to draw the production plan for the next 5 months.
2. The demands are known for the next 5 months: 5, 13, 7, 5, 12units.
3. Suppose our production capacity each month is 20 units.
4. The cost of per unit production in the next 5 months is:$6, $7, $2, $3, $6.
5. If we choose to produce in any month, there is a extra startup cost of$ 8.
x1, x2, x3, x4, x5 : The amount I choose to produce in each month.y1, y2, y3, y4, y5 : Whether I produce or not each month (0 = Do not Produce/ 1= I decide to Produce).
An Example: Production Planning
1. We have to draw the production plan for the next 5 months.
2. The demands are known for the next 5 months: 5, 13, 7, 5, 12units.
3. Suppose our production capacity each month is 20 units.
4. The cost of per unit production in the next 5 months is:$6, $7, $2, $3, $6.
5. If we choose to produce in any month, there is a extra startup cost of$ 8.
x1, x2, x3, x4, x5 : The amount I choose to produce in each month.y1, y2, y3, y4, y5 : Whether I produce or not each month (0 = Do not Produce/ 1= I decide to Produce).
An Example: Production Planning
1. We have to draw the production plan for the next 5 months.
2. The demands are known for the next 5 months: 5, 13, 7, 5, 12units.
3. Suppose our production capacity each month is 20 units.
4. The cost of per unit production in the next 5 months is:$6, $7, $2, $3, $6.
5. If we choose to produce in any month, there is a extra startup cost of$ 8.
x1, x2, x3, x4, x5 : The amount I choose to produce in each month.y1, y2, y3, y4, y5 : Whether I produce or not each month (0 = Do not Produce/ 1= I decide to Produce).
An Example: Production Planning
1. We have to draw the production plan for the next 5 months.
2. The demands are known for the next 5 months: 5, 13, 7, 5, 12units.
3. Suppose our production capacity each month is 20 units.
4. The cost of per unit production in the next 5 months is:$6, $7, $2, $3, $6.
5. If we choose to produce in any month, there is a extra startup cost of$ 8.
x1, x2, x3, x4, x5 : The amount I choose to produce in each month.y1, y2, y3, y4, y5 : Whether I produce or not each month (0 = Do not Produce/ 1= I decide to Produce).
An Example: Production Planning
1. We have to draw the production plan for the next 5 months.
2. The demands are known for the next 5 months: 5, 13, 7, 5, 12units.
3. Suppose our production capacity each month is 20 units.
4. The cost of per unit production in the next 5 months is:$6, $7, $2, $3, $6.
5. If we choose to produce in any month, there is a extra startup cost of$ 8.
x1, x2, x3, x4, x5 : The amount I choose to produce in each month.y1, y2, y3, y4, y5 : Whether I produce or not each month (0 = Do not Produce/ 1= I decide to Produce).
An Example: Production Planning
1. We have to draw the production plan for the next 5 months.
2. The demands are known for the next 5 months: 5, 13, 7, 5, 12units.
3. Suppose our production capacity each month is 20 units.
4. The cost of per unit production in the next 5 months is:$6, $7, $2, $3, $6.
5. If we choose to produce in any month, there is a extra startup cost of$ 8.
x1, x2, x3, x4, x5 : The amount I choose to produce in each month.y1, y2, y3, y4, y5 : Whether I produce or not each month (0 = Do not Produce/ 1= I decide to Produce).
An Example: Production Planning
1. We have to draw the production plan for the next 5 months.
2. The demands are known for the next 5 months: 5, 13, 7, 5, 12units.
3. Suppose our production capacity each month is 20 units.
4. The cost of per unit production in the next 5 months is:$6, $7, $2, $3, $6.
5. If we choose to produce in any month, there is a extra startup cost of$ 8.
x1 ≥ 5
An Example: Production Planning
1. We have to draw the production plan for the next 5 months.
2. The demands are known for the next 5 months: 5, 13, 7, 5, 12units.
3. Suppose our production capacity each month is 20 units.
4. The cost of per unit production in the next 5 months is:$6, $7, $2, $3, $6.
5. If we choose to produce in any month, there is a extra startup cost of$ 8.
x1 ≥ 5x1 + x2 ≥ 5 + 13
An Example: Production Planning
1. We have to draw the production plan for the next 5 months.
2. The demands are known for the next 5 months: 5, 13, 7, 5, 12units.
3. Suppose our production capacity each month is 20 units.
4. The cost of per unit production in the next 5 months is:$6, $7, $2, $3, $6.
5. If we choose to produce in any month, there is a extra startup cost of$ 8.
x1 ≥ 5x1 + x2 ≥ 5 + 13x1 + x2 + x3 ≥ 5 + 13 + 7x1 + x2 + x3 + x4 ≥ 5 + 13 + 7 + 5x1 + x2 + x3 + x4 + x5 ≥ 5 + 13 + 7 + 5 + 12
An Example: Production Planning
1. We have to draw the production plan for the next 5 months.
2. The demands are known for the next 5 months: 5, 13, 7, 5, 12units.
3. Suppose our production capacity each month is 20 units.
4. The cost of per unit production in the next 5 months is:$6, $7, $2, $3, $6.
5. If we choose to produce in any month, there is a extra startup cost of$ 8.
x1 ≤ 20
An Example: Productions Planning
1. We have to draw the production plan for the next 5 months.
2. The demands are known for the next 5 months: 5, 13, 7, 5, 12units.
3. Suppose our production capacity each month is 20 units.
4. The cost of per unit production in the next 5 months is:$6, $7, $2, $3, $6.
5. If we choose to produce in any month, there is a extra startup cost of$ 8.
x1 ≤ 20y1
An Example: Production Planning
1. We have to draw the production plan for the next 5 months.
2. The demands are known for the next 5 months: 5, 13, 7, 5, 12units.
3. Suppose our production capacity each month is 20 units.
4. The cost of per unit production in the next 5 months is:$6, $7, $2, $3, $6.
5. If we choose to produce in any month, there is a extra startup cost of$ 8.
x1 ≤ 20y1
x2 ≤ 20y2
x3 ≤ 20y3
x4 ≤ 20y4
x5 ≤ 20y5
An Example: Production Planning
1. We have to draw the production plan for the next 5 months.
2. The demands are known for the next 5 months: 5, 13, 7, 5, 12units.
3. Suppose our production capacity each month is 20 units.
4. The cost of per unit production in the next 5 months is:$6, $7, $2, $3, $6.
5. If we choose to produce in any month, there is a extra startup cost of$ 8.
min 6x1 + 7x2 + 2x3 + 3x4 + 6x5 + 8y1 + 8y2 + 8y3 + 8y4 + 8y5
An Example: Production Planning
min 6x1 + 7x2 + 3x3 + 6x4 + 8y1 + 8y2 + 8y3 + 8y4 + 8y5
x1 ≥ 5x1 + x2 ≥ 5 + 13
x1 + x2 + x3 ≥ 5 + 13 + 7x1 + x2 + x3 + x4 ≥ 5 + 13 + 7 + 5
x1 + x2 + x3 + x4 + x5 ≥ 5 + 13 + 7 + 5 + 12x1 ≤ 20y1
x2 ≤ 20y2
x3 ≤ 20y3
x4 ≤ 20y4
x5 ≤ 20y5
y1 ≤ 1y2 ≤ 1...
x1, x2, x3, x4, x5 ∈ Z+
y1, y2, y3, y4, y5 ∈ Z+
MIP is a Flexible Tool
I Logistics: Traveling Salesman problem, Vehicle Routing.I Inventory (and Production) Planning.I Facilities Location.I Capacity planning: Matching, Assignment Problem.I Data Mining: Classification, Regression.
I Airline Industry: Schedule Planning, Fleet Assignment, Aircraft Rotation,Crew-pairing.
I Mining and Forestry Industry: Covering Models, partitioning models.I National Security Planning.I VLSI Chip Design.I Computational Biology: Sequence Alignment, Genome Rearrangement.I Health care: IMRT, Scheduling.I Sports Scheduling, Timetabling.
MIP is a Flexible Tool
I Logistics: Traveling Salesman problem, Vehicle Routing.I Inventory (and Production) Planning.I Facilities Location.I Capacity planning: Matching, Assignment Problem.I Data Mining: Classification, Regression.I Airline Industry: Schedule Planning, Fleet Assignment, Aircraft Rotation,
Crew-pairing.I Mining and Forestry Industry: Covering Models, partitioning models.I National Security Planning.I VLSI Chip Design.I Computational Biology: Sequence Alignment, Genome Rearrangement.I Health care: IMRT, Scheduling.I Sports Scheduling, Timetabling.
Some "Slightly Dated" Applications of Integer Programming
Papers from Interfaces.
Company Year Type of Model RevenueAir New Zealand 2001 Crew Scheduling NZ $15.6 millionAT&T 2000 Network Restoration ‘Hundreds of
millions of dollars’NBC 2002 Product Mix/ $200 million
Commercials/ScheduleProcter & Gamble 2006 Expressive Bidding $298.4 millionSchindler Elevator 2003 Routing planning $1 millionUPS 2004 Network Design $87 millionFord 2001 Set-covering/ $250 million
Product optimizationHewlett-Packard 2004 Inventory Optimization $130 millionMerrill-Lynch 2002 Integrated Choice $80 million
StrategyMotorola 2005 Bidding/ $200 million
Supplier Negotiation
Part 2MIPs are Difficult to Solve
A Natural Way to Solve MIPs
1. Enumerate all possible integer solution vectors.
2. For each potential solution vectors, check if it is feasible.
3. If feasible, then compute objective function value.
4. Pick the best solution.
A Natural Way to Solve MIPs
1. Enumerate all possible integer solution vectors.
2. For each potential solution vectors, check if it is feasible.
3. If feasible, then compute objective function value.
4. Pick the best solution.
A Natural Way to Solve MIPs
1. Enumerate all possible integer solution vectors.
2. For each potential solution vectors, check if it is feasible.
3. If feasible, then compute objective function value.
4. Pick the best solution.
A Natural Way to Solve MIPs
1. Enumerate all possible integer solution vectors.
2. For each potential solution vectors, check if it is feasible.
3. If feasible, then compute objective function value.
4. Pick the best solution.
Some Calculations
Suppose we can evaluate 106 potential solution vectors in a second.
Number of binary variables Number of vectors 2n Time10 1024 0.001 seconds
Some Calculations
Suppose we can evaluate 106 potential solution vectors in a second.
Number of binary variables Number of vectors 2n Time10 1024 0.001 seconds20 1048576 1 second30 ∼ 109 16 minutes
Some Calculations
Suppose we can evaluate 106 potential solution vectors in a second.
Number of binary variables Number of vectors 2n Time10 1024 0.001 seconds20 1048576 1 second30 ∼ 109 16 minutes40 ∼ 1012 11 days50 ∼ 1015 31 years
Some Calculations
Suppose we can evaluate 106 potential solution vectors in a second.
Number of binary variables Number of vectors 2n Time10 1024 0.001 seconds20 1048576 1 second30 ∼ 109 16 minutes40 ∼ 1012 11 days50 ∼ 1015 31 years60 ∼ 1018 31,709 years70 ∼ 1021 31,709,791 years
Some Calculations
Suppose we can evaluate 106 potential solution vectors in a second.
Number of binary variables Number of vectors 2n Time10 1024 0.001 seconds20 1048576 1 second30 ∼ 109 16 minutes40 ∼ 1012 11 days50 ∼ 1015 31 years60 ∼ 1018 31,709 years70 ∼ 1021 31,709,791 years
This has got “nothing" to do with speed of computers. Every time the speedis doubled⇒ It allows me to solve a problem with 1 extra variable.
Some Calculations
Suppose we can evaluate 106 potential solution vectors in a second.
Number of binary variables Number of vectors 2n Time10 1024 0.001 seconds20 1048576 1 second30 ∼ 109 16 minutes40 ∼ 1012 11 days50 ∼ 1015 31 years60 ∼ 1018 31,709 years70 ∼ 1021 31,709,791 years
This has got “nothing" to do with speed of computers. Every time the speedis doubled⇒ It allows me to solve a problem with 1 extra variable.
However, we routinely solve problems with thousands of integer variables.
Part 3How we go about solving MIPs
Main Ideas
I Branch and Bound: Smart EnumerateI Cutting Planes
A little bit of Linear Programming (LP) Geometry
Polyhedron
0 0.5 1 1.5 2 2.5 3 3.50
0.5
1
1.5
2
2.5
3
3.5
4
4.5
5
3x + 2y<= 6
x + 2y <= 4
y>=0
x >= 0
3x + 2y ≤ 6
x + 2y ≤ 4
x ≥, y ≥ 0.
Using Linear Programming Techniques To Solve MIPs
Convex Hull
�����������������������������������������������������������������������������������������������������������������������������������������������
�����������������������������������������������������������������������������������������������������������������������������������������������
����
�� ��
�� ��
��
��
�� ��
��
��
�� ��
��
��
�� ��
��
��
��
Using Linear Programming Techniques To Solve MIPs
Convex Hull
������������������������������������������������������������������������������������������
������������������������������������������������������������������������������������������
��
�� ��
��
�� ��
��
��
�� ��
��
��
��
��
��
��
�� ��
��
��
��
Cutting Planes (Cuts)
A Simple Algorithm To Solve Integer Programs
�����������������������������������������������������������������������������������������������������������������������������������������������
�����������������������������������������������������������������������������������������������������������������������������������������������
����
�� ��
�� ��
��
��
�� ��
��
��
�� ��
��
��
�� ��
��
��
��
Cutting Planes (Cuts)
A Simple Algorithm To Solve Integer Programs
�����������������������������������������������������������������������������������������������������������������������������������������������
�����������������������������������������������������������������������������������������������������������������������������������������������
����
�� ��
�� ��
��
��
�� ��
��
��
�� ��
��
��
�� ��
��
��
��
��
Cutting Planes (Cuts)
A Simple Algorithm To Solve Integer Programs
�����������������������������������������������������������������������������������������������������������������������������������������������
�����������������������������������������������������������������������������������������������������������������������������������������������
����
�� ��
�� ��
��
��
�� ��
��
��
�� ��
��
��
�� ��
��
��
��
��
Cutting Planes (Cuts)
A Simple Algorithm To Solve Integer Programs
������������������������������������������������������������������������������������������������������������������������������������
������������������������������������������������������������������������������������������������������������������������������������
����
��
�� ��
��
��
�� ��
��
��
�� ��
��
��
�� ��
��
����
��
Cutting Planes (Cuts)
A Simple Algorithm To Solve Integer Programs
������������������������������������������������������������������������������������������������������������������������������������
������������������������������������������������������������������������������������������������������������������������������������
����
��
�� ��
��
��
�� ��
��
��
�� ��
��
��
�� ��
��
����
��
��
Cutting Planes (Cuts)
A Simple Algorithm To Solve Integer Programs
������������������������������������������������������������������������������������������������������������������������������������
������������������������������������������������������������������������������������������������������������������������������������
����
��
�� ��
��
��
�� ��
��
��
�� ��
��
��
�� ��
��
����
��
��
Cutting Planes (Cuts)
A Simple Algorithm To Solve Integer Programs
������������������������������������������������������������������������������������������������������������������������������������
������������������������������������������������������������������������������������������������������������������������������������
����
��
�� ��
��
��
�� ��
��
��
�� ��
��
��
�� ��
��
����
��
Cutting Planes (Cuts)
A Simple Algorithm To Solve Integer Programs
������������������������������������������������������������������������������������������������������������������������������������
������������������������������������������������������������������������������������������������������������������������������������
����
��
�� ��
��
��
�� ��
��
��
�� ��
��
��
�� ��
��
����
��
Cutting Planes (Cuts)
A Simple Algorithm To Solve Integer Programs
�������������������������������������������������������������������������������������������������������������������������
�������������������������������������������������������������������������������������������������������������������������
����
��
�� ��
��
��
�� ��
��
��
�� ��
��
��
�� ��
��
����
��
How Do We Generate Cutting Planes?
Cutting planes are difficult to obtain when there are a large number ofvariables!
Two paradigms to generate cutting planes
1. Problem Specific Cutting Planes: These are useful for solving specificproblems.
2. Generic Cutting Planes: These are useful for solving any Mixed IntegerPrograms.
How Do We Generate Cutting Planes?
Cutting planes are difficult to obtain when there are a large number ofvariables!
Two paradigms to generate cutting planes
1. Problem Specific Cutting Planes: These are useful for solving specificproblems.
2. Generic Cutting Planes: These are useful for solving any Mixed IntegerPrograms.
How Do We Generate Cutting Planes?
Cutting planes are difficult to obtain when there are a large number ofvariables!
Two paradigms to generate cutting planes
1. Problem Specific Cutting Planes: These are useful for solving specificproblems.
2. Generic Cutting Planes: These are useful for solving any Mixed IntegerPrograms.
How Do We Generate Cutting Planes?
Cutting planes are difficult to obtain when there are a large number ofvariables!
Two paradigms to generate cutting planes
1. Problem Specific Cutting Planes: These are useful for solving specificproblems.
2. Focus of the rest of the talk→ Generic Cutting Planes: These are usefulfor solving any Mixed Integer Programs.
Most Successful Cutting Planes for Generic Problems
[Bixby, Rothberg (2007)]
Disabled Cut Year Mean PerformanceDegradation
Gomory Mixed Integer (GMIC) 1960 2.52XMixed Integer Rounding 2001 1.83XKnapsack Cover 1983 1.40XFlow Cover 1985 1.22XImplied Bound 1991 1.19XFlow path 1985 1.04XClique 1983 1.02XGUB Cover 1998 1.02XDisjunctive 1979 0.53X
Chvátal-Gomory Cutting Planes
x1 ≥, x2 ≥ 0, x1 + x2 ≤ 3, 5x − 3y ≤ 3x1, x2 ∈ Z
Valid inequality for Continuous Relaxation: 4x1 + 3x2︸ ︷︷ ︸∈Z
≤ 10.5.
Black
0 1 2 30
1
2
3
4
Chvátal-Gomory Cutting Planes
x1 ≥, x2 ≥ 0, x1 + x2 ≤ 3, 5x − 3y ≤ 3x1, x2 ∈ Z
Valid inequality for Continuous Relaxation: 4x1 + 3x2︸ ︷︷ ︸∈Z
≤ 10.5.
This gives the following nontrivial valid inequality: 4x1 + 3x2 ≤ b10.5c.
0 1 2 30
1
2
3
4
Cover Cuts
3x1 + 5x2 + 4x3 + 2x4 + 7x5 ≤ 8,
0 ≤ x1, x2, x3, x4, x5 ≤ 1,
x1, x2, x3, x4, x5 ∈ Z+
Cover Cuts
3x1 + 5x2 + 4x3 + 2x4 + 7x5 ≤ 8,
0 ≤ x1, x2, x3, x4, x5 ≤ 1,
x1, x2, x3, x4, x5 ∈ Z+
5 + 4 > 8
x2 and x3 cannot simultaneously be equal to 1
Cover Cuts
3x1 + 5x2 + 4x3 + 2x4 + 7x5 ≤ 8,
0 ≤ x1, x2, x3, x4, x5 ≤ 1,
x1, x2, x3, x4, x5 ∈ Z+
x2 + x3 ≤ 1
Cover Cuts
3x1 + 5x2 + 4x3 + 2x4 + 7x5 ≤ 8,
0 ≤ x1, x2, x3, x4, x5 ≤ 1,
x1, x2, x3, x4, x5 ∈ Z+
x2 + x3 ≤ 1
x4 + x5 ≤ 1
x1 + x2 + x3 ≤ 2
x1 + x2 + x4 ≤ 2
x1 + x2 + x5 ≤ 2...
Basic Mixed-Integer RoundingConsider the basic set
x − y ≤ 2.5
x ∈ Z, y ≥ 0.
It is called the Mixed-Integer-Rounding Inequality (MIR)
x ≤ b2.5c+y
1− f,
where f = 2.5− b2.5c is the fractional part of 2.5.
Basic Mixed-Integer RoundingConsider the basic set
x − y ≤ 2.5
x ∈ Z, y ≥ 0.
MIR CUT
It is called the Mixed-Integer-Rounding Inequality (MIR)
x ≤ b2.5c+y
1− f,
where f = 2.5− b2.5c is the fractional part of 2.5.
The Disjunctive Cuts
Split Disjunctive cutsGeneral family of cutting planes that include the MIR cuts.Based on a disjunction πT x ≤ π0 or πT x ≥ π0 + 1.
�� �� �� ��
�� �� �� �� ��
�� �� �� �� ��
�� �� �� �� ��
����������
��
The Disjunctive Cuts
Split Disjunctive cutsGeneral family of cutting planes that include the MIR cuts.Based on a disjunction πT x ≤ π0 or πT x ≥ π0 + 1.
�� �� �� ��
�� �� �� �� ��
�� �� �� �� ��
�� �� �� �� ��
����������
��
SPLIT
The Disjunctive Cuts
Split Disjunctive cutsGeneral family of cutting planes that include the MIR cuts.Based on a disjunction πT x ≤ π0 or πT x ≥ π0 + 1.
�������������������������������������������������
�������������������������������������������������
�������������������������������������������������������������������������������������������������������������������������
�������������������������������������������������������������������������������������������������������������������������
�� �� ��
�� �� �� �� ��
�� �� �� �� ��
��
�� �� �� ��
����������
��
��
The Disjunctive Cuts
Split Disjunctive cutsGeneral family of cutting planes that include the MIR cuts.Based on a disjunction πT x ≤ π0 or πT x ≥ π0 + 1.
Split cut
�� �� �� ��
�� �� �� �� ��
�� �� �� �� ��
�� �� �� �� ��
����������
��
Some recent trends...
Single Constraint Relaxation
A simple example
Single Constraint Relaxation
A simple example
Single Constraint Relaxation
A simple example
Question: Can we expect any improvement by looking atmultiple constraints simultaneously?
Single Constraint Vs Multiple Constraints
‘Extra’ information by considering multiple constraints simultaneously!
Single Constraint Vs Multiple Constraints
‘Extra’ information by considering multiple constraints simultaneously!
Single Constraint Vs Multiple Constraints
‘Extra’ information by considering multiple constraints simultaneously!
Lets Drop This Constraint
Single Constraint Vs Multiple Constraints
‘Extra’ information by considering multiple constraints simultaneously!
Can we obtain this cut?
Single Constraint Vs Multiple Constraints
‘Extra’ information by considering multiple constraints simultaneously!
Problem
Can we obtain this cut?
Single Constraint Vs Multiple Constraints
‘Extra’ information by considering multiple constraints simultaneously!
Problem
Can we obtain this cut? NO!
Single Constraint Vs Multiple Constraints
‘Extra’ information by considering multiple constraints simultaneously!
Single Constraint Vs Multiple Constraints
‘Extra’ information by considering multiple constraints simultaneously!