Encodings in Mixed Integer Linear...
Transcript of Encodings in Mixed Integer Linear...
ORC Seminar, December 2012 – Cambridge, Massachusetts
Encodings in Mixed Integer Linear Programming
Juan Pablo VielmaMassachusetts Institute of Technology
0
Mixed Integer Binary Formulations
MIP Formulations = Model Finite Alternatives
/302////302222222
f(x,y)
y
x
Pi
x ∈n⋃
i=1
Pi ⊆ Rd
0
Textbook Formulation
/303 0000000////////3333333000000033333333
4∑i=1
diλi = x,4∑
i=1
f(di)λi = z
4∑i=1
λi = 1, λi ≥ 0
3∑i=1
yi = 1, yi ∈ {0, 1}
λ1 ≤ y1, λ2 ≤ y1 + y2
λ3 ≤ y2 + y3, λ4 ≤ y3Formulation for f(x)=z
d1 d2 d3 d4
f(d4)
0
f(d1)
f(d2)
f(d3)
0
Textbook Formulation
/303 0000000////////3333333000000033333333
4∑i=1
diλi = x,4∑
i=1
f(di)λi = z
4∑i=1
λi = 1, λi ≥ 0
3∑i=1
yi = 1, yi ∈ {0, 1}
λ1 ≤ y1, λ2 ≤ y1 + y2
λ3 ≤ y2 + y3, λ4 ≤ y3Formulation for f(x)=z
d1 d2 d3 d4
f(d4)
0
f(d1)
f(d2)
f(d3)
“Weak”
0
Better Formulation
/304
Formulation for f(x)=z
d1 d2 d3 d4
f(d4)
0
f(d1)
f(d2)
f(d3)
d0 +3∑
i=1
(di+1 − di)δi = x,
f(d0) +3∑
i=1
(f(di+1)− f(di))δi = z
δ3 ≤ y2 ≤ δ2 ≤ y1 ≤ δ1
yi ∈{0, 1}
0
Better Formulation
/304
Formulation for f(x)=z
d1 d2 d3 d4
f(d4)
0
f(d1)
f(d2)
f(d3)
d0 +3∑
i=1
(di+1 − di)δi = x,
f(d0) +3∑
i=1
(f(di+1)− f(di))δi = z
δ3 ≤ y2 ≤ δ2 ≤ y1 ≤ δ1
yi ∈{0, 1}Integral
0
Solve Times in CPLEX 11
/305
Weak Strong Mystery
0/305Transportation Problems in V., Ahmed and Nemhauser ‘10.
0
Solve Times in CPLEX 11
/305
0 s
500 s
1000 s
1500 s
2000 s
4 8 1632
Weak Strong Mystery
0/305Transportation Problems in V., Ahmed and Nemhauser ‘10.
0
Solve Times in CPLEX 11
/305
0 s
500 s
1000 s
1500 s
2000 s
4 8 1632
Weak Strong Mystery
0/305Transportation Problems in V., Ahmed and Nemhauser ‘10.
0
Outline
MIP v/s constraint branching.
“Have your cake and eat it too” formulation
Step 1: Encoding alternatives.
Step 2: Combine with strong “standard” formulation.
Summary, Extensions and More.
/306
min |x|s.t.
x ∈ {αi}ni=1
00
Formulating Discrete Alternatives
//30//3077α1 α2 α3 α4 α5
min |x|s.t.
x ∈ {αi}ni=1
min |x|s.t. ∑n
i=1λiαi = x∑n
i=1λi = 1
λ ∈ {0, 1}n
00
Formulating Discrete Alternatives
//30//3077α1 α2 α3 α4 α5
min |x|s.t. ∑n
i=1λiαi = x∑n
i=1λi = 1
λ ∈ {0, 1}n
00
Formulating Discrete Alternatives
//30//30888
α1 α2 α3 α4 α5
min |x|s.t. ∑n
i=1λiαi = x∑n
i=1λi = 1
λ ∈ {0, 1}n
00
Formulating Discrete Alternatives
//30//30888
α1 α2 α3 α4 α5
1
min |x|s.t. ∑n
i=1λiαi = x∑n
i=1λi = 1
λ ∈ {0, 1}n
00
Formulating Discrete Alternatives
//30//30888
α1 α2 α3 α4 α5IPopt = 1, LPopt = 0
1
α +
min |x|s.t. ∑n
i=1λiαi = x∑n
i=1λi = 1
λ ∈ {0, 1}n
00
Formulating Discrete Alternatives
//30//30888
α1 α2 α3 α4 α5IPopt = 1, LPopt = 0
1
Solve by binary Branch-and-Bound:
min |x|s.t. ∑n
i=1λiαi = x∑n
i=1λi = 1
λ ∈ {0, 1}n
Branch on λ2
00
Formulating Discrete Alternatives
//30//30888
α1 α2 α3 α4 α5IPopt = 1, LPopt = 0
1
Solve by binary Branch-and-Bound:
min |x|s.t. ∑n
i=1λiαi = x∑n
i=1λi = 1
λ ∈ {0, 1}n
Branch on λ2
00
Formulating Discrete Alternatives
//30//30888
α1 α2 α3 α4 α5IPopt = 1, LPopt = 0
1
Solve by binary Branch-and-Bound:• λ2 = 1→ Feasible with |x| = 1
+α
min |x|s.t. ∑n
i=1λiαi = x∑n
i=1λi = 1
λ ∈ {0, 1}n
Branch on λ2
00
Formulating Discrete Alternatives
//30//30888
α1 α2 α3 α4 α5IPopt = 1, LPopt = 0
1
Solve by binary Branch-and-Bound:• λ2 = 1→ Feasible with |x| = 1
• λ2 = 0→ Best Bound = 0
+α
min |x|s.t. ∑n
i=1λiαi = x∑n
i=1λi = 1
λ ∈ {0, 1}n
Branch on λ2
Branch on λ2, λ4, λ5 → Best Bound = 000
Formulating Discrete Alternatives
//30//30888
α1 α2 α3 α4 α5IPopt = 1, LPopt = 0
1
Solve by binary Branch-and-Bound:• λ2 = 1→ Feasible with |x| = 1
• λ2 = 0→ Best Bound = 0
α +
min |x|s.t. ∑n
i=1λiαi = x∑n
i=1λi = 1
λ ∈ {0, 1}n
Worst case: n/2 branches to solve
(i.e. 2n/2 B-and-B nodes!).
00
Formulating Discrete Alternatives
//30//30888
α1 α2 α3 α4 α5IPopt = 1, LPopt = 0
1
Solve by binary Branch-and-Bound:
min |x|s.t. ∑n
i=1λiαi = x∑n
i=1λi = 1
λ ∈ {0, 1}n
/30/30
Formulating Discrete Alternatives
α1 α2 α3 α4 α5IPopt = 1, LPopt = 0
1
Solve by constraint B-and-B:
min |x|s.t. ∑n
i=1λiαi = x∑n
i=1λi = 1
λ ∈ {0, 1}n
/30/30
Formulating Discrete Alternatives
α1 α2 α3 α4 α5IPopt = 1, LPopt = 0
1
Solve by constraint B-and-B:
Branch on λ1 + λ2
min |x|s.t. ∑n
i=1λiαi = x∑n
i=1λi = 1
λ ∈ {0, 1}n
/30/30
Formulating Discrete Alternatives
α1 α2 α3 α4 α5IPopt = 1, LPopt = 0
1
α α
+Solve by constraint B-and-B:
Branch on λ1 + λ2• λ1 + λ2 = 1→ Feasible with |x| = 1
min |x|s.t. ∑n
i=1λiαi = x∑n
i=1λi = 1
λ ∈ {0, 1}n
/30/30
Formulating Discrete Alternatives
α1 α2 α3 α4 α5IPopt = 1, LPopt = 0
1
Solve by constraint B-and-B:
Branch on λ1 + λ2• λ1 + λ2 = 1→ Feasible with |x| = 1
• λ1 + λ2 = 0→ Feasible with |x| = 1
+
min |x|s.t. ∑n
i=1λiαi = x∑n
i=1λi = 1
λ ∈ {0, 1}n
/30/30
Formulating Discrete Alternatives
α1 α2 α3 α4 α5IPopt = 1, LPopt = 0
1
Solve by constraint B-and-B:
Branch on λ1 + λ2• λ1 + λ2 = 1→ Feasible with |x| = 1
• λ1 + λ2 = 0→ Feasible with |x| = 1
Never more than one branch (2 nodes).
Ryan and Foster, 1981.
Discrete Alternatives: SOS1 branching of Beale and Tomlin 1970. Also SOS2 (B. and T, 70) and piecewise linear functions (Tomlin 1981).
SOS1:
Problem: Need to re-implement advanced branching selection (e.g. pseudocost ).
00
Constraint Branching is the Solution?
/30/30111010
∑t
i=1λi = 1 or
∑t
i=1λi = 0
�λi = 0 ∀i > t or λi = 0 ∀i ≤ t
0
Binary v/s Specialized Branching
/30111Weak Integer SOS2 Branching Mystery Integer
0
Binary v/s Specialized Branching
/30111
0 s37.5 s75 s112.5 s150 s
Med.Large
Weak Integer SOS2 Branching Mystery Integer
CPLEX 9: Basic SOS2 branching implementation (graph from Nemhauser, Keha and V. ‘08)
0
Binary v/s Specialized Branching
/30111
0 s37.5 s75 s112.5 s150 s
Med.Large
0 s500 s1,000 s1,500 s2,000 s
1632
Weak Integer SOS2 Branching Mystery Integer
CPLEX 9: Basic SOS2 branching implementation (graph from Nemhauser, Keha and V. ‘08)
CPLEX 11: Improved SOS2 branching implementation (graph from Nemhauser, Ahmed and V. ‘10)
0
Binary v/s Specialized Branching
/30111
0 s37.5 s75 s112.5 s150 s
Med.Large
0 s500 s1,000 s1,500 s2,000 s
1632
Weak Integer SOS2 Branching Mystery Integer
CPLEX 9: Basic SOS2 branching implementation (graph from Nemhauser, Keha and V. ‘08)
CPLEX 11: Improved SOS2 branching implementation (graph from Nemhauser, Ahmed and V. ‘10)
Formulation Step 1:Encoding Alternatives
∑n
i=1λi = 1∑n
i=1biλi = y
λ ∈ Rn+
y ∈ {0, 1}m
{bi}n
i=1= {0, 1}log2 n
0
Formulation for Discrete Alternatives
Li and Lu 2009, Adams and Henry 2011, V. and Nemhauser 2008.
Sommer, TIMS 1972.
Log = Binary Encoding
Other choices of lead to standard and incremental formulations
/30113
{bi}n
i=1
Unary Encoding
000000000000000000000000/////////////////////////333333333333333333333333333000000000000000000000000011111111111111111111111111111111111111111111111111444444444444444444444444444
⎛⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎝
1 0 0 0 0 0 0 00 1 0 0 0 0 0 00 0 1 0 0 0 0 00 0 0 1 0 0 0 00 0 0 0 1 0 0 00 0 0 0 0 1 0 00 0 0 0 0 0 1 00 0 0 0 0 0 0 1
⎞⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎠
λ = y,
�λi = yi
∑8
i=1λi = 1,
λ ∈ R8, y ∈ {0, 1}8
0
Binary Encoding
/30115
⎛⎝ 1 1 1 1 0 0 0 0
1 1 0 0 1 1 0 01 0 1 0 1 0 1 0
⎞⎠λ = y,
∑8
i=1λi = 1,
λ ∈ R8, y ∈ {0, 1}3
∑8
i=1λi = 1,
λ ∈ R8, y ∈ {0, 1}7
⇓
0
Incremental Encoding
/30116
y1 ≥ y2 ≥ . . . ≥ y7
⎛⎜⎜⎜⎜⎜⎜⎜⎜⎝
0 1 1 1 1 1 1 10 0 1 1 1 1 1 10 0 0 1 1 1 1 10 0 0 0 1 1 1 10 0 0 0 0 1 1 10 0 0 0 0 0 1 10 0 0 0 0 0 0 1
⎞⎟⎟⎟⎟⎟⎟⎟⎟⎠
λ = y,
min |x|s.t. ∑n
i=1λiαi = x∑n
i=1λi = 1∑n
i=1biλi = y
λ ∈ Rn+
y ∈ {0, 1}m
000
Example: Unary Encoding
//30117
1
min |x|s.t. ∑n
i=1λiαi = x∑n
i=1λi = 1∑n
i=1biλi = y
λ ∈ Rn+
y ∈ {0, 1}m
000
Example: Unary Encoding
//30117
⎛⎜⎜⎝1000
⎞⎟⎟⎠
⎛⎜⎜⎝0100
⎞⎟⎟⎠
⎛⎜⎜⎝0001
⎞⎟⎟⎠
⎛⎜⎜⎝0010
⎞⎟⎟⎠
1
min |x|s.t. ∑n
i=1λiαi = x∑n
i=1λi = 1∑n
i=1biλi = y
λ ∈ Rn+
y ∈ {0, 1}m
000
Example: Unary Encoding
//30117
⎛⎜⎜⎝1000
⎞⎟⎟⎠
⎛⎜⎜⎝0100
⎞⎟⎟⎠
⎛⎜⎜⎝0001
⎞⎟⎟⎠
⎛⎜⎜⎝0010
⎞⎟⎟⎠
+
1
=
⎛⎜⎜⎝y1y2y3y4
⎞⎟⎟⎠
min |x|s.t. ∑n
i=1λiαi = x∑n
i=1λi = 1∑n
i=1biλi = y
λ ∈ Rn+
y ∈ {0, 1}m
000
Example: Unary Encoding
//30117
⎛⎜⎜⎝1000
⎞⎟⎟⎠
⎛⎜⎜⎝0100
⎞⎟⎟⎠
⎛⎜⎜⎝0001
⎞⎟⎟⎠
⎛⎜⎜⎝0010
⎞⎟⎟⎠
1
=
⎛⎜⎜⎝y1y2y3y4
⎞⎟⎟⎠
min |x|s.t. ∑n
i=1λiαi = x∑n
i=1λi = 1∑n
i=1biλi = y
λ ∈ Rn+
y ∈ {0, 1}m
000
Example: Unary Encoding
//30117
⎛⎜⎜⎝1000
⎞⎟⎟⎠
⎛⎜⎜⎝0100
⎞⎟⎟⎠
⎛⎜⎜⎝0001
⎞⎟⎟⎠
⎛⎜⎜⎝0010
⎞⎟⎟⎠
y1 =
⎛ ⎞⎛0
⎞ ⎛1
⎞ ⎛0
⎞⎛0
⎞
1
=
⎛⎜⎜⎝y1y2y3y4
⎞⎟⎟⎠
min |x|s.t. ∑n
i=1λiαi = x∑n
i=1λi = 1∑n
i=1biλi = y
λ ∈ Rn+
y ∈ {0, 1}m
000
Example: Unary Encoding
//30117
⎛⎜⎜⎝1000
⎞⎟⎟⎠
⎛⎜⎜⎝0100
⎞⎟⎟⎠
⎛⎜⎜⎝0001
⎞⎟⎟⎠
⎛⎜⎜⎝0010
⎞⎟⎟⎠
1
⎛ ⎞
y1 =
⎛ ⎞⎛0
⎞⎛0
⎞ ⎛1
⎞ ⎛0
⎞
1
=
⎛⎜⎜⎝y1y2y3y4
⎞⎟⎟⎠
min |x|s.t. ∑n
i=1λiαi = x∑n
i=1λi = 1∑n
i=1biλi = y
λ ∈ Rn+
y ∈ {0, 1}m
000
Example: Unary Encoding
//30117
⎛⎜⎜⎝1000
⎞⎟⎟⎠
⎛⎜⎜⎝0100
⎞⎟⎟⎠
⎛⎜⎜⎝0001
⎞⎟⎟⎠
⎛⎜⎜⎝0010
⎞⎟⎟⎠
y1 =
⎛ ⎞⎛0
⎞ ⎛1
⎞ ⎛0
⎞⎛0
⎞
0
⎛ ⎞ ⎛ ⎞⎛ ⎞
1
=
⎛⎜⎜⎝y1y2y3y4
⎞⎟⎟⎠
min |x|s.t. ∑n
i=1λiαi = x∑n
i=1λi = 1∑n
i=1biλi = y
λ ∈ Rn+
y ∈ {0, 1}m
000
Example: Unary Encoding
//30117
⎛⎜⎜⎝1000
⎞⎟⎟⎠
⎛⎜⎜⎝0100
⎞⎟⎟⎠
⎛⎜⎜⎝0001
⎞⎟⎟⎠
⎛⎜⎜⎝0010
⎞⎟⎟⎠
y1 = y4 = 0
⎛0⎞ ⎛
0⎞⎛ ⎞
⎝0
⎠ ⎝0
⎠ ⎝ ⎠
1
=
⎛⎜⎜⎝y1y2y3y4
⎞⎟⎟⎠
min |x|s.t. ∑n
i=1λiαi = x∑n
i=1λi = 1∑n
i=1biλi = y
λ ∈ Rn+
y ∈ {0, 1}m
000
Example: Unary Encoding
//30117
⎛⎜⎜⎝1000
⎞⎟⎟⎠
⎛⎜⎜⎝0100
⎞⎟⎟⎠
⎛⎜⎜⎝0001
⎞⎟⎟⎠
⎛⎜⎜⎝0010
⎞⎟⎟⎠
y1 = y4 = 0
⎛0⎞ ⎛
0⎞⎛ ⎞
⎝0
⎠ ⎝0
⎠ ⎝ ⎠
1
=
⎛⎜⎜⎝y1y2y3y4
⎞⎟⎟⎠
Need n/2branches
l
min |x|s.t. ∑n
i=1λiαi = x∑n
i=1λi = 1∑n
i=1biλi = y
λ ∈ Rn+
y ∈ {0, 1}m
000
Example: Unary Encoding
//30117
⎛⎜⎜⎝1000
⎞⎟⎟⎠
⎛⎜⎜⎝0100
⎞⎟⎟⎠
⎛⎜⎜⎝0001
⎞⎟⎟⎠
⎛⎜⎜⎝0010
⎞⎟⎟⎠{ {
n/2 n/2
2k − 1
000
Example: Binary Encoding
//301188
1
⎛⎝001
⎞⎠
⎛⎝010
⎞⎠
⎛⎝000
⎞⎠ =
⎛⎝y1y2y3
⎞⎠
. . .
{
2k − 1
000
Example: Binary Encoding
//301188
1
⎛⎝001
⎞⎠
⎛⎝010
⎞⎠
⎛⎝000
⎞⎠ =
⎛⎝y1y2y3
⎞⎠
. . .
{
y1 = y2 = 0
⎛⎝
⎞⎠
⎛⎝⎛⎛ ⎞
⎠
2k − 1
000
Example: Binary Encoding
//301188
1
⎛⎝001
⎞⎠
⎛⎝010
⎞⎠
⎛⎝000
⎞⎠ =
⎛⎝y1y2y3
⎞⎠
. . .
{
y1 = y2 = 0
⎛⎝
⎞⎠
⎛⎝⎛⎛ ⎞
⎠
Best Bound = 0 unless:
yi = 0 ∀i
2k − 1
Need k = log2 nbranches (n nodes)
000
Example: Binary Encoding
//301188
1
⎛⎝001
⎞⎠
⎛⎝010
⎞⎠
⎛⎝000
⎞⎠ =
⎛⎝y1y2y3
⎞⎠
. . .
{
y1 = y2 = 0
⎛⎝
⎞⎠
⎛⎝⎛⎛ ⎞
⎠
Best Bound = 0 unless:
yi = 0 ∀i
000
Example: Incremental Encoding
//301199
1
000
Example: Incremental Encoding
//301199
1
⎛⎜⎜⎝0000
⎞⎟⎟⎠
⎛⎜⎜⎝1100
⎞⎟⎟⎠
⎛⎜⎜⎝1111
⎞⎟⎟⎠
⎛⎜⎜⎝1110
⎞⎟⎟⎠ =
⎛⎜⎜⎝y1y2y3y4
⎞⎟⎟⎠
⎛⎜⎜⎝1000
⎞⎟⎟⎠
000
Example: Incremental Encoding
//301199
1
⎛⎜⎜⎝0000
⎞⎟⎟⎠
⎛⎜⎜⎝1100
⎞⎟⎟⎠
⎛⎜⎜⎝1111
⎞⎟⎟⎠
⎛⎜⎜⎝1110
⎞⎟⎟⎠ =
⎛⎜⎜⎝y1y2y3y4
⎞⎟⎟⎠
⎛⎜⎜⎝1000
⎞⎟⎟⎠
y3 = 1 ∨ y3 = 0
⎝ ⎠⎜⎝⎜⎜ ⎟⎟⎟⎟⎠ ⎜⎜⎜⎜ ⎟⎟⎟⎟ ⎜⎜⎜⎜⎝1
⎟⎟⎟⎟⎠⎜⎜⎜⎜⎝ ⎟⎟⎟⎟⎠ =⎜⎜⎜⎜⎝ ⎟⎠⎟⎟⎜⎜⎜⎜⎝ ⎟⎟⎟⎟⎠
yi∗ = 0 ∨ yi∗ = 1
Only need1 branch!
Best Bound = 1 if:
000
Example: Incremental Encoding
//301199
1
⎛⎜⎜⎝0000
⎞⎟⎟⎠
⎛⎜⎜⎝1100
⎞⎟⎟⎠
⎛⎜⎜⎝1111
⎞⎟⎟⎠
⎛⎜⎜⎝1110
⎞⎟⎟⎠ =
⎛⎜⎜⎝y1y2y3y4
⎞⎟⎟⎠
⎛⎜⎜⎝1000
⎞⎟⎟⎠
y3 = 1 ∨ y3 = 0
⎝ ⎠⎜⎝⎜⎜ ⎟⎟⎟⎟⎠ ⎜⎜⎜⎜ ⎟⎟⎟⎟ ⎜⎜⎜⎜⎝1
⎟⎟⎟⎟⎠⎜⎜⎜⎜⎝ ⎟⎟⎟⎟⎠ =⎜⎜⎜⎜⎝ ⎟⎠⎟⎟⎜⎜⎜⎜⎝ ⎟⎟⎟⎟⎠
0
Induced Constraint Branching
/30220
⎛⎝ 0 1 1 1
0 0 1 10 0 0 1
⎞⎠λ = y
Incremental
(0 0 1 10 1 0 1
)λ = y
Binary
0
Induced Constraint Branching
/30220
⎛⎝ 0 1 1 1
0 0 1 10 0 0 1
⎞⎠λ = y
Incremental
→ λ1 =λ2 = 0
or
λ3 =λ4 = 0
SOS1 Branching
(0 0 1 10 1 0 1
)λ = y
Binary
⎛⎝⎛ ⎞
⎠⎞
0
Induced Constraint Branching
/30220
⎛⎝ 0 1 1 1
0 0 1 10 0 0 1
⎞⎠λ = y
Incremental
→ λ1 =λ2 = 0
or
λ3 =λ4 = 0
SOS1 Branching
(0 0 1 10 1 0 1
)λ = y
Binary
→ λ1 =λ2 = 0
or
λ3 =λ4 = 0
SOS1 Branching( )
0
Induced Constraint Branching
/30220
⎛⎝ 0 1 1 1
0 0 1 10 0 0 1
⎞⎠λ = y
Incremental
→ λ1 =λ2 = 0
or
λ3 =λ4 = 0
SOS1 Branching
(0 0 1 10 1 0 1
)λ = y
Binary
→( )Odd/Even Branching
λ1 =λ3 = 0
or
λ2 =λ4 = 0
Formulation Step 2:Combining with Strong Formulation
n∑i=1
∑v∈ext(P i)
vλiv = x
∑v∈ext(P i)
λiv =
n∑i=1
yi = 1
y ∈ {0, 1}, λiv ≥ 0
n∑i=1
yi
yi
0
Long Lost Integral Formulation
Jeroslow and Lowe 1984./30222
{P i
}n
i=1polytopes
x ∈n⋃
i=1
P i ⇔
Also for general polyhedrawith common recession cones.
1
n
n∑i=1
∑v∈ext(P i)
vλiv = x
∑v∈ext(P i)
λiv =
n∑i=1
yi = 1
y ∈ {0, 1}, λiv ≥ 0
n∑i=1
yi
yi
0
Combining with Alternative Encoding
Jeroslow and Lowe 1984./30223
{P i
}n
i=1polytopes
x ∈n⋃
i=1
P i ⇔
Also for general polyhedrawith common recession cones.
1
n
n∑i=1
∑v∈ext(P i)
vλiv = x
∑v∈ext(P i)
λiv =
n∑i=1
yi = 1
y ∈ {0, 1}, λiv ≥ 0
n∑i=1
yn∑
i=1
∑v∈ext(P i)
biλiv
0
Combining with Alternative Encoding
Jeroslow and Lowe 1984./30224
{P i
}n
i=1polytopes
x ∈n⋃
i=1
P i ⇔
Also for general polyhedrawith common recession cones.
m
1
n∑i=1
∑v∈ext(P i)
vλiv = x
∑v∈ext(P i)
λiv =
n∑i=1
yi = 1
y ∈ {0, 1}, λiv ≥ 0
n∑i=1
yn∑
i=1
∑v∈ext(P i)
biλiv
0
Combining with Alternative Encoding
/30224
{P i
}n
i=1polytopes
x ∈n⋃
i=1
P i ⇔
Also for general polyhedrawith common recession cones.
m
1
V., Ahmed and Nemhauser 2010; V. 2012.
Univariate Transportation Problems
00//3300222255
DiscontinuousPiecewise Linear
Disc. PWL+
“Semicontinuous”
0
Piecewise Linear
/30226
Unary Incremental / Strong Integer Binary / Mystery Integer
0
Piecewise Linear
/30226
0
20
40
60
80
816
32
Unary Incremental / Strong Integer Binary / Mystery Integer
0
Piecewise Linear
/30227
0
1000
2000
3000
4000
48
16
Unary Incremental / Strong Integer Binary / Mystery Integer
000
Combining Codes for Multivariate
//3022288
01
01
0 1
y1
y2
y3
000
Combining Codes for Multivariate
//3022299
01
01
0 1
01
0
0 1 0 1
000
Combining Codes for Multivariate
//3033330010
01
01
0 1
01
y1
y2
y3
0
0 1 0 1
000
Combining Codes for Multivariate
/303311
0
01
01
0 1
01
y1
y2
y3
0
0 1 0 1
000
Combining Codes for Multivariate
/303311
00
01
01
0 1
01
y1
y2
y3
0
0 1 0 1
000
Combining Codes for Multivariate
//30333221
0 0
01
01
0 1
01
y1
y2
y3
0
0 1 0 1
000
Combining Codes for Multivariate
//3033333
10 0
01
01
0 1
01
y1
y2
y3
0
0 1 0 1
000
Combining Codes for Multivariate
//3033333
10 0 1
01
01
0 1
01
y1
y2
y3
0
0 1 0 1
000
Combining Codes for Multivariate
//3033344
10 0 1
01
01
0 1
01
y1
y2
y3
0
0 1 0 1
000
Combining Codes for Multivariate
//3033344
10 0 10 1 0 1
10 0 1
01
01
0 1
01
y1
y2
y3
0
0 1 0 1
000
Combining Codes for Multivariate
//3033355
10 0 10 1 0 1
10 0 1
01
01
0 1
01
y1
y2
y3
0
0 1 0 1
000
Combining Codes for Multivariate
//30333366
10 0 10 1 0 1
10 0 1
01
01
0 1
01
0
y1
y2
y3
0 1 0 1
000
Combining Codes for Multivariate
//30333366
10 0 10 1 0 1
10 0 1
01
01
0 1
01
0000
y1
y2
y3
0 1 0 1
000
Combining Codes for Multivariate
//303337
10 0 10 1 0 1
10 0 1
01
01
0 1
01
0 000
1
y1
y2
y3
0 1 0 1
000
Combining Codes for Multivariate
//303337
10 0 10 1 0 1
10 0 1
01
01
0 1
01
0 000
11
y1
y2
y3
0 1 0 1
000
Combining Codes for Multivariate
//30333388
10 0 10 1 0 1
10 0 1
01
01
0 1
01
0 000
1
1
y1
y2
y3
0 1 0 1
000
Combining Codes for Multivariate
//30333388
10 0 10 1 0 1
10 0 1
01
01
0 1
01
0 000
1
1111
y1
y2
y3
0 1 0 1
000
Combining Codes for Multivariate
//30333399
10 0 10 1 0 1
10 0 1
01
01
0 1
01
0 000
1
1 111
y1
y2
y3
0 1 0 1
000
Combining Codes for Multivariate
//30333399
10 0 10 1 0 1
10 0 1
01
01
0 1
01
0 000
1
1 111
y1
y2
y3 y1
y2
y3
0 1 0 1
000
Combining Codes for Multivariate
//30444400
10 0 10 1 0 1
10 0 1
01
01
0 1
01
0 000
1
1 111
y1
y2
y3
y1
y2
y3
0 1 0 1
000
Combining Codes for Multivariate
//30444400
10 0 10 1 0 1
10 0 1
01
01
0 1
01
0 000
1
1 111
y1
y2
y3
y1
y2
y3
Binary
0 1 0 1
000
Combining Codes for Multivariate
//30444400
10 0 10 1 0 1
10 0 1
01
01
0 1
01
0 000
1
1 111
y1
y2
y3
y1
y2
y3
0
10
10
1
Binary
0 1 0 1
000
Combining Codes for Multivariate
//30444400
10 0 10 1 0 1
10 0 1
01
01
0 1
01
0 000
1
1 111
y1
y2
y3
y1
y2
y3
0
10
10
1
Binary
01
11
00
11
00
01
01
01 →
Incremental Diagonal
0
Incremental “Delta” Formulation
P1
P2
P3
v22
v21
v23 v24
v25
v13
v31
v11
v12
Yıldız and V. ‘12 (Generalization of Lee and Wilson 1999)
x = v11 +k∑
i=1
ri∑j=2
(vij − vi1
)δij
+
k∑i=2
(vi1 − vi−1
ri
)yi
δij ∈ [0, 1], yi ∈ {0, 1}
/309229
0
Incremental “Delta” Formulation
P1
P2
P3
v22
v21
v23 v24
v25
v13
v31
v11
v12
ri∑j=2
δij ≤ 1, δij ≥ 0
Yıldız and V. ‘12 (Generalization of Lee and Wilson 1999)
x = v11 +k∑
i=1
ri∑j=2
(vij − vi1
)δij
+
k∑i=2
(vi1 − vi−1
ri
)yi
/309229
0
Incremental “Delta” Formulation
P1
P2
P3
v22
v21
v23 v24
v25
v13
v31
v11
v12
ri∑j=2
δij ≤ yi
2
Yıldız and V. ‘12 (Generalization of Lee and Wilson 1999)
x = v11 +k∑
i=1
ri∑j=2
(vij − vi1
)δij
+
k∑i=2
(vi1 − vi−1
ri
)yi
/309229
0
Incremental “Delta” Formulation
P1
P2
P3
v22
v21
v23 v24
v25
v13
v31
v11
v12yi+1 ≤ δiri , yi+1 ≤ yi
2
1
Yıldız and V. ‘12 (Generalization of Lee and Wilson 1999)
x = v11 +k∑
i=1
ri∑j=2
(vij − vi1
)δij
+
k∑i=2
(vi1 − vi−1
ri
)yi
/309229
0
Summary, Extensions and More. Effective formulations: Encode and Formulate
Best encoding? Why not try a few.
Smaller formulations for shared vertex case
Need encodings with special structure.
Where to find more:
15.099 Spring ’13: Theory / Practice.
Survey: V., “MIP Formulation Techniques”./30330