15.
053
Integer programming models
Introduction
Integer programming
l INPUT: a set of variables x1, …, xn and a set of
linear inequalities and equalities, and a subset of
variables that is required to be integer.
l FEASIBLE SOLUTION: a solution x’ that satisfies
all of the inequalities and equalities as well as the
integrality requirements.
l OBJECTIVE: maximize ∑i ci xi
Example: maximize 3x + 4y
subject to 5x + 8y ≤ 24
x, y ≥ 0 and integer
2
Why integer programs?
l Rule of thumb: integer programming can model
any of the variables and constraints that you
really want to put into an LP, but can’t.
– More realistic
– More flexibility
l Disadvantages
– More difficult to model
– Can be much more difficult to solve
On computation for IPs
l Much, much harder than solving LPs
l Some very large IPs can be solved
– e.g., 50,000 columns 2 million non-zeros
l Very unpredictable!
4
Running Running
time for solving
time IPs (CPLEX)
to optimality using CPLEX
< 1 Hour > 1 hour Not yet solved
1,000,000
number of columns
100,000
10,000
Instances are taken
from MIP Lib
1,000
1,000 10,000 100,000 1,000,000
number of rows 5
Types of Integer Programs
Mixed integer linear
programs xj ≥ 0 and integer for some or all j.
(MILPs or MIPs)
xj ≥ 0 and integer for every j.
Pure Integer Programs
0-1 (binary) Integer
xj ∈ {0,1} for every j.
Programs
0 ≤ xj ≤ 1 and xj integer.
6
The Knapsack Problem
a.k.a. The Capital Budgeting Problem
Trading for Profit
Nooz, is a fox. In fact, he is the most trusted name in
fox. Nooz is a contestant on Trading for Profits. Its
main slogan is
“I Trading for Profit”
Nooz has just won 14 IHTFP points. We now join the
quiz show to see what the 14 points are worth.
Show a picture of
Nooz.
8
optimizatio
n software
5 points 7 points 4 points
MIT water
fountain Probability 15.053
3 points 4 points 6 points 9
optimizatio
n software
16 utils 22 utils 8 utils
MIT water
fountain Probability 15.053
12 utils 11 utils 19 utils 10
Prize
1 1 22 3 3 4 4 5 6 6
Points 5 7 4 3 4 6
Utility 16 22 12 8 11 19
Budget: 14 IHTFP points.
Write Nooz’s problem as an integer program.
1 if prize i is selected
Let x i =
0 otherwise
11
Integer Programming Formulation
Objective and Constraints?
Max 16x1+ 22x2+ 12x3+ 8x4+ 11x5+ 19x6
5x1+ 7x2+ 4x3+ 3x4+ 4x5+ 6x6 ≤ 14
xj∈ {0,1} for each j = 1 to 6
12
Knapsack or Capital Budgeting
l You have n items to choose from to put into your
knapsack.
l Item i has weight wi, and it has value ci.
l The maximum weight your knapsack (or you) can
hold is b.
l Formulate the knapsack problem.
n
maximize ∑c x i i
i =1
n
subject to ∑w x i i
≤b
i =1
xi ∈{0,1} for i = 1 to n. 13
On formulating integer programs
We often have constraints and objectives that are not
expressed as linear constraints plus integrality
constraints. (That is, it is not currently an IP)
Examples:
l If you select Prize 1, you cannot select Prize 5.
l If Prize 1 is selected then Prize 2 must be selected.
l You must select Prize 1 or Prize 2 or both
l e.g. y1 ≤ 7 or y2 ≤ 9 or both.
l e.g., f(y3) = 0 if y3 = 0, and it is 10 + 5 y3 if y3 > 0.
14
On formulating integer programs
We often have constraints and objectives that are not
expressed as linear constraints plus integrality
constraints. (That is, it is not currently an IP)
Examples:
l If you select Prize 1, you cannot select Prize 5.
l If Prize 1 is selected then Prize 2 must be selected.
l You must select Prize 1 or Prize 2 or both
l e.g. y1 ≤ 7 or y2 ≤ 9 or both.
l e.g., f(y3) = 0 if y3 = 0, and it is 10 + 5 y3 if y3 > 0.
15
On formulating integer programs
We can figure out what is feasible and what is not
feasible.
When we form the integer program (IP), we want the
following:
1. The feasible region for our problem and for the integer
program is the “same.”
2. Sometimes, we need to create new variables in order to
make this happen.
16
Formulating logical constraints
(restricted to binary variables)
17
If-then constraints
(1) If you select Prize 1, you must select Prize 3.
⎧⎪ 1 if prize i is selected
xi = ⎨
⎩⎪ 0 if prize i is not selected
x5
x3 = 1 x3 = 0
x1 = 1 T F
x1 = 0 T T
x1
MIP Constraint:
x 1 + x5 ≤ 1
18
If-then constraints
⎧⎪ 1 if prize i is selected
xi = ⎨
⎪⎩ 0 if prize i is not selected
(1) If you select Prize 1, you must select Prize 3.
x3 = 1 x3 = 0
x1 = 1 T F
x1 = 0 T T
Setting x1 to 1 and x3 to 0 makes this
constraint unsatisfied. It is infeasible.
19
If-then constraints
⎧⎪ 1 if prize i is selected
xi = ⎨
⎪⎩ 0 if prize i is not selected
(1) If you select Prize 1, you must select Prize 3.
x3
1 x1 - x3 ≤ 0
0 x1
0 1 20
If-then constraints
⎧⎪ 1 if prize i is selected
xi = ⎨
⎪⎩ 0 if prize i is not selected
(2) If you select Prize 1, you cannot select Prize 5.
x3
1 x1 + x5 ≤ 1
0 x1
0 1 21
“If and only if” constraints
⎧⎪ 1 if prize i is selected
xi = ⎨
⎪⎩ 0 if prize i is not selected
(3) Prize 1 is selected if and only if Prize 2 is
selected.
x2
1 x1 - x2 = 0
0 x1
0 1 22
“Or” constraints
⎧⎪ 1 if prize i is selected
xi = ⎨
⎪⎩ 0 if prize i is not selected
(4) Prize 2 or Prize 3 is selected (or both)
x3
1 x1 + x5 ≥ 1
0 x2
0 1 23
“Exclusive or” constraints
⎧⎪ 1 if prize i is selected
xi = ⎨
⎪⎩ 0 if prize i is not selected
(5) Prize 2 or Prize 4 is selected, but not both
x3
1 x1 + x5 = 1
0 x2
0 1 24
How to guarantee a constraint is
redundant: intro to big M method
25
On redundant constraints
A constraint is redundant if deleting the constraint
does not change the feasible region.
Suppose that
0 ≤ y1 ≤ 3
y2
0 ≤ y2 ≤ 4
4
y1 + y2 ≤ 6 not redundant
3
y1 + y2 ≤ 7 redundant
2
y1 + y2 ≤ M redundant for all M ≥ 7.
1
0 y1
0 1 2 3 26
On redundant constraints and “big M”
Suppose that
0 ≤ y1 ≤ 3 y1 - 2y2 ≤ 3
0 ≤ y2 ≤ 4
y2 not redundant
(y1 = 4, y2 = 0 is infeasible.)
4 y1 - 2y2 ≤ 4
3 redundant
2 y1 - 2y2 ≤ M
1 redundant for all M ≥ 4.
0 y1
0 1 2 3 27
On redundant constraints and “big M”
Suppose that 10 y1 - 200 y2 ≥ 0
0 ≤ y1 ≤ 3
not redundant
0 ≤ y2 ≤ 4
y2 10 y1 - 200 y2 ≥ -799
not redundant
4
y1 = 0, y2 = 4 is infeasible.
3
10 y1 - 200 y2 ≥ -800
2
redundant
1
10 y1 - 200 y2 ≥ -M
0 y1 redundant for all M ≥ 800.
0 1 2 3 28
On redundant constraints and “big M”
Suppose that a y 1 + b y2 ≤ M
0 ≤ y1 ≤ 3
0 ≤ y2 ≤ 4
y2 a y1 + b y2 ≥ -M
4 both inequalities are redundant
for all sufficiently large M.
3
(True for all real numbers a and b
2 whenever y1 and y2 are both bounded
from above and below.)
1
0 y1
0 1 2 3 29
On choosing the parameter M
Any redundant constraint will be OK.
But, it is often best to choose M minimal:
l choose M so that constraint is redundant
l with any lower value of M, it is not redundant.
We will use big M method in modeling “or
constraints”.
30
Modeling “or” constraints for
mixed integer linear programming.
31
Logical constraints and the big M method
Suppose that y1 and y2 are y2
linear variables and
5
0 ≤ y1 ≤ 5
0 ≤ y2 ≤ 5 4
3
How can we model:
2
“y1 ≥ 3 or y2 ≥ 4 or both”
1
0 y1
0 1 2 3 4 5
The feasible region is not convex. It will not be the
feasible region of any LP. 32
Technique: add a binary variable w
if w = 0, then y1 ≥ 3
if w = 1, then y2 ≥ 4.
33
An example that doesn’t work
if w = 0, then y1 ≥ 3 y2
if w = 1, then y2 ≥ 4.
5
y1 ≥ 3w 4
y2 ≥ 4w 3
With these 1
constraints, y1 is
always ≥ 3. 0 y1
0 1 2 3 4 5
34
Making it work
if w = 0, then y1 ≥ 3 y2
if w = 1, then y2 ≥ 4.
5
y1 ≥ 3(1-w) 4
y2 ≥ 4w 3
0 y1
0 1 2 3 4 5
35
Case 1: w = 0
if w = 0, then y1 ≥ 3 y2
if w = 1, then y2 ≥ 4.
5
y1 ≥ 3(1-w) 4
y2 ≥ 4w 3
w=0
2
y1 ≥ 3 1
y2 ≥ 0
0 y1
w=0 0 1 2 3 4 5
36
Case 2: w = 1
if w = 0, then y1 ≥ 3 y2
if w = 1, then y2 ≥ 4.
5
y1 ≥ 3(1-w) 4
y2 ≥ 4w 3
w=1
2
y1 ≥ 0 redundant 1
y2 ≥ 4
0 y1
w=0 0 1 2 3 4 5
37
Combining the two cases
if w = 0, then y1 ≥ 3 y2
if w = 1, then y2 ≥ 4.
5
y1 ≥ 3(1-w) 4
y2 ≥ 4w 3
Either w = 0 1
Or w=1 0 y1
0 1 2 3 4 5
38
Modeling “or” constraints using
the big M method
39
“Or constraints” using big M:
a key assumption
Assumption. Variables are bounded from above and
below. (Bounds may be something that is derived.)
Example 1: The variables are x1, x2, x3, and
0 ≤ x1 ≤ 100
0 ≤ x2 ≤ 125
0 ≤ x3 ≤ 73
40
Bounded variables
Example 2: The variables are x1, x2, x3, and
2x1 + 5 x2 + 10 x3 ≤ 20 (1)
xj ≥ 0 for j = 1, 2, 3 (2)
(1) and (2) imply that x1 ≤ 10, x2 ≤ 4, x3 ≤ 2.
Example 3: The variables are x1, x2, x3, and
x1 + 2x3 ≤ 100 (3)
x2 – x3 ≤ 10 (4)
xj ≥ 0 for j = 1, 2, 3 (5)
(3) and (5) imply that x1 ≤ 100, x3 ≤ 50
x3 ≤ 50 and (4) imply that x2 ≤ 60 41
Modeling “or constraints”.
Assume that x1, x2, and x3 are all bounded.
x1 + 2x2 ≥ 12 (1)
or Logical constraints.
4x2 – 10x3 ≤ 1. (2)
Add a variable w. Enforce the following:
If w = 0 then x1 + 2x2 ≥ 12 and (2) is redundant.
If w = 1, then 4x2 – 10x3 ≤ 1 and (1) is redundant.
x1 + 2x2 ≥ 12 – M(1-w)
IP constraints.
4x2 – 10x3 ≤ 1 + Mw.
where M is sufficiently large.
Some Comments on using big M method
l The technique does require variables to be
bounded.
l Rather than use a really large value of M, it is
better to use minimal values of M.
43
Modeling “or” with three choices
Modeling “if-then constraints”
44
Modeling “or constraints”.
Assume that x1, x2, and x3 are all bounded.
x1 ≥ 12 (1) x1 ≥ 12 – M(w1) (1’)
or x2 ≤ 8 + M(w2) (2’)
x2 ≤ 8 (2) - x1 + x3 ≥ 4 – M(w3) (3’)
or w1 + w2 + w3 = 1
- x1 + x3 ≥ 4 (3) wj ∈ {0,1) for j = 1, 2, 3
Logical constraints Integer program
If w1 = 1, then x1 ≥ 12
If w2 = 1, then x2 ≤ 8
If w3 = 1, then -x1 + x3 ≥ 4
Modeling “if-then constraints”.
Assume that x1, x2, and x3 are all bounded and that
x1 is integer valued.
If x1 ≤ 12, then x2 + 5 x3 ≤ 25
is logically equivalent to
x1 > 12 or x2 + 5 x3 ≤ 25 x1 ≥ 13 - M(1-w4)
x2 + 5 x3 ≤ 25 + Mw4
and also equivalent to
w4 ∈ {0,1}
x1 ≥ 13 or x2 + 5 x3 ≤ 25 Integer program
because x1 is integral. If w4 = 0, then x1 ≥ 13
If w4 = 1, then x2 + 5 x3 ≤ 25.