tutorial - integer programming for constraint …tutorial integer programming for constraint...
TRANSCRIPT
![Page 1: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/1.jpg)
TutorialInteger Programming forConstraint Programmers
Ambros Gleixner and Stefan HeinzZuse Institute Berlin (ZIB)
Chris Beck, Timo Berthold, and Kati Wolter
DFG Research Center MATHEON
Mathematics for key technologies
CP 2011, 14/Sep/2011
![Page 2: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/2.jpg)
ZIB – Zuse Institute Berlin
. Non-university research institute of the state of Berlin (Germany)
. Research Units:I Numerical Mathematics
I Numerical analysis and modelingI Visualization and data analysis
I Discrete MathematicsI OptimizationI Scientific Information
I Computer ScienceI Parallel and Distributed SystemsI Supercomputing http://www.zib.de
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 1 / 62
![Page 3: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/3.jpg)
CPAIOR 2011
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 2 / 62
![Page 4: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/4.jpg)
CPAIOR 2012
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 3 / 62
![Page 5: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/5.jpg)
Outline
Integer Programming for Constraint Programmers
1 Introduction
2 Linear programming
3 Integer (linear) programming
4 Summary
5 Discussion
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 4 / 62
![Page 6: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/6.jpg)
Problem description
Definition
The steel mill slab problem consists of assigning colored, sized ordersto slabs of certain different capacities such that the total loss isminimized and at most two different colors are present in each slab.
1
2
3
Orders
+
. . .
. . .
1
2
3
4
5
Slabs
→
0 2 0 0 0Assignment
. Problem number 38 of the CSPLib (http://www.csplib.org/)
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 5 / 62
![Page 7: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/7.jpg)
Problem description
Definition
The steel mill slab problem consists of assigning colored, sized ordersto slabs of certain different capacities such that the total loss isminimized and at most two different colors are present in each slab.
1
2
3
Orders
+
. . .
. . .
1
2
3
4
5
Slabs
→
0 2 0 0 0Assignment
. Problem number 38 of the CSPLib (http://www.csplib.org/)
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 5 / 62
![Page 8: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/8.jpg)
Problem description
Definition
The steel mill slab problem consists of assigning colored, sized ordersto slabs of certain different capacities such that the total loss isminimized and at most two different colors are present in each slab.
1
2
3
Orders
+
. . .
. . .
1
2
3
4
5
Slabs
→
0 2 0 0 0Assignment
. Problem number 38 of the CSPLib (http://www.csplib.org/)Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 5 / 62
![Page 9: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/9.jpg)
(A) Constraint programming formulation
Given
. K set of possible capacities for the slabs
. C set of colors
. O set of orders, |O| = nI si size of order iI ci color of order i
Binary variables
. yij = 1 if order i is assigned to slab j
. zcj = 1 if color c is used in slab j
Observation
. We need at most n slabs
. Let S be the set of slabs
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 6 / 62
![Page 10: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/10.jpg)
Leftover array
. Array storing the leftover depending on the load
L[i ] = argmin{k − i | k ∈ K and k ≥ i}
for i = 0, . . . ,Kmax
. Kmax := max{k | k ∈ K}
Example1 2 3 4 5
L =
0 0 3 2 1 0
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 7 / 62
![Page 11: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/11.jpg)
Leftover array
. Array storing the leftover depending on the load
L[i ] = argmin{k − i | k ∈ K and k ≥ i}
for i = 0, . . . ,Kmax
. Kmax := max{k | k ∈ K}
Example1 2 3 4 5
L = 0
0 3 2 1 0
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 7 / 62
![Page 12: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/12.jpg)
Leftover array
. Array storing the leftover depending on the load
L[i ] = argmin{k − i | k ∈ K and k ≥ i}
for i = 0, . . . ,Kmax
. Kmax := max{k | k ∈ K}
Example1 2 3 4 5
L = 0 0
3 2 1 0
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 7 / 62
![Page 13: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/13.jpg)
Leftover array
. Array storing the leftover depending on the load
L[i ] = argmin{k − i | k ∈ K and k ≥ i}
for i = 0, . . . ,Kmax
. Kmax := max{k | k ∈ K}
Example1 2 3 4 5
L = 0 0 3
2 1 0
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 7 / 62
![Page 14: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/14.jpg)
Leftover array
. Array storing the leftover depending on the load
L[i ] = argmin{k − i | k ∈ K and k ≥ i}
for i = 0, . . . ,Kmax
. Kmax := max{k | k ∈ K}
Example1 2 3 4 5
L = 0 0 3 2
1 0
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 7 / 62
![Page 15: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/15.jpg)
Leftover array
. Array storing the leftover depending on the load
L[i ] = argmin{k − i | k ∈ K and k ≥ i}
for i = 0, . . . ,Kmax
. Kmax := max{k | k ∈ K}
Example1 2 3 4 5
L = 0 0 3 2 1
0
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 7 / 62
![Page 16: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/16.jpg)
Leftover array
. Array storing the leftover depending on the load
L[i ] = argmin{k − i | k ∈ K and k ≥ i}
for i = 0, . . . ,Kmax
. Kmax := max{k | k ∈ K}
Example1 2 3 4 5
L = 0 0 3 2 1 0
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 7 / 62
![Page 17: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/17.jpg)
(A) Constraint programming formulation
min∑j∈S
L[∑
i∈O
si yij
]subject to
∑j∈S
yij = 1 ∀i ∈ O∑i∈O
si yij ≤ Kmax ∀j ∈ S
yij ≤ zci j ∀i ∈ O ∀j ∈ S∑c∈C
zcj ≤ 2 ∀j ∈ S
yij , zcj ∈ {0, 1} ∀i ∈ O ∀c ∈ C ∀j ∈ S
. element constraint
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 8 / 62
![Page 18: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/18.jpg)
(A) Constraint programming formulation
min∑j∈S
L[∑
i∈O
si yij
]subject to
∑j∈S
yij = 1 ∀i ∈ O∑i∈O
si yij ≤ Kmax ∀j ∈ S
yij ≤ zci j ∀i ∈ O ∀j ∈ S∑c∈C
zcj ≤ 2 ∀j ∈ S
yij , zcj ∈ {0, 1} ∀i ∈ O ∀c ∈ C ∀j ∈ S
Assignment
. element constraint
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 8 / 62
![Page 19: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/19.jpg)
(A) Constraint programming formulation
min∑j∈S
L[∑
i∈O
si yij
]subject to
∑j∈S
yij = 1 ∀i ∈ O∑i∈O
si yij ≤ Kmax ∀j ∈ S
yij ≤ zci j ∀i ∈ O ∀j ∈ S∑c∈C
zcj ≤ 2 ∀j ∈ S
yij , zcj ∈ {0, 1} ∀i ∈ O ∀c ∈ C ∀j ∈ S
Capacity
. element constraint
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 8 / 62
![Page 20: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/20.jpg)
(A) Constraint programming formulation
min∑j∈S
L[∑
i∈O
si yij
]subject to
∑j∈S
yij = 1 ∀i ∈ O∑i∈O
si yij ≤ Kmax ∀j ∈ S
yij ≤ zci j ∀i ∈ O ∀j ∈ S∑c∈C
zcj ≤ 2 ∀j ∈ S
yij , zcj ∈ {0, 1} ∀i ∈ O ∀c ∈ C ∀j ∈ S
Coloring
. element constraint
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 8 / 62
![Page 21: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/21.jpg)
(A) Constraint programming formulation
min∑j∈S
L[∑
i∈O
si yij
]subject to
∑j∈S
yij = 1 ∀i ∈ O∑i∈O
si yij ≤ Kmax ∀j ∈ S
yij ≤ zci j ∀i ∈ O ∀j ∈ S∑c∈C
zcj ≤ 2 ∀j ∈ S
yij , zcj ∈ {0, 1} ∀i ∈ O ∀c ∈ C ∀j ∈ S
Leftover
. element constraint
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 8 / 62
![Page 22: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/22.jpg)
(An) Integer programming formulation
Given
. K set of possible capacities for the slabs
. C set of colors
. O set of orders, |O| = nI si size of order iI ci color of order i
Binary variables
. xkj = 1 if capacity k is assigned to slab j
. yij = 1 if order i is assigned to slab j
. zcj = 1 if color c is used in slab j
Observation
. We need at most n slabs
. Let S be the set of slabs
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 9 / 62
![Page 23: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/23.jpg)
(An) Integer programming formulation
min∑j∈S
∑k∈K
k xkj −∑i∈O
si
subject to∑k∈K
xkj = 1 ∀j ∈ S∑j∈S
yij = 1 ∀i ∈ O∑i∈O
si yij ≤∑k∈K
k xkj ∀j ∈ S
yij ≤ zci j ∀i ∈ O ∀j ∈ S∑c∈C
zcj ≤ 2 ∀j ∈ S
xkj , yij , zcj ∈ {0, 1} ∀k ∈ K ∀i ∈ O ∀c ∈ C ∀j ∈ S
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 10 / 62
![Page 24: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/24.jpg)
(An) Integer programming formulation
min∑j∈S
∑k∈K
k xkj −∑i∈O
si
subject to∑k∈K
xkj = 1 ∀j ∈ S∑j∈S
yij = 1 ∀i ∈ O∑i∈O
si yij ≤∑k∈K
k xkj ∀j ∈ S
yij ≤ zci j ∀i ∈ O ∀j ∈ S∑c∈C
zcj ≤ 2 ∀j ∈ S
xkj , yij , zcj ∈ {0, 1} ∀k ∈ K ∀i ∈ O ∀c ∈ C ∀j ∈ S
Assignment
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 10 / 62
![Page 25: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/25.jpg)
(An) Integer programming formulation
min∑j∈S
∑k∈K
k xkj −∑i∈O
si
subject to∑k∈K
xkj = 1 ∀j ∈ S∑j∈S
yij = 1 ∀i ∈ O∑i∈O
si yij ≤∑k∈K
k xkj ∀j ∈ S
yij ≤ zci j ∀i ∈ O ∀j ∈ S∑c∈C
zcj ≤ 2 ∀j ∈ S
xkj , yij , zcj ∈ {0, 1} ∀k ∈ K ∀i ∈ O ∀c ∈ C ∀j ∈ S
Capacity
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 10 / 62
![Page 26: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/26.jpg)
(An) Integer programming formulation
min∑j∈S
∑k∈K
k xkj −∑i∈O
si
subject to∑k∈K
xkj = 1 ∀j ∈ S∑j∈S
yij = 1 ∀i ∈ O∑i∈O
si yij ≤∑k∈K
k xkj ∀j ∈ S
yij ≤ zci j ∀i ∈ O ∀j ∈ S∑c∈C
zcj ≤ 2 ∀j ∈ S
xkj , yij , zcj ∈ {0, 1} ∀k ∈ K ∀i ∈ O ∀c ∈ C ∀j ∈ S
Coloring
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 10 / 62
![Page 27: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/27.jpg)
(An) Integer programming formulation
min∑j∈S
∑k∈K
k xkj −∑i∈O
si
subject to∑k∈K
xkj = 1 ∀j ∈ S∑j∈S
yij = 1 ∀i ∈ O∑i∈O
si yij ≤∑k∈K
k xkj ∀j ∈ S
yij ≤ zci j ∀i ∈ O ∀j ∈ S∑c∈C
zcj ≤ 2 ∀j ∈ S
xkj , yij , zcj ∈ {0, 1} ∀k ∈ K ∀i ∈ O ∀c ∈ C ∀j ∈ S
Leftover
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 10 / 62
![Page 28: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/28.jpg)
###################### data p a r s i n g#####################
# number o f c a p a c i t i e sparam n c a p a c i t y := r e a d DATAFILE as ”1n” use 1 ;do p r i n t ” n c a p a c i t y = ” , n c a p a c i t y ;
# number o f c o l o r sparam n c o l o r s := r e a d DATAFILE as ”1n” s k i p 1 use 1 ;do p r i n t ” n c o l o r s = ” , n c o l o r s ;
# number o f o r d e r n sparam n o r d e r s := r e a d DATAFILE as ”1n” s k i p 2 use 1 ;do p r i n t ” n o r d e r s = ” , n o r d e r s ;
# g e t t h e c a p a c i t y a r r a ys e t tmp := { r e a d DATAFILE as ”<n+>” use 1} ;s e t c a p a c i t i e s := i f c a r d ( tmp ) == n c a p a c i t y then tmp u n i o n {0} e l s e tmp u n i o n {0} \ { n c a p a c i t y } end ;do check n c a p a c i t y == c a r d ( c a p a c i t i e s )−1;do p r i n t c a p a c i t i e s ;
# i n d e x s e t f o r o r d e r ss e t I := { 1 . . n o r d e r s } ;
# i n d e x s e t f o r c o l o r ss e t C := { 1 . . n c o l o r s } ;
# g e t o r d e r ss e t o r d e r s [< i> i n I ] := { r e a d DATAFILE as ”<1n , 2 n>” s k i p 2+ i use 1} ;
#do f o r a l l <i> i n I do p r i n t o r d e r s [ i ] ;
###################### d e c i s i o n v a r i a b l e s#####################
# s l a b v a r i a b l e s which c a p a c i t i e s i s a s s i g n e d to which s l a bv a r x [ I ∗ c a p a c i t i e s ] b i n a r y ;
# which o r d e r i s a s s i g n e d to which s l a bv a r y [ I ∗ I ] b i n a r y ;
# which c o l o r i s used by which s l a bv a r z [ C ∗ I ] ;
###################### o b j e c t i v e f u n c t i o n#####################
m i n i m i z e l e f t o v e r :sum <s , c> i n I ∗ c a p a c i t i e s : c ∗ x [ s , c ] − sum <o , s> i n I ∗ I : o rd ( o r d e r s [ o ] , 1 , 1 ) ∗ y [ o , s ] ;
###################### c o n s t r a i n t s#####################
# each s l a b g e t s e x a c t l y one c a p a c i t i e ss u b t o o n e C a p a c i t y :
f o r a l l <s> i n I : sum <c> i n c a p a c i t i e s : x [ s , c ] == 1 ;
# each o r d e r i s a s s i g n e d to e x a c t l y one s l a bs u b t o o n e S l a b :
f o r a l l <o> i n I : sum <s> i n I : y [ o , s ] == 1 ;
# each s l a b i s not o v e r l o a d e ds u b t o C a p a c i t y :
f o r a l l <s> i n I : sum <c> i n c a p a c i t i e s : c ∗ x [ s , c ] − sum <o> i n I : o rd ( o r d e r s [ o ] , 1 , 1 ) ∗ y [ o , s ] >= 0 ;
# c o l o r l i n k i n g c o n s t r a i n t ss u b t o l i n k i n g :
f o r a l l <o , s> i n I ∗ I : y [ o , s ] − z [ ord ( o r d e r s [ o ] , 1 , 2 ) , s ] <= 0 ;
# c o l o r l i n k i n g c o n s t r a i n t ss u b t o C o l o r :
f o r a l l <s> i n I : sum <c> i n C : z [ c , s ] <= 2 ;
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 11 / 62
![Page 29: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/29.jpg)
Linear programming relaxation
Integer program
→
Linear program relaxation
min{IP} ≥ min{LP}
max{IP} ≤ max{LP}
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 12 / 62
![Page 30: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/30.jpg)
Linear programming relaxation. Omit integrality condition
min∑j∈S
∑k∈K
k xkj −∑i∈O
si
subject to∑k∈K
xkj = 1 ∀j ∈ S∑j∈S
yij = 1 ∀i ∈ O∑i∈O
si yij ≤∑k∈K
k xkj ∀j ∈ S
yij ≤ zci j ∀i ∈ O ∀j ∈ S∑c∈C
zcj ≤ 2 ∀j ∈ S
xkj , yij , zcj ∈ [0, 1] ∀k ∈ K ∀i ∈ O ∀c ∈ C ∀j ∈ S
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 13 / 62
![Page 31: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/31.jpg)
Root node solution
1
2
3
Orders
+
. . .
. . .
1
2
3
4
5
Slabs
→
0 0 0 0 0Assignment
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 14 / 62
![Page 32: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/32.jpg)
Root node solution
Capacitiesx51 = 0.8
x01 = 0.2
x52 = 0.6
x02 = 0.4
x53 = 0.4
x03 = 0.6
x04 = 1.0
x06 = 1.0
Assignmentsy11 = 1.0
y23 = 1.0
y31 = 1.0
y41 = 1.0
y52 = 1.0
Colorsz11 = 1.0
z23 = 1.0
z31 = 1.0
z32 = 1.0
z33 = 1.0
z34 = 1.0
z35 = 1.0
z42 = 1.0
. Remaining decission variables are zero
. Observation: Independently of the problem instance the root LPvalue for this model is always zero.
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 15 / 62
![Page 33: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/33.jpg)
Root node solution
Capacitiesx51 = 0.8
x01 = 0.2
x52 = 0.6
x02 = 0.4
x53 = 0.4
x03 = 0.6
x04 = 1.0
x06 = 1.0
Assignmentsy11 = 1.0
y23 = 1.0
y31 = 1.0
y41 = 1.0
y52 = 1.0
Colorsz11 = 1.0
z23 = 1.0
z31 = 1.0
z32 = 1.0
z33 = 1.0
z34 = 1.0
z35 = 1.0
z42 = 1.0
. Remaining decission variables are zero
. Observation: Independently of the problem instance the root LPvalue for this model is always zero.
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 15 / 62
![Page 34: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/34.jpg)
node left depth frac curdualbound dualbound primalbound1 0 0 6 0.000000e+00 0.000000e+00 --
1 2 0 6 0.000000e+00 0.000000e+00 --2 3 1 4 0.000000e+00 0.000000e+00 --3 4 2 6 1.000000e+00 0.000000e+00 --4 5 2 2 0.000000e+00 0.000000e+00 --
* 5 2 3 - 1.000000e+00 0.000000e+00 1.000000e+006 3 3 2 0.000000e+00 0.000000e+00 1.000000e+007 4 4 2 0.000000e+00 0.000000e+00 1.000000e+008 3 5 - -- 0.000000e+00 1.000000e+009 2 5 - -- 0.000000e+00 1.000000e+00
10 3 1 2 4.440892e-16 0.000000e+00 1.000000e+0011 4 2 2 4.440892e-16 0.000000e+00 1.000000e+0012 5 2 4 4.440892e-16 0.000000e+00 1.000000e+0013 6 3 4 1.776357e-15 0.000000e+00 1.000000e+0014 7 4 4 1.776357e-15 0.000000e+00 1.000000e+00
node left depth frac curdualbound dualbound primalbound15 8 3 4 1.184238e-15 0.000000e+00 1.000000e+0016 7 4 - -- 0.000000e+00 1.000000e+0017 6 5 - -- 0.000000e+00 1.000000e+0018 7 3 2 4.440892e-16 0.000000e+00 1.000000e+0019 8 4 4 8.881784e-16 0.000000e+00 1.000000e+0020 7 5 - -- 0.000000e+00 1.000000e+0021 6 5 - -- 0.000000e+00 1.000000e+0022 5 4 - -- 0.000000e+00 1.000000e+0023 6 4 2 1.184238e-15 0.000000e+00 1.000000e+0024 5 5 - -- 0.000000e+00 1.000000e+0025 4 5 - -- 0.000000e+00 1.000000e+0026 3 4 - -- 0.000000e+00 1.000000e+0027 2 5 - -- 0.000000e+00 1.000000e+0028 1 3 - -- 0.000000e+00 1.000000e+0029 0 4 - -- 1.000000e+00 1.000000e+00
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 16 / 62
![Page 35: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/35.jpg)
Search tree1 2 3 4
#1
0
#10
#12
0
#15
0
#16≥ 1
#23
0
#24≥ 1
#27≥ 1
#18
0
#19
0
#20≥ 1
#21≥ 1
#26≥ 1
#11
0
#13
0
#14
0
#17≥ 1
#25≥ 1
#22≥ 1
#28≥ 1
#2
0
#4
0
#6
#7
0
#8≥ 1
#9
#29
#5
1
#3
1
Node 1Lower bound: 0
Node 2Lower bound: 0
x52
Node 3Lower bound: 1
x52, x53
Node 4Lower bound: 0
x52, x53
Node 5Lower bound: 1
x52, x53, x51
Node 6Lower bound: 0
x52, x53, x51
Node 7Lower bound: 0x52, x53, x51, x55
Node 29Lower bound: ≥ 1
x52, x53, x51, x55
Node 8Lower bound: ≥ 1
x52, x53, x51, x55, x54
Node 9Lower bound: ≥ 1
x52, x53, x51, x55, x54
Node 10Lower bound: 0
x52
Node 11Lower bound: 0
x52, x51
Node 12Lower bound: 0
x52, x51
Node 15Lower bound: 0
x52, x51, x54
Node 16Lower bound: ≥ 1
x52, x51, x54, x55
Node 23Lower bound: 0x52, x51, x54, x55
Node 24Lower bound: ≥ 1
x52, x51, x54, x55, x53
Node 27Lower bound: ≥ 1
x52, x51, x54, x55, x53
Node 18Lower bound: 0
x52, x51, x54
Node 19Lower bound: 0x52, x51, x54, x53
Node 20Lower bound: ≥ 1
x52, x51, x54, x53, x55
Node 21Lower bound: ≥ 1
x52, x51, x54, x53, x55
Node 26Lower bound: ≥ 1
x52, x51, x54, x53
Node 16Lower bound: ≥ 10
x52, x51, x54, x53
Node 13Lower bound: 0
x52, x51, x53
Node 28Lower bound: ≥ 1
x52, x51, x53
Node 14Lower bound: 0x52, x51, x53, x54
Node 22Lower bound: ≥ 1
x52, x51, x53, x54
Node 17Lower bound: ≥ 1
x52, x51, x53, x54, x55
Node 25Lower bound: ≥ 1
x52, x51, x53, x54, x55
Statistic with LPTotal nodes: 29Max depth: 5
Statistic without LPTotal nodes: 2154
Max depth: 21
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 17 / 62
![Page 36: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/36.jpg)
Search tree1 2 3 4
#1
0
#10
#12
0
#15
0
#16≥ 1
#23
0
#24≥ 1
#27≥ 1
#18
0
#19
0
#20≥ 1
#21≥ 1
#26≥ 1
#11
0
#13
0
#14
0
#17≥ 1
#25≥ 1
#22≥ 1
#28≥ 1
#2
0
#4
0
#6
#7
0
#8≥ 1
#9
#29
#5
1
#3
1
Node 1Lower bound: 0
Node 2Lower bound: 0
x52
Node 3Lower bound: 1
x52, x53
Node 4Lower bound: 0
x52, x53
Node 5Lower bound: 1
x52, x53, x51
Node 6Lower bound: 0
x52, x53, x51
Node 7Lower bound: 0x52, x53, x51, x55
Node 29Lower bound: ≥ 1
x52, x53, x51, x55
Node 8Lower bound: ≥ 1
x52, x53, x51, x55, x54
Node 9Lower bound: ≥ 1
x52, x53, x51, x55, x54
Node 10Lower bound: 0
x52
Node 11Lower bound: 0
x52, x51
Node 12Lower bound: 0
x52, x51
Node 15Lower bound: 0
x52, x51, x54
Node 16Lower bound: ≥ 1
x52, x51, x54, x55
Node 23Lower bound: 0x52, x51, x54, x55
Node 24Lower bound: ≥ 1
x52, x51, x54, x55, x53
Node 27Lower bound: ≥ 1
x52, x51, x54, x55, x53
Node 18Lower bound: 0
x52, x51, x54
Node 19Lower bound: 0x52, x51, x54, x53
Node 20Lower bound: ≥ 1
x52, x51, x54, x53, x55
Node 21Lower bound: ≥ 1
x52, x51, x54, x53, x55
Node 26Lower bound: ≥ 1
x52, x51, x54, x53
Node 16Lower bound: ≥ 10
x52, x51, x54, x53
Node 13Lower bound: 0
x52, x51, x53
Node 28Lower bound: ≥ 1
x52, x51, x53
Node 14Lower bound: 0x52, x51, x53, x54
Node 22Lower bound: ≥ 1
x52, x51, x53, x54
Node 17Lower bound: ≥ 1
x52, x51, x53, x54, x55
Node 25Lower bound: ≥ 1
x52, x51, x53, x54, x55
Statistic with LPTotal nodes: 29Max depth: 5
Statistic without LPTotal nodes: 2154
Max depth: 21
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 17 / 62
![Page 37: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/37.jpg)
Search tree1 2 3 4
#1
0
#10
#12
0
#15
0
#16≥ 1
#23
0
#24≥ 1
#27≥ 1
#18
0
#19
0
#20≥ 1
#21≥ 1
#26≥ 1
#11
0
#13
0
#14
0
#17≥ 1
#25≥ 1
#22≥ 1
#28≥ 1
#2
0
#4
0
#6
#7
0
#8≥ 1
#9
#29
#5
1
#3
1
Node 1Lower bound: 0
Node 2Lower bound: 0
x52
Node 3Lower bound: 1
x52, x53
Node 4Lower bound: 0
x52, x53
Node 5Lower bound: 1
x52, x53, x51
Node 6Lower bound: 0
x52, x53, x51
Node 7Lower bound: 0x52, x53, x51, x55
Node 29Lower bound: ≥ 1
x52, x53, x51, x55
Node 8Lower bound: ≥ 1
x52, x53, x51, x55, x54
Node 9Lower bound: ≥ 1
x52, x53, x51, x55, x54
Node 10Lower bound: 0
x52
Node 11Lower bound: 0
x52, x51
Node 12Lower bound: 0
x52, x51
Node 15Lower bound: 0
x52, x51, x54
Node 16Lower bound: ≥ 1
x52, x51, x54, x55
Node 23Lower bound: 0x52, x51, x54, x55
Node 24Lower bound: ≥ 1
x52, x51, x54, x55, x53
Node 27Lower bound: ≥ 1
x52, x51, x54, x55, x53
Node 18Lower bound: 0
x52, x51, x54
Node 19Lower bound: 0x52, x51, x54, x53
Node 20Lower bound: ≥ 1
x52, x51, x54, x53, x55
Node 21Lower bound: ≥ 1
x52, x51, x54, x53, x55
Node 26Lower bound: ≥ 1
x52, x51, x54, x53
Node 16Lower bound: ≥ 10
x52, x51, x54, x53
Node 13Lower bound: 0
x52, x51, x53
Node 28Lower bound: ≥ 1
x52, x51, x53
Node 14Lower bound: 0x52, x51, x53, x54
Node 22Lower bound: ≥ 1
x52, x51, x53, x54
Node 17Lower bound: ≥ 1
x52, x51, x53, x54, x55
Node 25Lower bound: ≥ 1
x52, x51, x53, x54, x55
Statistic with LPTotal nodes: 29Max depth: 5
Statistic without LPTotal nodes: 2154
Max depth: 21
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 17 / 62
![Page 38: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/38.jpg)
Search tree1 2 3 4
#1
0
#10
#12
0
#15
0
#16≥ 1
#23
0
#24≥ 1
#27≥ 1
#18
0
#19
0
#20≥ 1
#21≥ 1
#26≥ 1
#11
0
#13
0
#14
0
#17≥ 1
#25≥ 1
#22≥ 1
#28≥ 1
#2
0
#4
0
#6
#7
0
#8≥ 1
#9
#29
#5
1
#3
1
Node 1Lower bound: 0
Node 2Lower bound: 0
x52
Node 3Lower bound: 1
x52, x53
Node 4Lower bound: 0
x52, x53
Node 5Lower bound: 1
x52, x53, x51
Node 6Lower bound: 0
x52, x53, x51
Node 7Lower bound: 0x52, x53, x51, x55
Node 29Lower bound: ≥ 1
x52, x53, x51, x55
Node 8Lower bound: ≥ 1
x52, x53, x51, x55, x54
Node 9Lower bound: ≥ 1
x52, x53, x51, x55, x54
Node 10Lower bound: 0
x52
Node 11Lower bound: 0
x52, x51
Node 12Lower bound: 0
x52, x51
Node 15Lower bound: 0
x52, x51, x54
Node 16Lower bound: ≥ 1
x52, x51, x54, x55
Node 23Lower bound: 0x52, x51, x54, x55
Node 24Lower bound: ≥ 1
x52, x51, x54, x55, x53
Node 27Lower bound: ≥ 1
x52, x51, x54, x55, x53
Node 18Lower bound: 0
x52, x51, x54
Node 19Lower bound: 0x52, x51, x54, x53
Node 20Lower bound: ≥ 1
x52, x51, x54, x53, x55
Node 21Lower bound: ≥ 1
x52, x51, x54, x53, x55
Node 26Lower bound: ≥ 1
x52, x51, x54, x53
Node 16Lower bound: ≥ 10
x52, x51, x54, x53
Node 13Lower bound: 0
x52, x51, x53
Node 28Lower bound: ≥ 1
x52, x51, x53
Node 14Lower bound: 0x52, x51, x53, x54
Node 22Lower bound: ≥ 1
x52, x51, x53, x54
Node 17Lower bound: ≥ 1
x52, x51, x53, x54, x55
Node 25Lower bound: ≥ 1
x52, x51, x53, x54, x55
Statistic with LPTotal nodes: 29Max depth: 5
Statistic without LPTotal nodes: 2154
Max depth: 21
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 17 / 62
![Page 39: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/39.jpg)
Search tree1 2 3 4
#1
0
#10
#12
0
#15
0
#16≥ 1
#23
0
#24≥ 1
#27≥ 1
#18
0
#19
0
#20≥ 1
#21≥ 1
#26≥ 1
#11
0
#13
0
#14
0
#17≥ 1
#25≥ 1
#22≥ 1
#28≥ 1
#2
0
#4
0
#6
#7
0
#8≥ 1
#9
#29
#5
1
#3
1
Node 1Lower bound: 0
Node 2Lower bound: 0
x52
Node 3Lower bound: 1
x52, x53
Node 4Lower bound: 0
x52, x53
Node 5Lower bound: 1
x52, x53, x51
Node 6Lower bound: 0
x52, x53, x51
Node 7Lower bound: 0x52, x53, x51, x55
Node 29Lower bound: ≥ 1
x52, x53, x51, x55
Node 8Lower bound: ≥ 1
x52, x53, x51, x55, x54
Node 9Lower bound: ≥ 1
x52, x53, x51, x55, x54
Node 10Lower bound: 0
x52
Node 11Lower bound: 0
x52, x51
Node 12Lower bound: 0
x52, x51
Node 15Lower bound: 0
x52, x51, x54
Node 16Lower bound: ≥ 1
x52, x51, x54, x55
Node 23Lower bound: 0x52, x51, x54, x55
Node 24Lower bound: ≥ 1
x52, x51, x54, x55, x53
Node 27Lower bound: ≥ 1
x52, x51, x54, x55, x53
Node 18Lower bound: 0
x52, x51, x54
Node 19Lower bound: 0x52, x51, x54, x53
Node 20Lower bound: ≥ 1
x52, x51, x54, x53, x55
Node 21Lower bound: ≥ 1
x52, x51, x54, x53, x55
Node 26Lower bound: ≥ 1
x52, x51, x54, x53
Node 16Lower bound: ≥ 10
x52, x51, x54, x53
Node 13Lower bound: 0
x52, x51, x53
Node 28Lower bound: ≥ 1
x52, x51, x53
Node 14Lower bound: 0x52, x51, x53, x54
Node 22Lower bound: ≥ 1
x52, x51, x53, x54
Node 17Lower bound: ≥ 1
x52, x51, x53, x54, x55
Node 25Lower bound: ≥ 1
x52, x51, x53, x54, x55
Statistic with LPTotal nodes: 29Max depth: 5
Statistic without LPTotal nodes: 2154
Max depth: 21
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 17 / 62
![Page 40: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/40.jpg)
node left depth frac curdualbound dualbound primalbound1 0 0 6 0.000000e+00 0.000000e+00 --1 2 0 6 0.000000e+00 0.000000e+00 --2 3 1 4 0.000000e+00 0.000000e+00 --3 4 2 6 1.000000e+00 0.000000e+00 --4 5 2 2 0.000000e+00 0.000000e+00 --
* 5 2 3 - 1.000000e+00 0.000000e+00 1.000000e+00
6 3 3 2 0.000000e+00 0.000000e+00 1.000000e+007 4 4 2 0.000000e+00 0.000000e+00 1.000000e+008 3 5 - -- 0.000000e+00 1.000000e+009 2 5 - -- 0.000000e+00 1.000000e+00
10 3 1 2 4.440892e-16 0.000000e+00 1.000000e+0011 4 2 2 4.440892e-16 0.000000e+00 1.000000e+0012 5 2 4 4.440892e-16 0.000000e+00 1.000000e+0013 6 3 4 1.776357e-15 0.000000e+00 1.000000e+0014 7 4 4 1.776357e-15 0.000000e+00 1.000000e+00
node left depth frac curdualbound dualbound primalbound15 8 3 4 1.184238e-15 0.000000e+00 1.000000e+0016 7 4 - -- 0.000000e+00 1.000000e+0017 6 5 - -- 0.000000e+00 1.000000e+0018 7 3 2 4.440892e-16 0.000000e+00 1.000000e+0019 8 4 4 8.881784e-16 0.000000e+00 1.000000e+0020 7 5 - -- 0.000000e+00 1.000000e+0021 6 5 - -- 0.000000e+00 1.000000e+0022 5 4 - -- 0.000000e+00 1.000000e+0023 6 4 2 1.184238e-15 0.000000e+00 1.000000e+0024 5 5 - -- 0.000000e+00 1.000000e+0025 4 5 - -- 0.000000e+00 1.000000e+0026 3 4 - -- 0.000000e+00 1.000000e+0027 2 5 - -- 0.000000e+00 1.000000e+0028 1 3 - -- 0.000000e+00 1.000000e+0029 0 4 - -- 1.000000e+00 1.000000e+00
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 18 / 62
![Page 41: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/41.jpg)
Solution
1
2
3
Orders
+
. . .
. . .
1
2
3
4
5
Slabs
→
1 0 0 0 0Assignment
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 19 / 62
![Page 42: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/42.jpg)
Search tree1 2 3 4
#1
0
#10
#12
0
#15
0
#16≥ 1
#23
0
#24≥ 1
#27≥ 1
#18
0
#19
0
#20≥ 1
#21≥ 1
#26≥ 1
#11
0
#13
0
#14
0
#17≥ 1
#25≥ 1
#22≥ 1
#28≥ 1
#2
0
#4
0
#6
0
#7
0
#8≥ 1
#9
#29
#5
1
#3
1
Node 1Lower bound: 0
Node 2Lower bound: 0
x52
Node 3Lower bound: 1
x52, x53
Node 4Lower bound: 0
x52, x53
Node 5Lower bound: 1
x52, x53, x51
Node 6Lower bound: 0
x52, x53, x51
Node 7Lower bound: 0x52, x53, x51, x55
Node 29Lower bound: ≥ 1
x52, x53, x51, x55
Node 8Lower bound: ≥ 1
x52, x53, x51, x55, x54
Node 9Lower bound: ≥ 1
x52, x53, x51, x55, x54
Node 10Lower bound: 0
x52
Node 11Lower bound: 0
x52, x51
Node 12Lower bound: 0
x52, x51
Node 15Lower bound: 0
x52, x51, x54
Node 16Lower bound: ≥ 1
x52, x51, x54, x55
Node 23Lower bound: 0x52, x51, x54, x55
Node 24Lower bound: ≥ 1
x52, x51, x54, x55, x53
Node 27Lower bound: ≥ 1
x52, x51, x54, x55, x53
Node 18Lower bound: 0
x52, x51, x54
Node 19Lower bound: 0x52, x51, x54, x53
Node 20Lower bound: ≥ 1
x52, x51, x54, x53, x55
Node 21Lower bound: ≥ 1
x52, x51, x54, x53, x55
Node 26Lower bound: ≥ 1
x52, x51, x54, x53
Node 16Lower bound: ≥ 10
x52, x51, x54, x53
Node 13Lower bound: 0
x52, x51, x53
Node 28Lower bound: ≥ 1
x52, x51, x53
Node 14Lower bound: 0x52, x51, x53, x54
Node 22Lower bound: ≥ 1
x52, x51, x53, x54
Node 17Lower bound: ≥ 1
x52, x51, x53, x54, x55
Node 25Lower bound: ≥ 1
x52, x51, x53, x54, x55
Statistic with LPTotal nodes: 29Max depth: 5
Statistic without LPTotal nodes: 2154
Max depth: 21
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 20 / 62
![Page 43: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/43.jpg)
Search tree1 2 3 4
#1
0
#10
#12
0
#15
0
#16≥ 1
#23
0
#24≥ 1
#27≥ 1
#18
0
#19
0
#20≥ 1
#21≥ 1
#26≥ 1
#11
0
#13
0
#14
0
#17≥ 1
#25≥ 1
#22≥ 1
#28≥ 1
#2
0
#4
0
#6
0
#7
0
#8≥ 1
#9
#29
#5
1
#3
1
Node 1Lower bound: 0
Node 2Lower bound: 0
x52
Node 3Lower bound: 1
x52, x53
Node 4Lower bound: 0
x52, x53
Node 5Lower bound: 1
x52, x53, x51
Node 6Lower bound: 0
x52, x53, x51
Node 7Lower bound: 0x52, x53, x51, x55
Node 29Lower bound: ≥ 1
x52, x53, x51, x55
Node 8Lower bound: ≥ 1
x52, x53, x51, x55, x54
Node 9Lower bound: ≥ 1
x52, x53, x51, x55, x54
Node 10Lower bound: 0
x52
Node 11Lower bound: 0
x52, x51
Node 12Lower bound: 0
x52, x51
Node 15Lower bound: 0
x52, x51, x54
Node 16Lower bound: ≥ 1
x52, x51, x54, x55
Node 23Lower bound: 0x52, x51, x54, x55
Node 24Lower bound: ≥ 1
x52, x51, x54, x55, x53
Node 27Lower bound: ≥ 1
x52, x51, x54, x55, x53
Node 18Lower bound: 0
x52, x51, x54
Node 19Lower bound: 0x52, x51, x54, x53
Node 20Lower bound: ≥ 1
x52, x51, x54, x53, x55
Node 21Lower bound: ≥ 1
x52, x51, x54, x53, x55
Node 26Lower bound: ≥ 1
x52, x51, x54, x53
Node 16Lower bound: ≥ 10
x52, x51, x54, x53
Node 13Lower bound: 0
x52, x51, x53
Node 28Lower bound: ≥ 1
x52, x51, x53
Node 14Lower bound: 0x52, x51, x53, x54
Node 22Lower bound: ≥ 1
x52, x51, x53, x54
Node 17Lower bound: ≥ 1
x52, x51, x53, x54, x55
Node 25Lower bound: ≥ 1
x52, x51, x53, x54, x55
Statistic with LPTotal nodes: 29Max depth: 5
Statistic without LPTotal nodes: 2154
Max depth: 21
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 20 / 62
![Page 44: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/44.jpg)
Search tree1 2 3 4
#1
0
#10
#12
0
#15
0
#16≥ 1
#23
0
#24≥ 1
#27≥ 1
#18
0
#19
0
#20≥ 1
#21≥ 1
#26≥ 1
#11
0
#13
0
#14
0
#17≥ 1
#25≥ 1
#22≥ 1
#28≥ 1
#2
0
#4
0
#6
0
#7
0
#8≥ 1
#9
#29
#5
1
#3
1
Node 1Lower bound: 0
Node 2Lower bound: 0
x52
Node 3Lower bound: 1
x52, x53
Node 4Lower bound: 0
x52, x53
Node 5Lower bound: 1
x52, x53, x51
Node 6Lower bound: 0
x52, x53, x51
Node 7Lower bound: 0x52, x53, x51, x55
Node 29Lower bound: ≥ 1
x52, x53, x51, x55
Node 8Lower bound: ≥ 1
x52, x53, x51, x55, x54
Node 9Lower bound: ≥ 1
x52, x53, x51, x55, x54
Node 10Lower bound: 0
x52
Node 11Lower bound: 0
x52, x51
Node 12Lower bound: 0
x52, x51
Node 15Lower bound: 0
x52, x51, x54
Node 16Lower bound: ≥ 1
x52, x51, x54, x55
Node 23Lower bound: 0x52, x51, x54, x55
Node 24Lower bound: ≥ 1
x52, x51, x54, x55, x53
Node 27Lower bound: ≥ 1
x52, x51, x54, x55, x53
Node 18Lower bound: 0
x52, x51, x54
Node 19Lower bound: 0x52, x51, x54, x53
Node 20Lower bound: ≥ 1
x52, x51, x54, x53, x55
Node 21Lower bound: ≥ 1
x52, x51, x54, x53, x55
Node 26Lower bound: ≥ 1
x52, x51, x54, x53
Node 16Lower bound: ≥ 10
x52, x51, x54, x53
Node 13Lower bound: 0
x52, x51, x53
Node 28Lower bound: ≥ 1
x52, x51, x53
Node 14Lower bound: 0x52, x51, x53, x54
Node 22Lower bound: ≥ 1
x52, x51, x53, x54
Node 17Lower bound: ≥ 1
x52, x51, x53, x54, x55
Node 25Lower bound: ≥ 1
x52, x51, x53, x54, x55
Statistic with LPTotal nodes: 29Max depth: 5
Statistic without LPTotal nodes: 2154
Max depth: 21
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 20 / 62
![Page 45: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/45.jpg)
node left depth frac curdualbound dualbound primalbound1 0 0 6 0.000000e+00 0.000000e+00 --1 2 0 6 0.000000e+00 0.000000e+00 --2 3 1 4 0.000000e+00 0.000000e+00 --3 4 2 6 1.000000e+00 0.000000e+00 --4 5 2 2 0.000000e+00 0.000000e+00 --
* 5 2 3 - 1.000000e+00 0.000000e+00 1.000000e+006 3 3 2 0.000000e+00 0.000000e+00 1.000000e+007 4 4 2 0.000000e+00 0.000000e+00 1.000000e+008 3 5 - -- 0.000000e+00 1.000000e+00
9 2 5 - -- 0.000000e+00 1.000000e+0010 3 1 2 4.440892e-16 0.000000e+00 1.000000e+0011 4 2 2 4.440892e-16 0.000000e+00 1.000000e+0012 5 2 4 4.440892e-16 0.000000e+00 1.000000e+0013 6 3 4 1.776357e-15 0.000000e+00 1.000000e+0014 7 4 4 1.776357e-15 0.000000e+00 1.000000e+00
node left depth frac curdualbound dualbound primalbound15 8 3 4 1.184238e-15 0.000000e+00 1.000000e+0016 7 4 - -- 0.000000e+00 1.000000e+0017 6 5 - -- 0.000000e+00 1.000000e+0018 7 3 2 4.440892e-16 0.000000e+00 1.000000e+0019 8 4 4 8.881784e-16 0.000000e+00 1.000000e+0020 7 5 - -- 0.000000e+00 1.000000e+0021 6 5 - -- 0.000000e+00 1.000000e+0022 5 4 - -- 0.000000e+00 1.000000e+0023 6 4 2 1.184238e-15 0.000000e+00 1.000000e+0024 5 5 - -- 0.000000e+00 1.000000e+0025 4 5 - -- 0.000000e+00 1.000000e+0026 3 4 - -- 0.000000e+00 1.000000e+0027 2 5 - -- 0.000000e+00 1.000000e+0028 1 3 - -- 0.000000e+00 1.000000e+0029 0 4 - -- 1.000000e+00 1.000000e+00
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 21 / 62
![Page 46: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/46.jpg)
Search tree1 2 3 4
#1
0
#10
0
#12
0
#15
0
#16≥ 1
#23
0
#24≥ 1
#27≥ 1
#18
0
#19
0
#20≥ 1
#21≥ 1
#26≥ 1
#11
0
#13
0
#14
0
#17≥ 1
#25≥ 1
#22≥ 1
#28≥ 1
#2
0
#4
0
#6
0
#7
0
#8≥ 1
#9≥ 1
#29≥ 1
#5
1
#3
1
Node 1Lower bound: 0
Node 2Lower bound: 0
x52
Node 3Lower bound: 1
x52, x53
Node 4Lower bound: 0
x52, x53
Node 5Lower bound: 1
x52, x53, x51
Node 6Lower bound: 0
x52, x53, x51
Node 7Lower bound: 0x52, x53, x51, x55
Node 29Lower bound: ≥ 1
x52, x53, x51, x55
Node 8Lower bound: ≥ 1
x52, x53, x51, x55, x54
Node 9Lower bound: ≥ 1
x52, x53, x51, x55, x54
Node 10Lower bound: 0
x52
Node 11Lower bound: 0
x52, x51
Node 12Lower bound: 0
x52, x51
Node 15Lower bound: 0
x52, x51, x54
Node 16Lower bound: ≥ 1
x52, x51, x54, x55
Node 23Lower bound: 0x52, x51, x54, x55
Node 24Lower bound: ≥ 1
x52, x51, x54, x55, x53
Node 27Lower bound: ≥ 1
x52, x51, x54, x55, x53
Node 18Lower bound: 0
x52, x51, x54
Node 19Lower bound: 0x52, x51, x54, x53
Node 20Lower bound: ≥ 1
x52, x51, x54, x53, x55
Node 21Lower bound: ≥ 1
x52, x51, x54, x53, x55
Node 26Lower bound: ≥ 1
x52, x51, x54, x53
Node 16Lower bound: ≥ 10
x52, x51, x54, x53
Node 13Lower bound: 0
x52, x51, x53
Node 28Lower bound: ≥ 1
x52, x51, x53
Node 14Lower bound: 0x52, x51, x53, x54
Node 22Lower bound: ≥ 1
x52, x51, x53, x54
Node 17Lower bound: ≥ 1
x52, x51, x53, x54, x55
Node 25Lower bound: ≥ 1
x52, x51, x53, x54, x55
Statistic with LPTotal nodes: 29Max depth: 5
Statistic without LPTotal nodes: 2154
Max depth: 21
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 22 / 62
![Page 47: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/47.jpg)
Search tree1 2 3 4
#1
0
#10
0
#12
0
#15
0
#16≥ 1
#23
0
#24≥ 1
#27≥ 1
#18
0
#19
0
#20≥ 1
#21≥ 1
#26≥ 1
#11
0
#13
0
#14
0
#17≥ 1
#25≥ 1
#22≥ 1
#28≥ 1
#2
0
#4
0
#6
0
#7
0
#8≥ 1
#9≥ 1
#29≥ 1
#5
1
#3
1
Node 1Lower bound: 0
Node 2Lower bound: 0
x52
Node 3Lower bound: 1
x52, x53
Node 4Lower bound: 0
x52, x53
Node 5Lower bound: 1
x52, x53, x51
Node 6Lower bound: 0
x52, x53, x51
Node 7Lower bound: 0x52, x53, x51, x55
Node 29Lower bound: ≥ 1
x52, x53, x51, x55
Node 8Lower bound: ≥ 1
x52, x53, x51, x55, x54
Node 9Lower bound: ≥ 1
x52, x53, x51, x55, x54
Node 10Lower bound: 0
x52
Node 11Lower bound: 0
x52, x51
Node 12Lower bound: 0
x52, x51
Node 15Lower bound: 0
x52, x51, x54
Node 16Lower bound: ≥ 1
x52, x51, x54, x55
Node 23Lower bound: 0x52, x51, x54, x55
Node 24Lower bound: ≥ 1
x52, x51, x54, x55, x53
Node 27Lower bound: ≥ 1
x52, x51, x54, x55, x53
Node 18Lower bound: 0
x52, x51, x54
Node 19Lower bound: 0x52, x51, x54, x53
Node 20Lower bound: ≥ 1
x52, x51, x54, x53, x55
Node 21Lower bound: ≥ 1
x52, x51, x54, x53, x55
Node 26Lower bound: ≥ 1
x52, x51, x54, x53
Node 16Lower bound: ≥ 10
x52, x51, x54, x53
Node 13Lower bound: 0
x52, x51, x53
Node 28Lower bound: ≥ 1
x52, x51, x53
Node 14Lower bound: 0x52, x51, x53, x54
Node 22Lower bound: ≥ 1
x52, x51, x53, x54
Node 17Lower bound: ≥ 1
x52, x51, x53, x54, x55
Node 25Lower bound: ≥ 1
x52, x51, x53, x54, x55
Statistic with LPTotal nodes: 29Max depth: 5
Statistic without LPTotal nodes: 2154
Max depth: 21
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 22 / 62
![Page 48: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/48.jpg)
Search tree1 2 3 4
#1
0
#10
0
#12
0
#15
0
#16≥ 1
#23
0
#24≥ 1
#27≥ 1
#18
0
#19
0
#20≥ 1
#21≥ 1
#26≥ 1
#11
0
#13
0
#14
0
#17≥ 1
#25≥ 1
#22≥ 1
#28≥ 1
#2
0
#4
0
#6
0
#7
0
#8≥ 1
#9≥ 1
#29≥ 1
#5
1
#3
1
Node 1Lower bound: 0
Node 2Lower bound: 0
x52
Node 3Lower bound: 1
x52, x53
Node 4Lower bound: 0
x52, x53
Node 5Lower bound: 1
x52, x53, x51
Node 6Lower bound: 0
x52, x53, x51
Node 7Lower bound: 0x52, x53, x51, x55
Node 29Lower bound: ≥ 1
x52, x53, x51, x55
Node 8Lower bound: ≥ 1
x52, x53, x51, x55, x54
Node 9Lower bound: ≥ 1
x52, x53, x51, x55, x54
Node 10Lower bound: 0
x52
Node 11Lower bound: 0
x52, x51
Node 12Lower bound: 0
x52, x51
Node 15Lower bound: 0
x52, x51, x54
Node 16Lower bound: ≥ 1
x52, x51, x54, x55
Node 23Lower bound: 0x52, x51, x54, x55
Node 24Lower bound: ≥ 1
x52, x51, x54, x55, x53
Node 27Lower bound: ≥ 1
x52, x51, x54, x55, x53
Node 18Lower bound: 0
x52, x51, x54
Node 19Lower bound: 0x52, x51, x54, x53
Node 20Lower bound: ≥ 1
x52, x51, x54, x53, x55
Node 21Lower bound: ≥ 1
x52, x51, x54, x53, x55
Node 26Lower bound: ≥ 1
x52, x51, x54, x53
Node 16Lower bound: ≥ 10
x52, x51, x54, x53
Node 13Lower bound: 0
x52, x51, x53
Node 28Lower bound: ≥ 1
x52, x51, x53
Node 14Lower bound: 0x52, x51, x53, x54
Node 22Lower bound: ≥ 1
x52, x51, x53, x54
Node 17Lower bound: ≥ 1
x52, x51, x53, x54, x55
Node 25Lower bound: ≥ 1
x52, x51, x53, x54, x55
Statistic with LPTotal nodes: 29Max depth: 5
Statistic without LPTotal nodes: 2154
Max depth: 21
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 22 / 62
![Page 49: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/49.jpg)
Search tree1 2 3 4
#1
0
#10
0
#12
0
#15
0
#16≥ 1
#23
0
#24≥ 1
#27≥ 1
#18
0
#19
0
#20≥ 1
#21≥ 1
#26≥ 1
#11
0
#13
0
#14
0
#17≥ 1
#25≥ 1
#22≥ 1
#28≥ 1
#2
0
#4
0
#6
0
#7
0
#8≥ 1
#9≥ 1
#29≥ 1
#5
1
#3
1
Node 1Lower bound: 0
Node 2Lower bound: 0
x52
Node 3Lower bound: 1
x52, x53
Node 4Lower bound: 0
x52, x53
Node 5Lower bound: 1
x52, x53, x51
Node 6Lower bound: 0
x52, x53, x51
Node 7Lower bound: 0x52, x53, x51, x55
Node 29Lower bound: ≥ 1
x52, x53, x51, x55
Node 8Lower bound: ≥ 1
x52, x53, x51, x55, x54
Node 9Lower bound: ≥ 1
x52, x53, x51, x55, x54
Node 10Lower bound: 0
x52
Node 11Lower bound: 0
x52, x51
Node 12Lower bound: 0
x52, x51
Node 15Lower bound: 0
x52, x51, x54
Node 16Lower bound: ≥ 1
x52, x51, x54, x55
Node 23Lower bound: 0x52, x51, x54, x55
Node 24Lower bound: ≥ 1
x52, x51, x54, x55, x53
Node 27Lower bound: ≥ 1
x52, x51, x54, x55, x53
Node 18Lower bound: 0
x52, x51, x54
Node 19Lower bound: 0x52, x51, x54, x53
Node 20Lower bound: ≥ 1
x52, x51, x54, x53, x55
Node 21Lower bound: ≥ 1
x52, x51, x54, x53, x55
Node 26Lower bound: ≥ 1
x52, x51, x54, x53
Node 16Lower bound: ≥ 10
x52, x51, x54, x53
Node 13Lower bound: 0
x52, x51, x53
Node 28Lower bound: ≥ 1
x52, x51, x53
Node 14Lower bound: 0x52, x51, x53, x54
Node 22Lower bound: ≥ 1
x52, x51, x53, x54
Node 17Lower bound: ≥ 1
x52, x51, x53, x54, x55
Node 25Lower bound: ≥ 1
x52, x51, x53, x54, x55
Statistic with LPTotal nodes: 29Max depth: 5
Statistic without LPTotal nodes: 2154
Max depth: 21
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 22 / 62
![Page 50: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/50.jpg)
Search tree1 2 3 4
#1
0
#10
0
#12
0
#15
0
#16≥ 1
#23
0
#24≥ 1
#27≥ 1
#18
0
#19
0
#20≥ 1
#21≥ 1
#26≥ 1
#11
0
#13
0
#14
0
#17≥ 1
#25≥ 1
#22≥ 1
#28≥ 1
#2
0
#4
0
#6
0
#7
0
#8≥ 1
#9≥ 1
#29≥ 1
#5
1
#3
1
Node 1Lower bound: 0
Node 2Lower bound: 0
x52
Node 3Lower bound: 1
x52, x53
Node 4Lower bound: 0
x52, x53
Node 5Lower bound: 1
x52, x53, x51
Node 6Lower bound: 0
x52, x53, x51
Node 7Lower bound: 0x52, x53, x51, x55
Node 29Lower bound: ≥ 1
x52, x53, x51, x55
Node 8Lower bound: ≥ 1
x52, x53, x51, x55, x54
Node 9Lower bound: ≥ 1
x52, x53, x51, x55, x54
Node 10Lower bound: 0
x52
Node 11Lower bound: 0
x52, x51
Node 12Lower bound: 0
x52, x51
Node 15Lower bound: 0
x52, x51, x54
Node 16Lower bound: ≥ 1
x52, x51, x54, x55
Node 23Lower bound: 0x52, x51, x54, x55
Node 24Lower bound: ≥ 1
x52, x51, x54, x55, x53
Node 27Lower bound: ≥ 1
x52, x51, x54, x55, x53
Node 18Lower bound: 0
x52, x51, x54
Node 19Lower bound: 0x52, x51, x54, x53
Node 20Lower bound: ≥ 1
x52, x51, x54, x53, x55
Node 21Lower bound: ≥ 1
x52, x51, x54, x53, x55
Node 26Lower bound: ≥ 1
x52, x51, x54, x53
Node 16Lower bound: ≥ 10
x52, x51, x54, x53
Node 13Lower bound: 0
x52, x51, x53
Node 28Lower bound: ≥ 1
x52, x51, x53
Node 14Lower bound: 0x52, x51, x53, x54
Node 22Lower bound: ≥ 1
x52, x51, x53, x54
Node 17Lower bound: ≥ 1
x52, x51, x53, x54, x55
Node 25Lower bound: ≥ 1
x52, x51, x53, x54, x55
Statistic with LPTotal nodes: 29Max depth: 5
Statistic without LPTotal nodes: 2154
Max depth: 21
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 22 / 62
![Page 51: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/51.jpg)
Search tree1 2 3 4
#1
0
#10
0
#12
0
#15
0
#16≥ 1
#23
0
#24≥ 1
#27≥ 1
#18
0
#19
0
#20≥ 1
#21≥ 1
#26≥ 1
#11
0
#13
0
#14
0
#17≥ 1
#25≥ 1
#22≥ 1
#28≥ 1
#2
0
#4
0
#6
0
#7
0
#8≥ 1
#9≥ 1
#29≥ 1
#5
1
#3
1
Node 1Lower bound: 0
Node 2Lower bound: 0
x52
Node 3Lower bound: 1
x52, x53
Node 4Lower bound: 0
x52, x53
Node 5Lower bound: 1
x52, x53, x51
Node 6Lower bound: 0
x52, x53, x51
Node 7Lower bound: 0x52, x53, x51, x55
Node 29Lower bound: ≥ 1
x52, x53, x51, x55
Node 8Lower bound: ≥ 1
x52, x53, x51, x55, x54
Node 9Lower bound: ≥ 1
x52, x53, x51, x55, x54
Node 10Lower bound: 0
x52
Node 11Lower bound: 0
x52, x51
Node 12Lower bound: 0
x52, x51
Node 15Lower bound: 0
x52, x51, x54
Node 16Lower bound: ≥ 1
x52, x51, x54, x55
Node 23Lower bound: 0x52, x51, x54, x55
Node 24Lower bound: ≥ 1
x52, x51, x54, x55, x53
Node 27Lower bound: ≥ 1
x52, x51, x54, x55, x53
Node 18Lower bound: 0
x52, x51, x54
Node 19Lower bound: 0x52, x51, x54, x53
Node 20Lower bound: ≥ 1
x52, x51, x54, x53, x55
Node 21Lower bound: ≥ 1
x52, x51, x54, x53, x55
Node 26Lower bound: ≥ 1
x52, x51, x54, x53
Node 16Lower bound: ≥ 10
x52, x51, x54, x53
Node 13Lower bound: 0
x52, x51, x53
Node 28Lower bound: ≥ 1
x52, x51, x53
Node 14Lower bound: 0x52, x51, x53, x54
Node 22Lower bound: ≥ 1
x52, x51, x53, x54
Node 17Lower bound: ≥ 1
x52, x51, x53, x54, x55
Node 25Lower bound: ≥ 1
x52, x51, x53, x54, x55
Statistic with LPTotal nodes: 29Max depth: 5
Statistic without LPTotal nodes: 2154
Max depth: 21
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 22 / 62
![Page 52: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/52.jpg)
Search tree1 2 3 4
#1
0
#10
0
#12
0
#15
0
#16≥ 1
#23
0
#24≥ 1
#27≥ 1
#18
0
#19
0
#20≥ 1
#21≥ 1
#26≥ 1
#11
0
#13
0
#14
0
#17≥ 1
#25≥ 1
#22≥ 1
#28≥ 1
#2
0
#4
0
#6
0
#7
0
#8≥ 1
#9≥ 1
#29≥ 1
#5
1
#3
1
Node 1Lower bound: 0
Node 2Lower bound: 0
x52
Node 3Lower bound: 1
x52, x53
Node 4Lower bound: 0
x52, x53
Node 5Lower bound: 1
x52, x53, x51
Node 6Lower bound: 0
x52, x53, x51
Node 7Lower bound: 0x52, x53, x51, x55
Node 29Lower bound: ≥ 1
x52, x53, x51, x55
Node 8Lower bound: ≥ 1
x52, x53, x51, x55, x54
Node 9Lower bound: ≥ 1
x52, x53, x51, x55, x54
Node 10Lower bound: 0
x52
Node 11Lower bound: 0
x52, x51
Node 12Lower bound: 0
x52, x51
Node 15Lower bound: 0
x52, x51, x54
Node 16Lower bound: ≥ 1
x52, x51, x54, x55
Node 23Lower bound: 0x52, x51, x54, x55
Node 24Lower bound: ≥ 1
x52, x51, x54, x55, x53
Node 27Lower bound: ≥ 1
x52, x51, x54, x55, x53
Node 18Lower bound: 0
x52, x51, x54
Node 19Lower bound: 0x52, x51, x54, x53
Node 20Lower bound: ≥ 1
x52, x51, x54, x53, x55
Node 21Lower bound: ≥ 1
x52, x51, x54, x53, x55
Node 26Lower bound: ≥ 1
x52, x51, x54, x53
Node 16Lower bound: ≥ 10
x52, x51, x54, x53
Node 13Lower bound: 0
x52, x51, x53
Node 28Lower bound: ≥ 1
x52, x51, x53
Node 14Lower bound: 0x52, x51, x53, x54
Node 22Lower bound: ≥ 1
x52, x51, x53, x54
Node 17Lower bound: ≥ 1
x52, x51, x53, x54, x55
Node 25Lower bound: ≥ 1
x52, x51, x53, x54, x55
Statistic with LPTotal nodes: 29Max depth: 5
Statistic without LPTotal nodes: 2154
Max depth: 21
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 22 / 62
![Page 53: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/53.jpg)
Search tree1 2 3 4
#1
0
#10
0
#12
0
#15
0
#16≥ 1
#23
0
#24≥ 1
#27≥ 1
#18
0
#19
0
#20≥ 1
#21≥ 1
#26≥ 1
#11
0
#13
0
#14
0
#17≥ 1
#25≥ 1
#22≥ 1
#28≥ 1
#2
0
#4
0
#6
0
#7
0
#8≥ 1
#9≥ 1
#29≥ 1
#5
1
#3
1
Node 1Lower bound: 0
Node 2Lower bound: 0
x52
Node 3Lower bound: 1
x52, x53
Node 4Lower bound: 0
x52, x53
Node 5Lower bound: 1
x52, x53, x51
Node 6Lower bound: 0
x52, x53, x51
Node 7Lower bound: 0x52, x53, x51, x55
Node 29Lower bound: ≥ 1
x52, x53, x51, x55
Node 8Lower bound: ≥ 1
x52, x53, x51, x55, x54
Node 9Lower bound: ≥ 1
x52, x53, x51, x55, x54
Node 10Lower bound: 0
x52
Node 11Lower bound: 0
x52, x51
Node 12Lower bound: 0
x52, x51
Node 15Lower bound: 0
x52, x51, x54
Node 16Lower bound: ≥ 1
x52, x51, x54, x55
Node 23Lower bound: 0x52, x51, x54, x55
Node 24Lower bound: ≥ 1
x52, x51, x54, x55, x53
Node 27Lower bound: ≥ 1
x52, x51, x54, x55, x53
Node 18Lower bound: 0
x52, x51, x54
Node 19Lower bound: 0x52, x51, x54, x53
Node 20Lower bound: ≥ 1
x52, x51, x54, x53, x55
Node 21Lower bound: ≥ 1
x52, x51, x54, x53, x55
Node 26Lower bound: ≥ 1
x52, x51, x54, x53
Node 16Lower bound: ≥ 10
x52, x51, x54, x53
Node 13Lower bound: 0
x52, x51, x53
Node 28Lower bound: ≥ 1
x52, x51, x53
Node 14Lower bound: 0x52, x51, x53, x54
Node 22Lower bound: ≥ 1
x52, x51, x53, x54
Node 17Lower bound: ≥ 1
x52, x51, x53, x54, x55
Node 25Lower bound: ≥ 1
x52, x51, x53, x54, x55
Statistic with LPTotal nodes: 29Max depth: 5
Statistic without LPTotal nodes: 2154
Max depth: 21
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 22 / 62
![Page 54: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/54.jpg)
Search tree1 2 3 4
#1
0
#10
0
#12
0
#15
0
#16≥ 1
#23
0
#24≥ 1
#27≥ 1
#18
0
#19
0
#20≥ 1
#21≥ 1
#26≥ 1
#11
0
#13
0
#14
0
#17≥ 1
#25≥ 1
#22≥ 1
#28≥ 1
#2
0
#4
0
#6
0
#7
0
#8≥ 1
#9≥ 1
#29≥ 1
#5
1
#3
1
Node 1Lower bound: 0
Node 2Lower bound: 0
x52
Node 3Lower bound: 1
x52, x53
Node 4Lower bound: 0
x52, x53
Node 5Lower bound: 1
x52, x53, x51
Node 6Lower bound: 0
x52, x53, x51
Node 7Lower bound: 0x52, x53, x51, x55
Node 29Lower bound: ≥ 1
x52, x53, x51, x55
Node 8Lower bound: ≥ 1
x52, x53, x51, x55, x54
Node 9Lower bound: ≥ 1
x52, x53, x51, x55, x54
Node 10Lower bound: 0
x52
Node 11Lower bound: 0
x52, x51
Node 12Lower bound: 0
x52, x51
Node 15Lower bound: 0
x52, x51, x54
Node 16Lower bound: ≥ 1
x52, x51, x54, x55
Node 23Lower bound: 0x52, x51, x54, x55
Node 24Lower bound: ≥ 1
x52, x51, x54, x55, x53
Node 27Lower bound: ≥ 1
x52, x51, x54, x55, x53
Node 18Lower bound: 0
x52, x51, x54
Node 19Lower bound: 0x52, x51, x54, x53
Node 20Lower bound: ≥ 1
x52, x51, x54, x53, x55
Node 21Lower bound: ≥ 1
x52, x51, x54, x53, x55
Node 26Lower bound: ≥ 1
x52, x51, x54, x53
Node 16Lower bound: ≥ 10
x52, x51, x54, x53
Node 13Lower bound: 0
x52, x51, x53
Node 28Lower bound: ≥ 1
x52, x51, x53
Node 14Lower bound: 0x52, x51, x53, x54
Node 22Lower bound: ≥ 1
x52, x51, x53, x54
Node 17Lower bound: ≥ 1
x52, x51, x53, x54, x55
Node 25Lower bound: ≥ 1
x52, x51, x53, x54, x55
Statistic with LPTotal nodes: 29Max depth: 5
Statistic without LPTotal nodes: 2154
Max depth: 21
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 22 / 62
![Page 55: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/55.jpg)
Search tree1 2 3 4
#1
0
#10
0
#12
0
#15
0
#16≥ 1
#23
0
#24≥ 1
#27≥ 1
#18
0
#19
0
#20≥ 1
#21≥ 1
#26≥ 1
#11
0
#13
0
#14
0
#17≥ 1
#25≥ 1
#22≥ 1
#28≥ 1
#2
0
#4
0
#6
0
#7
0
#8≥ 1
#9≥ 1
#29≥ 1
#5
1
#3
1
Node 1Lower bound: 0
Node 2Lower bound: 0
x52
Node 3Lower bound: 1
x52, x53
Node 4Lower bound: 0
x52, x53
Node 5Lower bound: 1
x52, x53, x51
Node 6Lower bound: 0
x52, x53, x51
Node 7Lower bound: 0x52, x53, x51, x55
Node 29Lower bound: ≥ 1
x52, x53, x51, x55
Node 8Lower bound: ≥ 1
x52, x53, x51, x55, x54
Node 9Lower bound: ≥ 1
x52, x53, x51, x55, x54
Node 10Lower bound: 0
x52
Node 11Lower bound: 0
x52, x51
Node 12Lower bound: 0
x52, x51
Node 15Lower bound: 0
x52, x51, x54
Node 16Lower bound: ≥ 1
x52, x51, x54, x55
Node 23Lower bound: 0x52, x51, x54, x55
Node 24Lower bound: ≥ 1
x52, x51, x54, x55, x53
Node 27Lower bound: ≥ 1
x52, x51, x54, x55, x53
Node 18Lower bound: 0
x52, x51, x54
Node 19Lower bound: 0x52, x51, x54, x53
Node 20Lower bound: ≥ 1
x52, x51, x54, x53, x55
Node 21Lower bound: ≥ 1
x52, x51, x54, x53, x55
Node 26Lower bound: ≥ 1
x52, x51, x54, x53
Node 16Lower bound: ≥ 10
x52, x51, x54, x53
Node 13Lower bound: 0
x52, x51, x53
Node 28Lower bound: ≥ 1
x52, x51, x53
Node 14Lower bound: 0x52, x51, x53, x54
Node 22Lower bound: ≥ 1
x52, x51, x53, x54
Node 17Lower bound: ≥ 1
x52, x51, x53, x54, x55
Node 25Lower bound: ≥ 1
x52, x51, x53, x54, x55
Statistic with LPTotal nodes: 29Max depth: 5
Statistic without LPTotal nodes: 2154
Max depth: 21
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 22 / 62
![Page 56: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/56.jpg)
Search tree1 2 3 4
#1
0
#10
0
#12
0
#15
0
#16≥ 1
#23
0
#24≥ 1
#27≥ 1
#18
0
#19
0
#20≥ 1
#21≥ 1
#26≥ 1
#11
0
#13
0
#14
0
#17≥ 1
#25≥ 1
#22≥ 1
#28≥ 1
#2
0
#4
0
#6
0
#7
0
#8≥ 1
#9≥ 1
#29≥ 1
#5
1
#3
1
Node 1Lower bound: 0
Node 2Lower bound: 0
x52
Node 3Lower bound: 1
x52, x53
Node 4Lower bound: 0
x52, x53
Node 5Lower bound: 1
x52, x53, x51
Node 6Lower bound: 0
x52, x53, x51
Node 7Lower bound: 0x52, x53, x51, x55
Node 29Lower bound: ≥ 1
x52, x53, x51, x55
Node 8Lower bound: ≥ 1
x52, x53, x51, x55, x54
Node 9Lower bound: ≥ 1
x52, x53, x51, x55, x54
Node 10Lower bound: 0
x52
Node 11Lower bound: 0
x52, x51
Node 12Lower bound: 0
x52, x51
Node 15Lower bound: 0
x52, x51, x54
Node 16Lower bound: ≥ 1
x52, x51, x54, x55
Node 23Lower bound: 0x52, x51, x54, x55
Node 24Lower bound: ≥ 1
x52, x51, x54, x55, x53
Node 27Lower bound: ≥ 1
x52, x51, x54, x55, x53
Node 18Lower bound: 0
x52, x51, x54
Node 19Lower bound: 0x52, x51, x54, x53
Node 20Lower bound: ≥ 1
x52, x51, x54, x53, x55
Node 21Lower bound: ≥ 1
x52, x51, x54, x53, x55
Node 26Lower bound: ≥ 1
x52, x51, x54, x53
Node 16Lower bound: ≥ 10
x52, x51, x54, x53
Node 13Lower bound: 0
x52, x51, x53
Node 28Lower bound: ≥ 1
x52, x51, x53
Node 14Lower bound: 0x52, x51, x53, x54
Node 22Lower bound: ≥ 1
x52, x51, x53, x54
Node 17Lower bound: ≥ 1
x52, x51, x53, x54, x55
Node 25Lower bound: ≥ 1
x52, x51, x53, x54, x55
Statistic with LPTotal nodes: 29Max depth: 5
Statistic without LPTotal nodes: 2154
Max depth: 21
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 22 / 62
![Page 57: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/57.jpg)
Search tree1 2 3 4
#1
0
#10
0
#12
0
#15
0
#16≥ 1
#23
0
#24≥ 1
#27≥ 1
#18
0
#19
0
#20≥ 1
#21≥ 1
#26≥ 1
#11
0
#13
0
#14
0
#17≥ 1
#25≥ 1
#22≥ 1
#28≥ 1
#2
0
#4
0
#6
0
#7
0
#8≥ 1
#9≥ 1
#29≥ 1
#5
1
#3
1
Node 1Lower bound: 0
Node 2Lower bound: 0
x52
Node 3Lower bound: 1
x52, x53
Node 4Lower bound: 0
x52, x53
Node 5Lower bound: 1
x52, x53, x51
Node 6Lower bound: 0
x52, x53, x51
Node 7Lower bound: 0x52, x53, x51, x55
Node 29Lower bound: ≥ 1
x52, x53, x51, x55
Node 8Lower bound: ≥ 1
x52, x53, x51, x55, x54
Node 9Lower bound: ≥ 1
x52, x53, x51, x55, x54
Node 10Lower bound: 0
x52
Node 11Lower bound: 0
x52, x51
Node 12Lower bound: 0
x52, x51
Node 15Lower bound: 0
x52, x51, x54
Node 16Lower bound: ≥ 1
x52, x51, x54, x55
Node 23Lower bound: 0x52, x51, x54, x55
Node 24Lower bound: ≥ 1
x52, x51, x54, x55, x53
Node 27Lower bound: ≥ 1
x52, x51, x54, x55, x53
Node 18Lower bound: 0
x52, x51, x54
Node 19Lower bound: 0x52, x51, x54, x53
Node 20Lower bound: ≥ 1
x52, x51, x54, x53, x55
Node 21Lower bound: ≥ 1
x52, x51, x54, x53, x55
Node 26Lower bound: ≥ 1
x52, x51, x54, x53
Node 16Lower bound: ≥ 10
x52, x51, x54, x53
Node 13Lower bound: 0
x52, x51, x53
Node 28Lower bound: ≥ 1
x52, x51, x53
Node 14Lower bound: 0x52, x51, x53, x54
Node 22Lower bound: ≥ 1
x52, x51, x53, x54
Node 17Lower bound: ≥ 1
x52, x51, x53, x54, x55
Node 25Lower bound: ≥ 1
x52, x51, x53, x54, x55
Statistic with LPTotal nodes: 29Max depth: 5
Statistic without LPTotal nodes: 2154
Max depth: 21
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 22 / 62
![Page 58: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/58.jpg)
Search tree1 2 3 4
#1
0
#10
0
#12
0
#15
0
#16≥ 1
#23
0
#24≥ 1
#27≥ 1
#18
0
#19
0
#20≥ 1
#21≥ 1
#26≥ 1
#11
0
#13
0
#14
0
#17≥ 1
#25≥ 1
#22≥ 1
#28≥ 1
#2
0
#4
0
#6
0
#7
0
#8≥ 1
#9≥ 1
#29≥ 1
#5
1
#3
1
Node 1Lower bound: 0
Node 2Lower bound: 0
x52
Node 3Lower bound: 1
x52, x53
Node 4Lower bound: 0
x52, x53
Node 5Lower bound: 1
x52, x53, x51
Node 6Lower bound: 0
x52, x53, x51
Node 7Lower bound: 0x52, x53, x51, x55
Node 29Lower bound: ≥ 1
x52, x53, x51, x55
Node 8Lower bound: ≥ 1
x52, x53, x51, x55, x54
Node 9Lower bound: ≥ 1
x52, x53, x51, x55, x54
Node 10Lower bound: 0
x52
Node 11Lower bound: 0
x52, x51
Node 12Lower bound: 0
x52, x51
Node 15Lower bound: 0
x52, x51, x54
Node 16Lower bound: ≥ 1
x52, x51, x54, x55
Node 23Lower bound: 0x52, x51, x54, x55
Node 24Lower bound: ≥ 1
x52, x51, x54, x55, x53
Node 27Lower bound: ≥ 1
x52, x51, x54, x55, x53
Node 18Lower bound: 0
x52, x51, x54
Node 19Lower bound: 0x52, x51, x54, x53
Node 20Lower bound: ≥ 1
x52, x51, x54, x53, x55
Node 21Lower bound: ≥ 1
x52, x51, x54, x53, x55
Node 26Lower bound: ≥ 1
x52, x51, x54, x53
Node 16Lower bound: ≥ 10
x52, x51, x54, x53
Node 13Lower bound: 0
x52, x51, x53
Node 28Lower bound: ≥ 1
x52, x51, x53
Node 14Lower bound: 0x52, x51, x53, x54
Node 22Lower bound: ≥ 1
x52, x51, x53, x54
Node 17Lower bound: ≥ 1
x52, x51, x53, x54, x55
Node 25Lower bound: ≥ 1
x52, x51, x53, x54, x55
Statistic with LPTotal nodes: 29Max depth: 5
Statistic without LPTotal nodes: 2154
Max depth: 21
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 22 / 62
![Page 59: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/59.jpg)
Search tree1 2 3 4
#1
0
#10
0
#12
0
#15
0
#16≥ 1
#23
0
#24≥ 1
#27≥ 1
#18
0
#19
0
#20≥ 1
#21≥ 1
#26≥ 1
#11
0
#13
0
#14
0
#17≥ 1
#25≥ 1
#22≥ 1
#28≥ 1
#2
0
#4
0
#6
0
#7
0
#8≥ 1
#9≥ 1
#29≥ 1
#5
1
#3
1
Node 1Lower bound: 0
Node 2Lower bound: 0
x52
Node 3Lower bound: 1
x52, x53
Node 4Lower bound: 0
x52, x53
Node 5Lower bound: 1
x52, x53, x51
Node 6Lower bound: 0
x52, x53, x51
Node 7Lower bound: 0x52, x53, x51, x55
Node 29Lower bound: ≥ 1
x52, x53, x51, x55
Node 8Lower bound: ≥ 1
x52, x53, x51, x55, x54
Node 9Lower bound: ≥ 1
x52, x53, x51, x55, x54
Node 10Lower bound: 0
x52
Node 11Lower bound: 0
x52, x51
Node 12Lower bound: 0
x52, x51
Node 15Lower bound: 0
x52, x51, x54
Node 16Lower bound: ≥ 1
x52, x51, x54, x55
Node 23Lower bound: 0x52, x51, x54, x55
Node 24Lower bound: ≥ 1
x52, x51, x54, x55, x53
Node 27Lower bound: ≥ 1
x52, x51, x54, x55, x53
Node 18Lower bound: 0
x52, x51, x54
Node 19Lower bound: 0x52, x51, x54, x53
Node 20Lower bound: ≥ 1
x52, x51, x54, x53, x55
Node 21Lower bound: ≥ 1
x52, x51, x54, x53, x55
Node 26Lower bound: ≥ 1
x52, x51, x54, x53
Node 16Lower bound: ≥ 10
x52, x51, x54, x53
Node 13Lower bound: 0
x52, x51, x53
Node 28Lower bound: ≥ 1
x52, x51, x53
Node 14Lower bound: 0x52, x51, x53, x54
Node 22Lower bound: ≥ 1
x52, x51, x53, x54
Node 17Lower bound: ≥ 1
x52, x51, x53, x54, x55
Node 25Lower bound: ≥ 1
x52, x51, x53, x54, x55
Statistic with LPTotal nodes: 29Max depth: 5
Statistic without LPTotal nodes: 2154
Max depth: 21
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 22 / 62
![Page 60: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/60.jpg)
Search tree1 2 3 4
#1
0
#10
0
#12
0
#15
0
#16≥ 1
#23
0
#24≥ 1
#27≥ 1
#18
0
#19
0
#20≥ 1
#21≥ 1
#26≥ 1
#11
0
#13
0
#14
0
#17≥ 1
#25≥ 1
#22≥ 1
#28≥ 1
#2
0
#4
0
#6
0
#7
0
#8≥ 1
#9≥ 1
#29≥ 1
#5
1
#3
1
Node 1Lower bound: 0
Node 2Lower bound: 0
x52
Node 3Lower bound: 1
x52, x53
Node 4Lower bound: 0
x52, x53
Node 5Lower bound: 1
x52, x53, x51
Node 6Lower bound: 0
x52, x53, x51
Node 7Lower bound: 0x52, x53, x51, x55
Node 29Lower bound: ≥ 1
x52, x53, x51, x55
Node 8Lower bound: ≥ 1
x52, x53, x51, x55, x54
Node 9Lower bound: ≥ 1
x52, x53, x51, x55, x54
Node 10Lower bound: 0
x52
Node 11Lower bound: 0
x52, x51
Node 12Lower bound: 0
x52, x51
Node 15Lower bound: 0
x52, x51, x54
Node 16Lower bound: ≥ 1
x52, x51, x54, x55
Node 23Lower bound: 0x52, x51, x54, x55
Node 24Lower bound: ≥ 1
x52, x51, x54, x55, x53
Node 27Lower bound: ≥ 1
x52, x51, x54, x55, x53
Node 18Lower bound: 0
x52, x51, x54
Node 19Lower bound: 0x52, x51, x54, x53
Node 20Lower bound: ≥ 1
x52, x51, x54, x53, x55
Node 21Lower bound: ≥ 1
x52, x51, x54, x53, x55
Node 26Lower bound: ≥ 1
x52, x51, x54, x53
Node 16Lower bound: ≥ 10
x52, x51, x54, x53
Node 13Lower bound: 0
x52, x51, x53
Node 28Lower bound: ≥ 1
x52, x51, x53
Node 14Lower bound: 0x52, x51, x53, x54
Node 22Lower bound: ≥ 1
x52, x51, x53, x54
Node 17Lower bound: ≥ 1
x52, x51, x53, x54, x55
Node 25Lower bound: ≥ 1
x52, x51, x53, x54, x55
Statistic with LPTotal nodes: 29Max depth: 5
Statistic without LPTotal nodes: 2154
Max depth: 21
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 22 / 62
![Page 61: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/61.jpg)
Search tree1 2 3 4
#1
0
#10
0
#12
0
#15
0
#16≥ 1
#23
0
#24≥ 1
#27≥ 1
#18
0
#19
0
#20≥ 1
#21≥ 1
#26≥ 1
#11
0
#13
0
#14
0
#17≥ 1
#25≥ 1
#22≥ 1
#28≥ 1
#2
0
#4
0
#6
0
#7
0
#8≥ 1
#9≥ 1
#29≥ 1
#5
1
#3
1
Node 1Lower bound: 0
Node 2Lower bound: 0
x52
Node 3Lower bound: 1
x52, x53
Node 4Lower bound: 0
x52, x53
Node 5Lower bound: 1
x52, x53, x51
Node 6Lower bound: 0
x52, x53, x51
Node 7Lower bound: 0x52, x53, x51, x55
Node 29Lower bound: ≥ 1
x52, x53, x51, x55
Node 8Lower bound: ≥ 1
x52, x53, x51, x55, x54
Node 9Lower bound: ≥ 1
x52, x53, x51, x55, x54
Node 10Lower bound: 0
x52
Node 11Lower bound: 0
x52, x51
Node 12Lower bound: 0
x52, x51
Node 15Lower bound: 0
x52, x51, x54
Node 16Lower bound: ≥ 1
x52, x51, x54, x55
Node 23Lower bound: 0x52, x51, x54, x55
Node 24Lower bound: ≥ 1
x52, x51, x54, x55, x53
Node 27Lower bound: ≥ 1
x52, x51, x54, x55, x53
Node 18Lower bound: 0
x52, x51, x54
Node 19Lower bound: 0x52, x51, x54, x53
Node 20Lower bound: ≥ 1
x52, x51, x54, x53, x55
Node 21Lower bound: ≥ 1
x52, x51, x54, x53, x55
Node 26Lower bound: ≥ 1
x52, x51, x54, x53
Node 16Lower bound: ≥ 10
x52, x51, x54, x53
Node 13Lower bound: 0
x52, x51, x53
Node 28Lower bound: ≥ 1
x52, x51, x53
Node 14Lower bound: 0x52, x51, x53, x54
Node 22Lower bound: ≥ 1
x52, x51, x53, x54
Node 17Lower bound: ≥ 1
x52, x51, x53, x54, x55
Node 25Lower bound: ≥ 1
x52, x51, x53, x54, x55
Statistic with LPTotal nodes: 29Max depth: 5
Statistic without LPTotal nodes: 2154
Max depth: 21
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 22 / 62
![Page 62: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/62.jpg)
Search tree1 2 3 4
#1
0
#10
0
#12
0
#15
0
#16≥ 1
#23
0
#24≥ 1
#27≥ 1
#18
0
#19
0
#20≥ 1
#21≥ 1
#26≥ 1
#11
0
#13
0
#14
0
#17≥ 1
#25≥ 1
#22≥ 1
#28≥ 1
#2
0
#4
0
#6
0
#7
0
#8≥ 1
#9≥ 1
#29≥ 1
#5
1
#3
1
Node 1Lower bound: 0
Node 2Lower bound: 0
x52
Node 3Lower bound: 1
x52, x53
Node 4Lower bound: 0
x52, x53
Node 5Lower bound: 1
x52, x53, x51
Node 6Lower bound: 0
x52, x53, x51
Node 7Lower bound: 0x52, x53, x51, x55
Node 29Lower bound: ≥ 1
x52, x53, x51, x55
Node 8Lower bound: ≥ 1
x52, x53, x51, x55, x54
Node 9Lower bound: ≥ 1
x52, x53, x51, x55, x54
Node 10Lower bound: 0
x52
Node 11Lower bound: 0
x52, x51
Node 12Lower bound: 0
x52, x51
Node 15Lower bound: 0
x52, x51, x54
Node 16Lower bound: ≥ 1
x52, x51, x54, x55
Node 23Lower bound: 0x52, x51, x54, x55
Node 24Lower bound: ≥ 1
x52, x51, x54, x55, x53
Node 27Lower bound: ≥ 1
x52, x51, x54, x55, x53
Node 18Lower bound: 0
x52, x51, x54
Node 19Lower bound: 0x52, x51, x54, x53
Node 20Lower bound: ≥ 1
x52, x51, x54, x53, x55
Node 21Lower bound: ≥ 1
x52, x51, x54, x53, x55
Node 26Lower bound: ≥ 1
x52, x51, x54, x53
Node 16Lower bound: ≥ 10
x52, x51, x54, x53
Node 13Lower bound: 0
x52, x51, x53
Node 28Lower bound: ≥ 1
x52, x51, x53
Node 14Lower bound: 0x52, x51, x53, x54
Node 22Lower bound: ≥ 1
x52, x51, x53, x54
Node 17Lower bound: ≥ 1
x52, x51, x53, x54, x55
Node 25Lower bound: ≥ 1
x52, x51, x53, x54, x55
Statistic with LPTotal nodes: 29Max depth: 5
Statistic without LPTotal nodes: 2154
Max depth: 21
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 22 / 62
![Page 63: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/63.jpg)
Search tree1 2 3 4
#1
0
#10
0
#12
0
#15
0
#16≥ 1
#23
0
#24≥ 1
#27≥ 1
#18
0
#19
0
#20≥ 1
#21≥ 1
#26≥ 1
#11
0
#13
0
#14
0
#17≥ 1
#25≥ 1
#22≥ 1
#28≥ 1
#2
0
#4
0
#6
0
#7
0
#8≥ 1
#9≥ 1
#29≥ 1
#5
1
#3
1
Node 1Lower bound: 0
Node 2Lower bound: 0
x52
Node 3Lower bound: 1
x52, x53
Node 4Lower bound: 0
x52, x53
Node 5Lower bound: 1
x52, x53, x51
Node 6Lower bound: 0
x52, x53, x51
Node 7Lower bound: 0x52, x53, x51, x55
Node 29Lower bound: ≥ 1
x52, x53, x51, x55
Node 8Lower bound: ≥ 1
x52, x53, x51, x55, x54
Node 9Lower bound: ≥ 1
x52, x53, x51, x55, x54
Node 10Lower bound: 0
x52
Node 11Lower bound: 0
x52, x51
Node 12Lower bound: 0
x52, x51
Node 15Lower bound: 0
x52, x51, x54
Node 16Lower bound: ≥ 1
x52, x51, x54, x55
Node 23Lower bound: 0x52, x51, x54, x55
Node 24Lower bound: ≥ 1
x52, x51, x54, x55, x53
Node 27Lower bound: ≥ 1
x52, x51, x54, x55, x53
Node 18Lower bound: 0
x52, x51, x54
Node 19Lower bound: 0x52, x51, x54, x53
Node 20Lower bound: ≥ 1
x52, x51, x54, x53, x55
Node 21Lower bound: ≥ 1
x52, x51, x54, x53, x55
Node 26Lower bound: ≥ 1
x52, x51, x54, x53
Node 16Lower bound: ≥ 10
x52, x51, x54, x53
Node 13Lower bound: 0
x52, x51, x53
Node 28Lower bound: ≥ 1
x52, x51, x53
Node 14Lower bound: 0x52, x51, x53, x54
Node 22Lower bound: ≥ 1
x52, x51, x53, x54
Node 17Lower bound: ≥ 1
x52, x51, x53, x54, x55
Node 25Lower bound: ≥ 1
x52, x51, x53, x54, x55
Statistic with LPTotal nodes: 29Max depth: 5
Statistic without LPTotal nodes: 2154
Max depth: 21
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 22 / 62
![Page 64: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/64.jpg)
Search tree1 2 3 4
#1
0
#10
0
#12
0
#15
0
#16≥ 1
#23
0
#24≥ 1
#27≥ 1
#18
0
#19
0
#20≥ 1
#21≥ 1
#26≥ 1
#11
0
#13
0
#14
0
#17≥ 1
#25≥ 1
#22≥ 1
#28≥ 1
#2
0
#4
0
#6
0
#7
0
#8≥ 1
#9≥ 1
#29≥ 1
#5
1
#3
1
Node 1Lower bound: 0
Node 2Lower bound: 0
x52
Node 3Lower bound: 1
x52, x53
Node 4Lower bound: 0
x52, x53
Node 5Lower bound: 1
x52, x53, x51
Node 6Lower bound: 0
x52, x53, x51
Node 7Lower bound: 0x52, x53, x51, x55
Node 29Lower bound: ≥ 1
x52, x53, x51, x55
Node 8Lower bound: ≥ 1
x52, x53, x51, x55, x54
Node 9Lower bound: ≥ 1
x52, x53, x51, x55, x54
Node 10Lower bound: 0
x52
Node 11Lower bound: 0
x52, x51
Node 12Lower bound: 0
x52, x51
Node 15Lower bound: 0
x52, x51, x54
Node 16Lower bound: ≥ 1
x52, x51, x54, x55
Node 23Lower bound: 0x52, x51, x54, x55
Node 24Lower bound: ≥ 1
x52, x51, x54, x55, x53
Node 27Lower bound: ≥ 1
x52, x51, x54, x55, x53
Node 18Lower bound: 0
x52, x51, x54
Node 19Lower bound: 0x52, x51, x54, x53
Node 20Lower bound: ≥ 1
x52, x51, x54, x53, x55
Node 21Lower bound: ≥ 1
x52, x51, x54, x53, x55
Node 26Lower bound: ≥ 1
x52, x51, x54, x53
Node 16Lower bound: ≥ 10
x52, x51, x54, x53
Node 13Lower bound: 0
x52, x51, x53
Node 28Lower bound: ≥ 1
x52, x51, x53
Node 14Lower bound: 0x52, x51, x53, x54
Node 22Lower bound: ≥ 1
x52, x51, x53, x54
Node 17Lower bound: ≥ 1
x52, x51, x53, x54, x55
Node 25Lower bound: ≥ 1
x52, x51, x53, x54, x55
Statistic with LPTotal nodes: 29Max depth: 5
Statistic without LPTotal nodes: 2154
Max depth: 21
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 22 / 62
![Page 65: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/65.jpg)
Search tree1 2 3 4
#1
0
#10
0
#12
0
#15
0
#16≥ 1
#23
0
#24≥ 1
#27≥ 1
#18
0
#19
0
#20≥ 1
#21≥ 1
#26≥ 1
#11
0
#13
0
#14
0
#17≥ 1
#25≥ 1
#22≥ 1
#28≥ 1
#2
0
#4
0
#6
0
#7
0
#8≥ 1
#9≥ 1
#29≥ 1
#5
1
#3
1
Node 1Lower bound: 0
Node 2Lower bound: 0
x52
Node 3Lower bound: 1
x52, x53
Node 4Lower bound: 0
x52, x53
Node 5Lower bound: 1
x52, x53, x51
Node 6Lower bound: 0
x52, x53, x51
Node 7Lower bound: 0x52, x53, x51, x55
Node 29Lower bound: ≥ 1
x52, x53, x51, x55
Node 8Lower bound: ≥ 1
x52, x53, x51, x55, x54
Node 9Lower bound: ≥ 1
x52, x53, x51, x55, x54
Node 10Lower bound: 0
x52
Node 11Lower bound: 0
x52, x51
Node 12Lower bound: 0
x52, x51
Node 15Lower bound: 0
x52, x51, x54
Node 16Lower bound: ≥ 1
x52, x51, x54, x55
Node 23Lower bound: 0x52, x51, x54, x55
Node 24Lower bound: ≥ 1
x52, x51, x54, x55, x53
Node 27Lower bound: ≥ 1
x52, x51, x54, x55, x53
Node 18Lower bound: 0
x52, x51, x54
Node 19Lower bound: 0x52, x51, x54, x53
Node 20Lower bound: ≥ 1
x52, x51, x54, x53, x55
Node 21Lower bound: ≥ 1
x52, x51, x54, x53, x55
Node 26Lower bound: ≥ 1
x52, x51, x54, x53
Node 16Lower bound: ≥ 10
x52, x51, x54, x53
Node 13Lower bound: 0
x52, x51, x53
Node 28Lower bound: ≥ 1
x52, x51, x53
Node 14Lower bound: 0x52, x51, x53, x54
Node 22Lower bound: ≥ 1
x52, x51, x53, x54
Node 17Lower bound: ≥ 1
x52, x51, x53, x54, x55
Node 25Lower bound: ≥ 1
x52, x51, x53, x54, x55
Statistic with LPTotal nodes: 29Max depth: 5
Statistic without LPTotal nodes: 2154
Max depth: 21
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 22 / 62
![Page 66: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/66.jpg)
Search tree1 2 3 4
#1
0
#10
0
#12
0
#15
0
#16≥ 1
#23
0
#24≥ 1
#27≥ 1
#18
0
#19
0
#20≥ 1
#21≥ 1
#26≥ 1
#11
0
#13
0
#14
0
#17≥ 1
#25≥ 1
#22≥ 1
#28≥ 1
#2
0
#4
0
#6
0
#7
0
#8≥ 1
#9≥ 1
#29≥ 1
#5
1
#3
1
Node 1Lower bound: 0
Node 2Lower bound: 0
x52
Node 3Lower bound: 1
x52, x53
Node 4Lower bound: 0
x52, x53
Node 5Lower bound: 1
x52, x53, x51
Node 6Lower bound: 0
x52, x53, x51
Node 7Lower bound: 0x52, x53, x51, x55
Node 29Lower bound: ≥ 1
x52, x53, x51, x55
Node 8Lower bound: ≥ 1
x52, x53, x51, x55, x54
Node 9Lower bound: ≥ 1
x52, x53, x51, x55, x54
Node 10Lower bound: 0
x52
Node 11Lower bound: 0
x52, x51
Node 12Lower bound: 0
x52, x51
Node 15Lower bound: 0
x52, x51, x54
Node 16Lower bound: ≥ 1
x52, x51, x54, x55
Node 23Lower bound: 0x52, x51, x54, x55
Node 24Lower bound: ≥ 1
x52, x51, x54, x55, x53
Node 27Lower bound: ≥ 1
x52, x51, x54, x55, x53
Node 18Lower bound: 0
x52, x51, x54
Node 19Lower bound: 0x52, x51, x54, x53
Node 20Lower bound: ≥ 1
x52, x51, x54, x53, x55
Node 21Lower bound: ≥ 1
x52, x51, x54, x53, x55
Node 26Lower bound: ≥ 1
x52, x51, x54, x53
Node 16Lower bound: ≥ 10
x52, x51, x54, x53
Node 13Lower bound: 0
x52, x51, x53
Node 28Lower bound: ≥ 1
x52, x51, x53
Node 14Lower bound: 0x52, x51, x53, x54
Node 22Lower bound: ≥ 1
x52, x51, x53, x54
Node 17Lower bound: ≥ 1
x52, x51, x53, x54, x55
Node 25Lower bound: ≥ 1
x52, x51, x53, x54, x55
Statistic with LPTotal nodes: 29Max depth: 5
Statistic without LPTotal nodes: 2154
Max depth: 21
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 22 / 62
![Page 67: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/67.jpg)
node left depth frac curdualbound dualbound primalbound1 0 0 6 0.000000e+00 0.000000e+00 --1 2 0 6 0.000000e+00 0.000000e+00 --2 3 1 4 0.000000e+00 0.000000e+00 --3 4 2 6 1.000000e+00 0.000000e+00 --4 5 2 2 0.000000e+00 0.000000e+00 --
* 5 2 3 - 1.000000e+00 0.000000e+00 1.000000e+006 3 3 2 0.000000e+00 0.000000e+00 1.000000e+007 4 4 2 0.000000e+00 0.000000e+00 1.000000e+008 3 5 - -- 0.000000e+00 1.000000e+009 2 5 - -- 0.000000e+00 1.000000e+00
10 3 1 2 4.440892e-16 0.000000e+00 1.000000e+0011 4 2 2 4.440892e-16 0.000000e+00 1.000000e+0012 5 2 4 4.440892e-16 0.000000e+00 1.000000e+0013 6 3 4 1.776357e-15 0.000000e+00 1.000000e+0014 7 4 4 1.776357e-15 0.000000e+00 1.000000e+00
node left depth frac curdualbound dualbound primalbound15 8 3 4 1.184238e-15 0.000000e+00 1.000000e+0016 7 4 - -- 0.000000e+00 1.000000e+0017 6 5 - -- 0.000000e+00 1.000000e+0018 7 3 2 4.440892e-16 0.000000e+00 1.000000e+0019 8 4 4 8.881784e-16 0.000000e+00 1.000000e+0020 7 5 - -- 0.000000e+00 1.000000e+0021 6 5 - -- 0.000000e+00 1.000000e+0022 5 4 - -- 0.000000e+00 1.000000e+0023 6 4 2 1.184238e-15 0.000000e+00 1.000000e+0024 5 5 - -- 0.000000e+00 1.000000e+0025 4 5 - -- 0.000000e+00 1.000000e+0026 3 4 - -- 0.000000e+00 1.000000e+0027 2 5 - -- 0.000000e+00 1.000000e+0028 1 3 - -- 0.000000e+00 1.000000e+0029 0 4 - -- 1.000000e+00 1.000000e+00Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 23 / 62
![Page 68: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/68.jpg)
Search tree1 2 3 4
#1
0
#10
0
#12
0
#15
0
#16≥ 1
#23
0
#24≥ 1
#27≥ 1
#18
0
#19
0
#20≥ 1
#21≥ 1
#26≥ 1
#11
0
#13
0
#14
0
#17≥ 1
#25≥ 1
#22≥ 1
#28≥ 1
#2
0
#4
0
#6
0
#7
0
#8≥ 1
#9≥ 1
#29≥ 1
#5
1
#3
1
Node 1Lower bound: 0
Node 2Lower bound: 0
x52
Node 3Lower bound: 1
x52, x53
Node 4Lower bound: 0
x52, x53
Node 5Lower bound: 1
x52, x53, x51
Node 6Lower bound: 0
x52, x53, x51
Node 7Lower bound: 0x52, x53, x51, x55
Node 29Lower bound: ≥ 1
x52, x53, x51, x55
Node 8Lower bound: ≥ 1
x52, x53, x51, x55, x54
Node 9Lower bound: ≥ 1
x52, x53, x51, x55, x54
Node 10Lower bound: 0
x52
Node 11Lower bound: 0
x52, x51
Node 12Lower bound: 0
x52, x51
Node 15Lower bound: 0
x52, x51, x54
Node 16Lower bound: ≥ 1
x52, x51, x54, x55
Node 23Lower bound: 0x52, x51, x54, x55
Node 24Lower bound: ≥ 1
x52, x51, x54, x55, x53
Node 27Lower bound: ≥ 1
x52, x51, x54, x55, x53
Node 18Lower bound: 0
x52, x51, x54
Node 19Lower bound: 0x52, x51, x54, x53
Node 20Lower bound: ≥ 1
x52, x51, x54, x53, x55
Node 21Lower bound: ≥ 1
x52, x51, x54, x53, x55
Node 26Lower bound: ≥ 1
x52, x51, x54, x53
Node 16Lower bound: ≥ 10
x52, x51, x54, x53
Node 13Lower bound: 0
x52, x51, x53
Node 28Lower bound: ≥ 1
x52, x51, x53
Node 14Lower bound: 0x52, x51, x53, x54
Node 22Lower bound: ≥ 1
x52, x51, x53, x54
Node 17Lower bound: ≥ 1
x52, x51, x53, x54, x55
Node 25Lower bound: ≥ 1
x52, x51, x53, x54, x55
Statistic with LPTotal nodes: 29Max depth: 5
Statistic without LPTotal nodes: 2154
Max depth: 21
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 24 / 62
![Page 69: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/69.jpg)
Search tree1 2 3 4
#1
0
#10
0
#12
0
#15
0
#16≥ 1
#23
0
#24≥ 1
#27≥ 1
#18
0
#19
0
#20≥ 1
#21≥ 1
#26≥ 1
#11
0
#13
0
#14
0
#17≥ 1
#25≥ 1
#22≥ 1
#28≥ 1
#2
0
#4
0
#6
0
#7
0
#8≥ 1
#9≥ 1
#29≥ 1
#5
1
#3
1
Node 1Lower bound: 0
Node 2Lower bound: 0
x52
Node 3Lower bound: 1
x52, x53
Node 4Lower bound: 0
x52, x53
Node 5Lower bound: 1
x52, x53, x51
Node 6Lower bound: 0
x52, x53, x51
Node 7Lower bound: 0x52, x53, x51, x55
Node 29Lower bound: ≥ 1
x52, x53, x51, x55
Node 8Lower bound: ≥ 1
x52, x53, x51, x55, x54
Node 9Lower bound: ≥ 1
x52, x53, x51, x55, x54
Node 10Lower bound: 0
x52
Node 11Lower bound: 0
x52, x51
Node 12Lower bound: 0
x52, x51
Node 15Lower bound: 0
x52, x51, x54
Node 16Lower bound: ≥ 1
x52, x51, x54, x55
Node 23Lower bound: 0x52, x51, x54, x55
Node 24Lower bound: ≥ 1
x52, x51, x54, x55, x53
Node 27Lower bound: ≥ 1
x52, x51, x54, x55, x53
Node 18Lower bound: 0
x52, x51, x54
Node 19Lower bound: 0x52, x51, x54, x53
Node 20Lower bound: ≥ 1
x52, x51, x54, x53, x55
Node 21Lower bound: ≥ 1
x52, x51, x54, x53, x55
Node 26Lower bound: ≥ 1
x52, x51, x54, x53
Node 16Lower bound: ≥ 10
x52, x51, x54, x53
Node 13Lower bound: 0
x52, x51, x53
Node 28Lower bound: ≥ 1
x52, x51, x53
Node 14Lower bound: 0x52, x51, x53, x54
Node 22Lower bound: ≥ 1
x52, x51, x53, x54
Node 17Lower bound: ≥ 1
x52, x51, x53, x54, x55
Node 25Lower bound: ≥ 1
x52, x51, x53, x54, x55
Statistic with LPTotal nodes: 29Max depth: 5
Statistic without LPTotal nodes: 2154
Max depth: 21
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 24 / 62
![Page 70: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/70.jpg)
Summary
. A solution of a linear relaxation gives a proven dual boundI in case of minimization it is a lower boundI in case of maximization it is a upper bound
. Linear relaxation is a natural relaxation for an integer programI omitting integrality conditions
. Linear relaxation gives a global view w.r.t. all linear constraints
. Linear relaxation guides the search via fractional variables
Coming up:
. How can a linear program be solved?
. How can an integer program be solved?
. For what is the linear programming relaxation used within aninteger programming solver?
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 25 / 62
![Page 71: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/71.jpg)
Summary
. A solution of a linear relaxation gives a proven dual boundI in case of minimization it is a lower boundI in case of maximization it is a upper bound
. Linear relaxation is a natural relaxation for an integer programI omitting integrality conditions
. Linear relaxation gives a global view w.r.t. all linear constraints
. Linear relaxation guides the search via fractional variables
Coming up:
. How can a linear program be solved?
. How can an integer program be solved?
. For what is the linear programming relaxation used within aninteger programming solver?
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 25 / 62
![Page 72: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/72.jpg)
Outline
Integer Programming for Constraint Programmers
1 Introduction
2 Linear programming
3 Integer (linear) programming
4 Summary
5 Discussion
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 26 / 62
![Page 73: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/73.jpg)
General linear programs (LPs)
Continuous variables: xi ≥ 0, lbi ≤ xi ≤ ubi , xi free (columns)
Linear constraints: a1x1 + . . . + anxn S b (rows)
Linear objective: c1x1 + . . . + cnxn (→ min/max)
Computational standard form: min{c ′x | Ax = b, x ≥ 0
}. feasible region is convex and
polyhedral
. problem may beI unbounded,I infeasible, orI optimal
. always optimal vertex solution(if an optimal solution exists)
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 27 / 62
![Page 74: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/74.jpg)
General linear programs (LPs)
Continuous variables: xi ≥ 0, lbi ≤ xi ≤ ubi , xi free (columns)
Linear constraints: a1x1 + . . . + anxn S b (rows)
Linear objective: c1x1 + . . . + cnxn (→ min/max)
Computational standard form: min{c ′x | Ax = b, x ≥ 0
}
. feasible region is convex andpolyhedral
. problem may beI unbounded,I infeasible, orI optimal
. always optimal vertex solution(if an optimal solution exists)
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 27 / 62
![Page 75: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/75.jpg)
General linear programs (LPs)
Continuous variables: xi ≥ 0, lbi ≤ xi ≤ ubi , xi free (columns)
Linear constraints: a1x1 + . . . + anxn S b (rows)
Linear objective: c1x1 + . . . + cnxn (→ min/max)
Computational standard form: min{c ′x | Ax = b, x ≥ 0
}. feasible region is convex and
polyhedral
. problem may beI unbounded,I infeasible, orI optimal
. always optimal vertex solution(if an optimal solution exists)
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 27 / 62
![Page 76: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/76.jpg)
General linear programs (LPs)
Continuous variables: xi ≥ 0, lbi ≤ xi ≤ ubi , xi free (columns)
Linear constraints: a1x1 + . . . + anxn S b (rows)
Linear objective: c1x1 + . . . + cnxn (→ min/max)
Computational standard form: min{c ′x | Ax = b, x ≥ 0
}. feasible region is convex and
polyhedral
. problem may beI unbounded,I infeasible, orI optimal
. always optimal vertex solution(if an optimal solution exists)
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 27 / 62
![Page 77: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/77.jpg)
General linear programs (LPs)
Continuous variables: xi ≥ 0, lbi ≤ xi ≤ ubi , xi free (columns)
Linear constraints: a1x1 + . . . + anxn S b (rows)
Linear objective: c1x1 + . . . + cnxn (→ min/max)
Computational standard form: min{c ′x | Ax = b, x ≥ 0
}. feasible region is convex and
polyhedral
. problem may beI unbounded,I infeasible, orI optimal
. always optimal vertex solution(if an optimal solution exists)
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 27 / 62
![Page 78: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/78.jpg)
General linear programs (LPs)
Continuous variables: xi ≥ 0, lbi ≤ xi ≤ ubi , xi free (columns)
Linear constraints: a1x1 + . . . + anxn S b (rows)
Linear objective: c1x1 + . . . + cnxn (→ min/max)
Computational standard form: min{c ′x | Ax = b, x ≥ 0
}. feasible region is convex and
polyhedral
. problem may beI unbounded,I infeasible, orI optimal
. always optimal vertex solution(if an optimal solution exists)
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 27 / 62
![Page 79: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/79.jpg)
An incomplete history on linear programming
1827 J. Fourier: Variable elimination algorithm (“Fourier-Motzkin”)
1947 G. Dantzig: Primal Simplex algorithm
1954 C. Lemke and E. Beale: Dual Simplex algorithmI by far the most used algorithm to solve LPsI worst case exponential running time
1975 L. Kantorovich and T.C. Koopmans:Nobel prize for Economics
1979 L. Khachiyan: Ellipsoid MethodI first polynomial time algorithm
1984 N. Karmarkar: Interior Point Method/Barrier Algorithm
≥ 1987 Primal-Dual Interior Point AlgorithmsI basis for state-of-the-art interior point implementationsI for single, sparse LPs often faster than simplex
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 28 / 62
![Page 80: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/80.jpg)
An incomplete history on linear programming
1827 J. Fourier: Variable elimination algorithm (“Fourier-Motzkin”)
1947 G. Dantzig: Primal Simplex algorithm
1954 C. Lemke and E. Beale: Dual Simplex algorithmI by far the most used algorithm to solve LPsI worst case exponential running time
1975 L. Kantorovich and T.C. Koopmans:Nobel prize for Economics
1979 L. Khachiyan: Ellipsoid MethodI first polynomial time algorithm
1984 N. Karmarkar: Interior Point Method/Barrier Algorithm
≥ 1987 Primal-Dual Interior Point AlgorithmsI basis for state-of-the-art interior point implementationsI for single, sparse LPs often faster than simplex
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 28 / 62
![Page 81: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/81.jpg)
LP algorithms
simplex algorithm[Dantzig 1947]
ellipsoid method[Khachiyan 1979]
interior point[Karmarkar 1984]
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 29 / 62
![Page 82: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/82.jpg)
An incomplete history on linear programming
1827 J. Fourier: Variable elimination algorithm (“Fourier-Motzkin”)
1947 G. Dantzig: Primal Simplex algorithm
1954 C. Lemke and E. Beale: Dual Simplex algorithmI by far the most used algorithm to solve LPsI worst case exponential running time
1975 L. Kantorovich and T.C. Koopmans:Nobel prize for Economics
1979 L. Khachiyan: Ellipsoid MethodI first polynomial time algorithm
1984 N. Karmarkar: Interior Point Method/Barrier Algorithm
≥ 1987 Primal-Dual Interior Point AlgorithmsI basis for state-of-the-art interior point implementationsI for single, sparse LPs often faster than simplex
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 30 / 62
![Page 83: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/83.jpg)
Leonid Kantorovich & Tjalling C. Koopmans
1975: Nobel price in Economic Science
“Optimal allocation of ressources”
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 31 / 62
![Page 84: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/84.jpg)
An incomplete history on linear programming
1827 J. Fourier: Variable elimination algorithm (“Fourier-Motzkin”)
1947 G. Dantzig: Primal Simplex algorithm
1954 C. Lemke and E. Beale: Dual Simplex algorithmI by far the most used algorithm to solve LPsI worst case exponential running time
1975 L. Kantorovich and T.C. Koopmans:Nobel prize for Economics
1979 L. Khachiyan: Ellipsoid MethodI first polynomial time algorithm
1984 N. Karmarkar: Interior Point Method/Barrier Algorithm
≥ 1987 Primal-Dual Interior Point AlgorithmsI basis for state-of-the-art interior point implementationsI for single, sparse LPs often faster than simplex
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 32 / 62
![Page 85: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/85.jpg)
LP algorithms
simplex algorithm[Dantzig 1947]
ellipsoid method[Khachiyan 1979]
interior point[Karmarkar 1984]
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 33 / 62
![Page 86: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/86.jpg)
LP algorithms
simplex algorithm[Dantzig 1947]
ellipsoid method[Khachiyan 1979]
interior point[Karmarkar 1984]
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 33 / 62
![Page 87: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/87.jpg)
An incomplete history on linear programming
1827 J. Fourier: Variable elimination algorithm (“Fourier-Motzkin”)
1947 G. Dantzig: Primal Simplex algorithm
1954 C. Lemke and E. Beale: Dual Simplex algorithmI by far the most used algorithm to solve LPsI worst case exponential running time
1975 L. Kantorovich and T.C. Koopmans:Nobel prize for Economics
1979 L. Khachiyan: Ellipsoid MethodI first polynomial time algorithm
1984 N. Karmarkar: Interior Point Method/Barrier Algorithm
≥ 1987 Primal-Dual Interior Point AlgorithmsI basis for state-of-the-art interior point implementationsI for single, sparse LPs often faster than simplex
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 34 / 62
![Page 88: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/88.jpg)
A transportation problem
A
B
1
2
3
2e 3e9e
4e
1e
3e
13
9
7
9
6
min 2xA,1 + 3xA,2 + 9xA,3 +4xB,1 + 1xB,2 + 3xB,3
s.t. xA,1 + xA,2 + xA,3 = 13
xB,1 + xB,2 + xB,3 = 9
xA,1 + xB,1 = 7
xA,2 + xB,2 = 9
xA,3 + xB,3 = 6
x ≥ 0
Heuristic solution with objective value 53:
A→ 1 = 7 A→ 2 = 6 B → 2 = 3 B → 3 = 6
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 35 / 62
![Page 89: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/89.jpg)
A transportation problem
A
B
1
2
3
2e 3e9e
4e
1e
3e
13
9
7
9
6
min 2xA,1 + 3xA,2 + 9xA,3 +4xB,1 + 1xB,2 + 3xB,3
s.t. xA,1 + xA,2 + xA,3 = 13
xB,1 + xB,2 + xB,3 = 9
xA,1 + xB,1 = 7
xA,2 + xB,2 = 9
xA,3 + xB,3 = 6
x ≥ 0
Heuristic solution with objective value 53:
A→ 1 = 7 A→ 2 = 6 B → 2 = 3 B → 3 = 6
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 35 / 62
![Page 90: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/90.jpg)
A transportation problem
A
B
1
2
3
2e 3e9e
4e
1e
3e
13
9
7
9
6
min 2xA,1 + 3xA,2 + 9xA,3 +4xB,1 + 1xB,2 + 3xB,3
s.t. xA,1 + xA,2 + xA,3 = 13
xB,1 + xB,2 + xB,3 = 9
xA,1 + xB,1 = 7
xA,2 + xB,2 = 9
xA,3 + xB,3 = 6
x ≥ 0
Heuristic solution with objective value 53:
A→ 1 = 7 A→ 2 = 6 B → 2 = 3 B → 3 = 6
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 35 / 62
![Page 91: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/91.jpg)
A transportation problem
A
B
1
2
3
7
6
3
6
13
9
7
9
6
min 2xA,1 + 3xA,2 + 9xA,3 +4xB,1 + 1xB,2 + 3xB,3
s.t. xA,1 + xA,2 + xA,3 = 13
xB,1 + xB,2 + xB,3 = 9
xA,1 + xB,1 = 7
xA,2 + xB,2 = 9
xA,3 + xB,3 = 6
x ≥ 0
Heuristic solution with objective value 53:
A→ 1 = 7 A→ 2 = 6 B → 2 = 3 B → 3 = 6
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 35 / 62
![Page 92: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/92.jpg)
Dual multipliers: proofing solution quality
min 2xA,1+3xA,2+9xA,3+4xB,1+1xB,2+3xB,3
s.t.
2×
xA,1 +xA,2 +xA,3 = 13
1×
xB,1 +xB,2 +xB,3 = 9
− 1×
xA,1 +xB,1 = 7
xA,2 +xB,2 = 9
2×
xA,3 +xB,3 = 6
x ≥ 0
+
⇒ min ≥ 2xA,1+2xA,2+3xA,3+1xB,1+1xB,2+3xB,3 = 47
Solution is optimal!
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 36 / 62
![Page 93: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/93.jpg)
Dual multipliers: proofing solution quality
min 2xA,1+3xA,2+9xA,3+4xB,1+1xB,2+3xB,3
s.t. 2× xA,1 +xA,2 +xA,3 = 13
1× xB,1 +xB,2 +xB,3 = 9
− 1×
xA,1 +xB,1 = 7
xA,2 +xB,2 = 9
2× xA,3 +xB,3 = 6
x ≥ 0+
⇒ min ≥ 2xA,1+2xA,2+3xA,3+1xB,1+1xB,2+3xB,3 = 47
Solution is optimal!
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 36 / 62
![Page 94: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/94.jpg)
Dual multipliers: proofing solution quality
min 2xA,1+3xA,2+9xA,3+4xB,1+1xB,2+3xB,3
s.t. 3× xA,1 +xA,2 +xA,3 = 13
1× xB,1 +xB,2 +xB,3 = 9
− 1× xA,1 +xB,1 = 7
xA,2 +xB,2 = 9
2× xA,3 +xB,3 = 6
x ≥ 0+
⇒ min ≥ 2xA,1+3xA,2+5xA,3 +1xB,2+3xB,3 = 53
Solution is optimal!
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 36 / 62
![Page 95: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/95.jpg)
Duality
Primal LP
min{cTx | Ax = b, x ≥ 0
} Dual LP
max{bTy | yTA ≤ cT, y ∈ Rm
}Simple observation: For any x , y feasible,
cTx ≥ yTAx = bTy .
. Weak Duality:
min{cTx | Ax = b, x ≥ 0
}≥ max
{bTy | yTA ≤ cT, y ∈ Rm
}. Strong Duality:
min{cTx | Ax = b, x ≥ 0
}= max
{bTy | yTA ≤ cT, y ∈ Rm
}
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 37 / 62
![Page 96: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/96.jpg)
Duality
Primal LP
min{cTx | Ax = b, x ≥ 0
} Dual LP
max{bTy | yTA ≤ cT, y ∈ Rm
}Simple observation: For any x , y feasible,
cTx ≥ yTAx = bTy .
. Weak Duality:
min{cTx | Ax = b, x ≥ 0
}≥ max
{bTy | yTA ≤ cT, y ∈ Rm
}
. Strong Duality:
min{cTx | Ax = b, x ≥ 0
}= max
{bTy | yTA ≤ cT, y ∈ Rm
}
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 37 / 62
![Page 97: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/97.jpg)
Duality
Primal LP
min{cTx | Ax = b, x ≥ 0
} Dual LP
max{bTy | yTA ≤ cT, y ∈ Rm
}Simple observation: For any x , y feasible,
cTx ≥ yTAx = bTy .
. Weak Duality:
min{cTx | Ax = b, x ≥ 0
}≥ max
{bTy | yTA ≤ cT, y ∈ Rm
}. Strong Duality:
min{cTx | Ax = b, x ≥ 0
}= max
{bTy | yTA ≤ cT, y ∈ Rm
}Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 37 / 62
![Page 98: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/98.jpg)
Vertex solutions
Consider n variables, m constraints:
min{cTx | Ax = b, x ≥ 0
}with A ∈ Rm×n, b ∈ Rm, c ∈ Rn.
. If optimal: there always exists an optimal vertex solution.
. Vertices uniquely determined by n tight inequalities:
. In standard from that means
I m equality constraints Ax = b
I n −m tight bounds xi = 0
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 38 / 62
![Page 99: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/99.jpg)
Vertex solutions
Consider n variables, m constraints:
min{cTx | Ax = b, x ≥ 0
}with A ∈ Rm×n, b ∈ Rm, c ∈ Rn.
. If optimal: there always exists an optimal vertex solution.
. Vertices uniquely determined by n tight inequalities:
. In standard from that means
I m equality constraints Ax = b
I n −m tight bounds xi = 0
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 38 / 62
![Page 100: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/100.jpg)
Vertex solutions
Consider n variables, m constraints:
min{cTx | Ax = b, x ≥ 0
}with A ∈ Rm×n, b ∈ Rm, c ∈ Rn.
. If optimal: there always exists an optimal vertex solution.
. Vertices uniquely determined by n tight inequalities:
. In standard from that means
I m equality constraints Ax = b
I n −m tight bounds xi = 0
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 38 / 62
![Page 101: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/101.jpg)
Basic solutionsPrimal solution
. Fix n −m variables: xi = 0 for i ∈ N ⊆ {1, . . . , n}
. m variables remain: xi for i ∈ B = {1, . . . , n} \ N
. Solve linear system with m equations, m variables:
Ax = b ABxB = b xB = A−1B b
Dual multipliers
. Globally: find y such that yTA ≤ cT
. Locally: ignore fixed variables and solve
yTAB = cT
B yT = cT
BA−1B
Basic solution = discrete basis B + primal sol. x + dual mult. y
. In theory: could enumerate(nm
)basic solutions.
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 39 / 62
![Page 102: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/102.jpg)
Basic solutionsPrimal solution
. Fix n −m variables: xi = 0 for i ∈ N ⊆ {1, . . . , n}
. m variables remain: xi for i ∈ B = {1, . . . , n} \ N
. Solve linear system with m equations, m variables:
Ax = b ABxB = b xB = A−1B b
Dual multipliers
. Globally: find y such that yTA ≤ cT
. Locally: ignore fixed variables and solve
yTAB = cT
B yT = cT
BA−1B
Basic solution = discrete basis B + primal sol. x + dual mult. y
. In theory: could enumerate(nm
)basic solutions.
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 39 / 62
![Page 103: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/103.jpg)
Basic solutionsPrimal solution
. Fix n −m variables: xi = 0 for i ∈ N ⊆ {1, . . . , n}
. m variables remain: xi for i ∈ B = {1, . . . , n} \ N
. Solve linear system with m equations, m variables:
Ax = b ABxB = b xB = A−1B b
Dual multipliers
. Globally: find y such that yTA ≤ cT
. Locally: ignore fixed variables and solve
yTAB = cT
B yT = cT
BA−1B
Basic solution = discrete basis B + primal sol. x + dual mult. y
. In theory: could enumerate(nm
)basic solutions.
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 39 / 62
![Page 104: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/104.jpg)
Improving steps. xB is a function of xN :
ABxB + AN xN = b
. xN = 0 xB = A−1B b
. Unfix xi , i ∈ N :
xB = xB − A−1B Ai︸ ︷︷ ︸δi
xi
x1 = 0
x2 = 0
x1 > 0
x2 = 0δ1
x1 = 0
x2 > 0δ2
x
x2 = 0
x3 = 0
αδ1
. Objective change:
cTx = cTx + cixi − cTδixi
= cTx + (ci − yTAi)︸ ︷︷ ︸reduced cost ri
xi
. Reduced cost of xi = obj. change per unit increase of xi
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 40 / 62
![Page 105: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/105.jpg)
Improving steps. xB is a function of xN :
ABxB = b − AN xN
. xN = 0 xB = A−1B b
. Unfix xi , i ∈ N :
xB = xB − A−1B Ai︸ ︷︷ ︸δi
xi
x1 = 0
x2 = 0
x1 > 0
x2 = 0δ1
x1 = 0
x2 > 0δ2
x
x2 = 0
x3 = 0
αδ1
. Objective change:
cTx = cTx + cixi − cTδixi
= cTx + (ci − yTAi)︸ ︷︷ ︸reduced cost ri
xi
. Reduced cost of xi = obj. change per unit increase of xi
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 40 / 62
![Page 106: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/106.jpg)
Improving steps. xB is a function of xN :
xB = A−1B (b − AN xN )
. xN = 0 xB = A−1B b
. Unfix xi , i ∈ N :
xB = xB − A−1B Ai︸ ︷︷ ︸δi
xi
x1 = 0
x2 = 0
x1 > 0
x2 = 0δ1
x1 = 0
x2 > 0δ2
x
x2 = 0
x3 = 0
αδ1
. Objective change:
cTx = cTx + cixi − cTδixi
= cTx + (ci − yTAi)︸ ︷︷ ︸reduced cost ri
xi
. Reduced cost of xi = obj. change per unit increase of xi
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 40 / 62
![Page 107: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/107.jpg)
Improving steps. xB is a function of xN :
xB = A−1B (b − AN xN )
. xN = 0 xB = A−1B b
. Unfix xi , i ∈ N :
xB = xB − A−1B Ai︸ ︷︷ ︸δi
xi
x1 = 0
x2 = 0
x1 > 0
x2 = 0δ1
x1 = 0
x2 > 0δ2
x
x2 = 0
x3 = 0
αδ1
. Objective change:
cTx = cTx + cixi − cTδixi
= cTx + (ci − yTAi)︸ ︷︷ ︸reduced cost ri
xi
. Reduced cost of xi = obj. change per unit increase of xi
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 40 / 62
![Page 108: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/108.jpg)
Improving steps. xB is a function of xN :
xB = A−1B (b − AN xN )
. xN = 0 xB = A−1B b
. Unfix xi , i ∈ N :
xB = xB − A−1B Ai︸ ︷︷ ︸δi
xi
x1 = 0
x2 = 0
x1 > 0
x2 = 0δ1
x1 = 0
x2 > 0δ2
x
x2 = 0
x3 = 0
αδ1
. Objective change:
cTx = cTx + cixi − cTδixi
= cTx + (ci − yTAi)︸ ︷︷ ︸reduced cost ri
xi
. Reduced cost of xi = obj. change per unit increase of xi
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 40 / 62
![Page 109: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/109.jpg)
Improving steps. xB is a function of xN :
xB = A−1B (b − AN xN )
. xN = 0 xB = A−1B b
. Unfix xi , i ∈ N :
xB = xB − A−1B Ai︸ ︷︷ ︸δi
xi
x1 = 0
x2 = 0
x1 > 0
x2 = 0δ1
x1 = 0
x2 > 0δ2
x
x2 = 0
x3 = 0
αδ1
. Objective change:
cTx = cTx + cixi − cTδixi
= cTx + (ci − yTAi)︸ ︷︷ ︸reduced cost ri
xi
. Reduced cost of xi = obj. change per unit increase of xi
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 40 / 62
![Page 110: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/110.jpg)
Improving steps. xB is a function of xN :
xB = A−1B (b − AN xN )
. xN = 0 xB = A−1B b
. Unfix xi , i ∈ N :
xB = xB − A−1B Ai︸ ︷︷ ︸δi
xi
x1 = 0
x2 = 0
x1 > 0
x2 = 0δ1
x1 = 0
x2 > 0δ2
x
x2 = 0
x3 = 0
αδ1
. Objective change:
cTx = cTx + cixi − cTδixi
= cTx + (ci − yTAi)︸ ︷︷ ︸reduced cost ri
xi
. Reduced cost of xi = obj. change per unit increase of xi
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 40 / 62
![Page 111: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/111.jpg)
Improving steps. xB is a function of xN :
xB = A−1B (b − AN xN )
. xN = 0 xB = A−1B b
. Unfix xi , i ∈ N :
xB = xB − A−1B Ai︸ ︷︷ ︸δi
xi
x1 = 0
x2 = 0
x1 > 0
x2 = 0δ1
x1 = 0
x2 > 0δ2
x
x2 = 0
x3 = 0
αδ1
. Objective change:
cTx = cTx + cixi − cTδixi = cTx + (ci − yTAi)︸ ︷︷ ︸reduced cost ri
xi
. Reduced cost of xi = obj. change per unit increase of xi
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 40 / 62
![Page 112: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/112.jpg)
Improving steps. xB is a function of xN :
xB = A−1B (b − AN xN )
. xN = 0 xB = A−1B b
. Unfix xi , i ∈ N :
xB = xB − A−1B Ai︸ ︷︷ ︸δi
xi
x1 = 0
x2 = 0
x1 > 0
x2 = 0δ1
x1 = 0
x2 > 0δ2
x
x2 = 0
x3 = 0
αδ1
. Objective change:
cTx = cTx + cixi − cTδixi = cTx + (ci − yTAi)︸ ︷︷ ︸reduced cost ri
xi
. Reduced cost of xi = obj. change per unit increase of xi
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 40 / 62
![Page 113: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/113.jpg)
Improving steps. xB is a function of xN :
xB = A−1B (b − AN xN )
. xN = 0 xB = A−1B b
. Unfix xi , i ∈ N :
xB = xB − A−1B Ai︸ ︷︷ ︸δi
xi
x1 = 0
x2 = 0
x1 > 0
x2 = 0δ1
x1 = 0
x2 > 0δ2
x
x2 = 0
x3 = 0
αδ1
. Objective change:
cTx = cTx + cixi − cTδixi = cTx + (ci − yTAi)︸ ︷︷ ︸reduced cost ri
xi
. Reduced cost of xi = obj. change per unit increase of xi
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 40 / 62
![Page 114: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/114.jpg)
Primal simplex algorithm
Idea: Given a primal feasible starting basis B, i.e., xB = A−1B b ≥ 0,
. maintain primal feasibility
. improve obj. value until reduced costs are ≥ 0 ⇔ dual feasible
Init
. factorize basis matrix AB “A−1B ”
. solve for xB and y
. compute reduced costs: ri = ci − yTAi for i ∈ N
Repeat
. if ri ≥ 0 for all i ∈ N stop OPTIMALelse choose ri < 0, i ∈ N (pricing)
. compute max. steplength α s.t. xB − αδi ≥ 0 (ratiotest)
. if α =∞ stop UNBOUNDEDelse update B, x , y , r , A−1
B
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 41 / 62
![Page 115: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/115.jpg)
Primal simplex algorithm
Idea: Given a primal feasible starting basis B, i.e., xB = A−1B b ≥ 0,
. maintain primal feasibility
. improve obj. value until reduced costs are ≥ 0 ⇔ dual feasible
Init
. factorize basis matrix AB “A−1B ”
. solve for xB and y
. compute reduced costs: ri = ci − yTAi for i ∈ N
Repeat
. if ri ≥ 0 for all i ∈ N stop OPTIMALelse choose ri < 0, i ∈ N (pricing)
. compute max. steplength α s.t. xB − αδi ≥ 0 (ratiotest)
. if α =∞ stop UNBOUNDEDelse update B, x , y , r , A−1
B
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 41 / 62
![Page 116: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/116.jpg)
Primal simplex algorithm
Idea: Given a primal feasible starting basis B, i.e., xB = A−1B b ≥ 0,
. maintain primal feasibility
. improve obj. value until reduced costs are ≥ 0 ⇔ dual feasible
Init
. factorize basis matrix AB “A−1B ”
. solve for xB and y
. compute reduced costs: ri = ci − yTAi for i ∈ N
Repeat
. if ri ≥ 0 for all i ∈ N stop OPTIMALelse choose ri < 0, i ∈ N (pricing)
. compute max. steplength α s.t. xB − αδi ≥ 0 (ratiotest)
. if α =∞ stop UNBOUNDEDelse update B, x , y , r , A−1
B
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 41 / 62
![Page 117: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/117.jpg)
Primal simplex algorithm
Idea: Given a primal feasible starting basis B, i.e., xB = A−1B b ≥ 0,
. maintain primal feasibility
. improve obj. value until reduced costs are ≥ 0 ⇔ dual feasible
Init
. factorize basis matrix AB “A−1B ”
. solve for xB and y
. compute reduced costs: ri = ci − yTAi for i ∈ N
Repeat
. if ri ≥ 0 for all i ∈ N stop OPTIMALelse choose ri < 0, i ∈ N (pricing)
. compute max. steplength α s.t. xB − αδi ≥ 0 (ratiotest)
. if α =∞ stop UNBOUNDEDelse update B, x , y , r , A−1
B
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 41 / 62
![Page 118: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/118.jpg)
Primal simplex algorithm
Idea: Given a primal feasible starting basis B, i.e., xB = A−1B b ≥ 0,
. maintain primal feasibility
. improve obj. value until reduced costs are ≥ 0 ⇔ dual feasible
Init
. factorize basis matrix AB “A−1B ”
. solve for xB and y
. compute reduced costs: ri = ci − yTAi for i ∈ N
Repeat
. if ri ≥ 0 for all i ∈ N stop OPTIMAL
else choose ri < 0, i ∈ N (pricing)
. compute max. steplength α s.t. xB − αδi ≥ 0 (ratiotest)
. if α =∞ stop UNBOUNDEDelse update B, x , y , r , A−1
B
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 41 / 62
![Page 119: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/119.jpg)
Primal simplex algorithm
Idea: Given a primal feasible starting basis B, i.e., xB = A−1B b ≥ 0,
. maintain primal feasibility
. improve obj. value until reduced costs are ≥ 0 ⇔ dual feasible
Init
. factorize basis matrix AB “A−1B ”
. solve for xB and y
. compute reduced costs: ri = ci − yTAi for i ∈ N
Repeat
. if ri ≥ 0 for all i ∈ N stop OPTIMALelse choose ri < 0, i ∈ N (pricing)
. compute max. steplength α s.t. xB − αδi ≥ 0 (ratiotest)
. if α =∞ stop UNBOUNDEDelse update B, x , y , r , A−1
B
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 41 / 62
![Page 120: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/120.jpg)
Primal simplex algorithm
Idea: Given a primal feasible starting basis B, i.e., xB = A−1B b ≥ 0,
. maintain primal feasibility
. improve obj. value until reduced costs are ≥ 0 ⇔ dual feasible
Init
. factorize basis matrix AB “A−1B ”
. solve for xB and y
. compute reduced costs: ri = ci − yTAi for i ∈ N
Repeat
. if ri ≥ 0 for all i ∈ N stop OPTIMALelse choose ri < 0, i ∈ N (pricing)
. compute max. steplength α s.t. xB − αδi ≥ 0 (ratiotest)
. if α =∞ stop UNBOUNDEDelse update B, x , y , r , A−1
B
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 41 / 62
![Page 121: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/121.jpg)
Primal simplex algorithm
Idea: Given a primal feasible starting basis B, i.e., xB = A−1B b ≥ 0,
. maintain primal feasibility
. improve obj. value until reduced costs are ≥ 0 ⇔ dual feasible
Init
. factorize basis matrix AB “A−1B ”
. solve for xB and y
. compute reduced costs: ri = ci − yTAi for i ∈ N
Repeat
. if ri ≥ 0 for all i ∈ N stop OPTIMALelse choose ri < 0, i ∈ N (pricing)
. compute max. steplength α s.t. xB − αδi ≥ 0 (ratiotest)
. if α =∞ stop UNBOUNDEDelse update B, x , y , r , A−1
BAmbros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 41 / 62
![Page 122: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/122.jpg)
Re-solving and hot startsAn IP solver classically solves many related LPs.
. modified objective function
I last basic solution becomes suboptimal, but remains primal feasibleI only reduced costs ri = ci − yTAi changeI continue with primal simplex iterations
. changed variable bounds or added constraints
I last basic solution becomes primal infeasibleI dual multipliers and reduced costs unchangedI continue with dual simplex
Dual simplex
. basic procedures as in primal simplex
. maintains dual feasibility and moves towards primal feasibility
. objective value increases towards optimum
. typically very few iterations to re-optimize
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 42 / 62
![Page 123: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/123.jpg)
Re-solving and hot startsAn IP solver classically solves many related LPs.
. modified objective function
I last basic solution becomes suboptimal, but remains primal feasibleI only reduced costs ri = ci − yTAi changeI continue with primal simplex iterations
. changed variable bounds or added constraints
I last basic solution becomes primal infeasibleI dual multipliers and reduced costs unchangedI continue with dual simplex
Dual simplex
. basic procedures as in primal simplex
. maintains dual feasibility and moves towards primal feasibility
. objective value increases towards optimum
. typically very few iterations to re-optimize
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 42 / 62
![Page 124: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/124.jpg)
Re-solving and hot startsAn IP solver classically solves many related LPs.
. modified objective function
I last basic solution becomes suboptimal, but remains primal feasibleI only reduced costs ri = ci − yTAi changeI continue with primal simplex iterations
. changed variable bounds or added constraintsI last basic solution becomes primal infeasibleI dual multipliers and reduced costs unchangedI continue with dual simplex
Dual simplex
. basic procedures as in primal simplex
. maintains dual feasibility and moves towards primal feasibility
. objective value increases towards optimum
. typically very few iterations to re-optimize
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 42 / 62
![Page 125: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/125.jpg)
Re-solving and hot startsAn IP solver classically solves many related LPs.
. modified objective function
I last basic solution becomes suboptimal, but remains primal feasibleI only reduced costs ri = ci − yTAi changeI continue with primal simplex iterations
. changed variable bounds or added constraintsI last basic solution becomes primal infeasibleI dual multipliers and reduced costs unchangedI continue with dual simplex
Dual simplex
. basic procedures as in primal simplex
. maintains dual feasibility and moves towards primal feasibility
. objective value increases towards optimum
. typically very few iterations to re-optimize
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 42 / 62
![Page 126: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/126.jpg)
Dual simplex algorithm
Idea: Given a dual feasible starting basis B, i.e., r ≥ 0,
. maintain dual feasibility
. reduce primal infeasibility until x ≥ 0
Init
. factorize basis matrix AB “A−1B ”
. solve for xB and y
. compute reduced costs: ri = ci − yTAi for i ∈ N
Repeat
while cTx < z∗ obj. limit
. if xi ≥ 0 for all i ∈ B stop OPTIMALelse choose xi < 0, i ∈ B (pricing)
. compute max. steplength α (ratiotest)
. if α =∞ stop INFEASIBLEelse update B, x , y , r , A−1
B
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 43 / 62
![Page 127: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/127.jpg)
Dual simplex algorithm
Idea: Given a dual feasible starting basis B, i.e., r ≥ 0,
. maintain dual feasibility
. reduce primal infeasibility until x ≥ 0
Init
. factorize basis matrix AB “A−1B ”
. solve for xB and y
. compute reduced costs: ri = ci − yTAi for i ∈ N
Repeat
while cTx < z∗ obj. limit
. if xi ≥ 0 for all i ∈ B stop OPTIMALelse choose xi < 0, i ∈ B (pricing)
. compute max. steplength α (ratiotest)
. if α =∞ stop INFEASIBLEelse update B, x , y , r , A−1
B
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 43 / 62
![Page 128: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/128.jpg)
Dual simplex algorithm
Idea: Given a dual feasible starting basis B, i.e., r ≥ 0,
. maintain dual feasibility
. reduce primal infeasibility until x ≥ 0
Init
. factorize basis matrix AB “A−1B ”
. solve for xB and y
. compute reduced costs: ri = ci − yTAi for i ∈ N
Repeat
while cTx < z∗ obj. limit
. if xi ≥ 0 for all i ∈ B stop OPTIMALelse choose xi < 0, i ∈ B (pricing)
. compute max. steplength α (ratiotest)
. if α =∞ stop INFEASIBLEelse update B, x , y , r , A−1
BAmbros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 43 / 62
![Page 129: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/129.jpg)
Dual simplex algorithm
Idea: Given a dual feasible starting basis B, i.e., r ≥ 0,
. maintain dual feasibility
. reduce primal infeasibility until x ≥ 0
Init
. factorize basis matrix AB “A−1B ”
. solve for xB and y
. compute reduced costs: ri = ci − yTAi for i ∈ N
Repeat while cTx < z∗ obj. limit
. if xi ≥ 0 for all i ∈ B stop OPTIMALelse choose xi < 0, i ∈ B (pricing)
. compute max. steplength α (ratiotest)
. if α =∞ stop INFEASIBLEelse update B, x , y , r , A−1
BAmbros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 43 / 62
![Page 130: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/130.jpg)
Summary. Discrete and continuous:
I vertices are uniquely determined by n equalitiesI if optimal: there always exists an optimal vertex solutionI solution values are computed numerically
. Reduced costs quantify impact of (non-basic) variable on theobjective
. efficient hot starts for re-optimization
Further aspects:
. general bounds: lbi ≤ xi ≤ ubi
. feasible starting basis for simplex (“phase 1”), pricing strategies,linear algebra tricks, . . .
. exponential worst-case complexity of simplex vs. performance inpractice
. interior point algorithms
. algorithms for specially structured LPs: networks, . . .
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 44 / 62
![Page 131: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/131.jpg)
Summary. Discrete and continuous:
I vertices are uniquely determined by n equalitiesI if optimal: there always exists an optimal vertex solutionI solution values are computed numerically
. Reduced costs quantify impact of (non-basic) variable on theobjective
. efficient hot starts for re-optimization
Further aspects:
. general bounds: lbi ≤ xi ≤ ubi
. feasible starting basis for simplex (“phase 1”), pricing strategies,linear algebra tricks, . . .
. exponential worst-case complexity of simplex vs. performance inpractice
. interior point algorithms
. algorithms for specially structured LPs: networks, . . .Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 44 / 62
![Page 132: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/132.jpg)
Outline
Integer Programming for Constraint Programmers
1 Introduction
2 Linear programming
3 Integer (linear) programming
4 Summary
5 Discussion
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 45 / 62
![Page 133: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/133.jpg)
Linear programming
Linear program
Objective function:
. linear function
Feasible set:
. described by linear constraints
Variable domains:
. real values
min cTx
s.t. Ax = b
x ∈ Rn≥0
. convex set
. “basic” solutions
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 46 / 62
![Page 134: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/134.jpg)
Integer programming
Integer Program
Objective function:
. linear function
Feasible set:
. described by linear constraints
Variable domains:
. integer values
min cTx
s.t. Ax ≤ b
x ∈ Z≥0
. not even connected
. NP-hard problem
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 47 / 62
![Page 135: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/135.jpg)
An incomplete history on integer programmingCutting plane algorithm
. R. E. Gomory, “Outline of an algorithm for integer solutions tolinear programs”. Bull. AMS 64, 1958, pp. 275–278.
Branch-and-bound
. A. H. Land, A. G. Doig, “An automatic method of solving discreteprogramming problems”. Econometrica 28, 1960, pp. 497–520
. R. J. Dakin, “A tree-search algorithm for mixed integerprogramming problems”. The Computer Journal, Volume 8, 1965,pp. 250–255
. J. D. C. Little, K. G. Murty, D. W. Sweeney, C. Karel, “Analgorithm for the traveling salesman problem”. OperationsResearch 11, 1963, pp. 972–989.
Branch-and-cut
. Grotschel, Junger, Reinelt (1984, 1985, 1987)
. Padberg, Rinaldi (1991)
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 48 / 62
![Page 136: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/136.jpg)
An incomplete history on integer programmingCutting plane algorithm
. R. E. Gomory, “Outline of an algorithm for integer solutions tolinear programs”. Bull. AMS 64, 1958, pp. 275–278.
Branch-and-bound
. A. H. Land, A. G. Doig, “An automatic method of solving discreteprogramming problems”. Econometrica 28, 1960, pp. 497–520
. R. J. Dakin, “A tree-search algorithm for mixed integerprogramming problems”. The Computer Journal, Volume 8, 1965,pp. 250–255
. J. D. C. Little, K. G. Murty, D. W. Sweeney, C. Karel, “Analgorithm for the traveling salesman problem”. OperationsResearch 11, 1963, pp. 972–989.
Branch-and-cut
. Grotschel, Junger, Reinelt (1984, 1985, 1987)
. Padberg, Rinaldi (1991)
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 48 / 62
![Page 137: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/137.jpg)
An incomplete history on integer programmingCutting plane algorithm
. R. E. Gomory, “Outline of an algorithm for integer solutions tolinear programs”. Bull. AMS 64, 1958, pp. 275–278.
Branch-and-bound
. A. H. Land, A. G. Doig, “An automatic method of solving discreteprogramming problems”. Econometrica 28, 1960, pp. 497–520
. R. J. Dakin, “A tree-search algorithm for mixed integerprogramming problems”. The Computer Journal, Volume 8, 1965,pp. 250–255
. J. D. C. Little, K. G. Murty, D. W. Sweeney, C. Karel, “Analgorithm for the traveling salesman problem”. OperationsResearch 11, 1963, pp. 972–989.
Branch-and-cut
. Grotschel, Junger, Reinelt (1984, 1985, 1987)
. Padberg, Rinaldi (1991)
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 48 / 62
![Page 138: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/138.jpg)
General cutting plane method
FIP := {x ∈ Zn+ : Ax ≤ b}
FLP := {x ∈ Rn+ : Ax ≤ b}
x1
x2
1 2 3 4
1
2
3
x1
x2
1 2 3 4
1
2
3
conv(FIP)
x∗IP
min{cT x : x ∈ FIP}
min{cT x : x ∈ conv(FIP)}
FLP ⊇ F ⊇ conv(FIP)
min{cTx : x ∈ FLP} ≤ min{cTx : x ∈ F} = min{cTx : x ∈ conv(FIP)}
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 49 / 62
![Page 139: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/139.jpg)
General cutting plane method
Observation
. conv(FIP) is a polyhedron
. IP could be formulated as LP
Problems with conv(FIP):
. linear description not known
. large nr. of constraints needed
x1
x2
1 2 3 4
1
2
3
x1
x2
1 2 3 4
1
2
3
conv(FIP)
x∗IP
min{cT x : x ∈ FIP}
min{cT x : x ∈ conv(FIP)}
FLP ⊇ F ⊇ conv(FIP)
min{cTx : x ∈ FLP} ≤ min{cTx : x ∈ F} = min{cTx : x ∈ conv(FIP)}
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 49 / 62
![Page 140: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/140.jpg)
General cutting plane method
Observation
. conv(FIP) is a polyhedron
. IP could be formulated as LP
Problems with conv(FIP):
. linear description not known
. large nr. of constraints needed
x1
x2
1 2 3 4
1
2
3
x1
x2
1 2 3 4
1
2
3
conv(FIP)
x∗IP
min{cT x : x ∈ FIP}
min{cT x : x ∈ conv(FIP)}
FLP ⊇ F ⊇ conv(FIP)
min{cTx : x ∈ FLP} ≤ min{cTx : x ∈ F} = min{cTx : x ∈ conv(FIP)}
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 49 / 62
![Page 141: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/141.jpg)
General cutting plane method
Algorithm
1. F ← FLP
2. Solve
min cTxs.t. x ∈ F
3. If x∗ ∈ FIP: Stop
4. Add inequality to F that is ...
I valid for conv(FIP) butI violated by x∗.
5. Goto 2.
FLP
= F
FF
x1
x2
1 2 3 4
1
2
3
conv(FIP)
min{cT x : x ∈ conv(FIP)}
x∗x∗x∗x∗IP
. Resolving is cheap since dualfeasible (hot start)
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 50 / 62
![Page 142: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/142.jpg)
General cutting plane method
Algorithm
1. F ← FLP
2. Solve
min cTxs.t. x ∈ F
3. If x∗ ∈ FIP: Stop
4. Add inequality to F that is ...
I valid for conv(FIP) butI violated by x∗.
5. Goto 2.
FLP= F
FF
x1
x2
1 2 3 4
1
2
3
conv(FIP)
min{cT x : x ∈ conv(FIP)}
x∗x∗x∗x∗IP
. Resolving is cheap since dualfeasible (hot start)
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 50 / 62
![Page 143: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/143.jpg)
General cutting plane method
Algorithm
1. F ← FLP
2. Solve
min cTxs.t. x ∈ F
3. If x∗ ∈ FIP: Stop
4. Add inequality to F that is ...
I valid for conv(FIP) butI violated by x∗.
5. Goto 2.
FLP= F
FF
x1
x2
1 2 3 4
1
2
3
conv(FIP)
min{cT x : x ∈ conv(FIP)}
x∗
x∗x∗x∗IP
. Resolving is cheap since dualfeasible (hot start)
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 50 / 62
![Page 144: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/144.jpg)
General cutting plane method
Algorithm
1. F ← FLP
2. Solve
min cTxs.t. x ∈ F
3. If x∗ ∈ FIP: Stop
4. Add inequality to F that is ...
I valid for conv(FIP) butI violated by x∗.
5. Goto 2.
FLP= F
FF
x1
x2
1 2 3 4
1
2
3
conv(FIP)
min{cT x : x ∈ conv(FIP)}
x∗
x∗x∗x∗IP
. Resolving is cheap since dualfeasible (hot start)
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 50 / 62
![Page 145: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/145.jpg)
General cutting plane method
Algorithm
1. F ← FLP
2. Solve
min cTxs.t. x ∈ F
3. If x∗ ∈ FIP: Stop
4. Add inequality to F that is ...
I valid for conv(FIP) butI violated by x∗.
5. Goto 2.
FLP= F
FF
x1
x2
1 2 3 4
1
2
3
conv(FIP)
min{cT x : x ∈ conv(FIP)}
x∗
x∗x∗x∗IP
. Resolving is cheap since dualfeasible (hot start)
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 50 / 62
![Page 146: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/146.jpg)
General cutting plane method
Algorithm
1. F ← FLP
2. Solve
min cTxs.t. x ∈ F
3. If x∗ ∈ FIP: Stop
4. Add inequality to F that is ...
I valid for conv(FIP) butI violated by x∗.
5. Goto 2.
FLP= F
F
F
x1
x2
1 2 3 4
1
2
3
conv(FIP)
min{cT x : x ∈ conv(FIP)}
x∗x∗x∗x∗IP
. Resolving is cheap since dualfeasible (hot start)
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 50 / 62
![Page 147: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/147.jpg)
General cutting plane method
Algorithm
1. F ← FLP
2. Solve
min cTxs.t. x ∈ F
3. If x∗ ∈ FIP: Stop
4. Add inequality to F that is ...
I valid for conv(FIP) butI violated by x∗.
5. Goto 2.
FLP= F
F
F
x1
x2
1 2 3 4
1
2
3
conv(FIP)
min{cT x : x ∈ conv(FIP)}
x∗x∗x∗x∗IP
. Resolving is cheap since dualfeasible (hot start)
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 50 / 62
![Page 148: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/148.jpg)
General cutting plane method
Algorithm
1. F ← FLP
2. Solve
min cTxs.t. x ∈ F
3. If x∗ ∈ FIP: Stop
4. Add inequality to F that is ...
I valid for conv(FIP) butI violated by x∗.
5. Goto 2.
FLP= F
F
F
x1
x2
1 2 3 4
1
2
3
conv(FIP)
min{cT x : x ∈ conv(FIP)}
x∗
x∗
x∗x∗IP
. Resolving is cheap since dualfeasible (hot start)
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 50 / 62
![Page 149: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/149.jpg)
General cutting plane method
Algorithm
1. F ← FLP
2. Solve
min cTxs.t. x ∈ F
3. If x∗ ∈ FIP: Stop
4. Add inequality to F that is ...
I valid for conv(FIP) butI violated by x∗.
5. Goto 2.
FLP= F
F
F
x1
x2
1 2 3 4
1
2
3
conv(FIP)
min{cT x : x ∈ conv(FIP)}
x∗
x∗
x∗x∗IP
. Resolving is cheap since dualfeasible (hot start)
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 50 / 62
![Page 150: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/150.jpg)
General cutting plane method
Algorithm
1. F ← FLP
2. Solve
min cTxs.t. x ∈ F
3. If x∗ ∈ FIP: Stop
4. Add inequality to F that is ...
I valid for conv(FIP) butI violated by x∗.
5. Goto 2.
FLP= F
F
F
x1
x2
1 2 3 4
1
2
3
conv(FIP)
min{cT x : x ∈ conv(FIP)}
x∗
x∗
x∗x∗IP
. Resolving is cheap since dualfeasible (hot start)
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 50 / 62
![Page 151: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/151.jpg)
General cutting plane method
Algorithm
1. F ← FLP
2. Solve
min cTxs.t. x ∈ F
3. If x∗ ∈ FIP: Stop
4. Add inequality to F that is ...
I valid for conv(FIP) butI violated by x∗.
5. Goto 2.
FLP= F
F
F
x1
x2
1 2 3 4
1
2
3
conv(FIP)
min{cT x : x ∈ conv(FIP)}
x∗x∗x∗x∗IP
. Resolving is cheap since dualfeasible (hot start)
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 50 / 62
![Page 152: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/152.jpg)
General cutting plane method
Algorithm
1. F ← FLP
2. Solve
min cTxs.t. x ∈ F
3. If x∗ ∈ FIP: Stop
4. Add inequality to F that is ...
I valid for conv(FIP) butI violated by x∗.
5. Goto 2.
FLP= F
F
F
x1
x2
1 2 3 4
1
2
3
conv(FIP)
min{cT x : x ∈ conv(FIP)}
x∗x∗x∗x∗IP
. Resolving is cheap since dualfeasible (hot start)
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 50 / 62
![Page 153: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/153.jpg)
General cutting plane method
Algorithm
1. F ← FLP
2. Solve
min cTxs.t. x ∈ F
3. If x∗ ∈ FIP: Stop
4. Add inequality to F that is ...
I valid for conv(FIP) butI violated by x∗.
5. Goto 2.
FLP= F
F
F
x1
x2
1 2 3 4
1
2
3
conv(FIP)
min{cT x : x ∈ conv(FIP)}
x∗x∗
x∗
x∗IP
. Resolving is cheap since dualfeasible (hot start)
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 50 / 62
![Page 154: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/154.jpg)
General cutting plane method
Algorithm
1. F ← FLP
2. Solve
min cTxs.t. x ∈ F
3. If x∗ ∈ FIP: Stop
4. Add inequality to F that is ...
I valid for conv(FIP) butI violated by x∗.
5. Goto 2.
FLP= F
F
F
x1
x2
1 2 3 4
1
2
3
conv(FIP)
min{cT x : x ∈ conv(FIP)}
x∗x∗
x∗
x∗IP
. Resolving is cheap since dualfeasible (hot start)
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 50 / 62
![Page 155: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/155.jpg)
General cutting plane method
Algorithm
1. F ← FLP
2. Solve
min cTxs.t. x ∈ F
3. If x∗ ∈ FIP: Stop
4. Add inequality to F that is ...
I valid for conv(FIP) butI violated by x∗.
5. Goto 2.
FLP= F
F
F
x1
x2
1 2 3 4
1
2
3
conv(FIP)
min{cT x : x ∈ conv(FIP)}
x∗x∗x∗
x∗IP
. Resolving is cheap since dualfeasible (hot start)
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 50 / 62
![Page 156: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/156.jpg)
LP-based branch-and-bound (colorful picture)
Steps
1. Abort criterion
2. Node selection
3. Solve relaxation
4. Bounding
5. Feasibility check
6. Branching
x IP
∅∞ ∅∞
x IP
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 51 / 62
![Page 157: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/157.jpg)
LP-based branch-and-bound (colorful picture)
Steps
1. Abort criterion
2. Node selection
3. Solve relaxation
4. Bounding
5. Feasibility check
6. Branching
x IP
∅∞ ∅∞
x IP
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 51 / 62
![Page 158: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/158.jpg)
LP-based branch-and-bound (colorful picture)
Steps
1. Abort criterion
2. Node selection
3. Solve relaxation
4. Bounding
5. Feasibility check
6. Branching
x IP
∅∞ ∅∞
x IP
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 51 / 62
![Page 159: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/159.jpg)
LP-based branch-and-bound (colorful picture)
Steps
1. Abort criterion
2. Node selection
3. Solve relaxation
4. Bounding
5. Feasibility check
6. Branching
x IP
∅∞ ∅∞
x IP
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 51 / 62
![Page 160: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/160.jpg)
LP-based branch-and-bound (colorful picture)
Steps
1. Abort criterion
2. Node selection
3. Solve relaxation
4. Bounding
5. Feasibility check
6. Branching
x IP
∅∞ ∅∞
x IP
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 51 / 62
![Page 161: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/161.jpg)
LP-based branch-and-bound (colorful picture)
Steps
1. Abort criterion
2. Node selection
3. Solve relaxation
4. Bounding
5. Feasibility check
6. Branching
x IP
∅∞ ∅∞
x IP
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 51 / 62
![Page 162: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/162.jpg)
LP-based branch-and-bound (colorful picture)
Steps
1. Abort criterion
2. Node selection
3. Solve relaxation
4. Bounding
5. Feasibility check
6. Branching
x IP
∅∞ ∅∞
x IP
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 51 / 62
![Page 163: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/163.jpg)
LP-based branch-and-bound (colorful picture)
Steps
1. Abort criterion
2. Node selection
3. Solve relaxation
4. Bounding
5. Feasibility check
6. Branching
x IP
∅∞ ∅∞
x IP
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 51 / 62
![Page 164: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/164.jpg)
LP-based branch-and-bound (colorful picture)
Steps
1. Abort criterion
2. Node selection
3. Solve relaxation
4. Bounding
5. Feasibility check
6. Branching
x IP
∅∞ ∅∞
x IP
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 51 / 62
![Page 165: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/165.jpg)
LP-based branch-and-bound (colorful picture)
Steps
1. Abort criterion
2. Node selection
3. Solve relaxation
4. Bounding
5. Feasibility check
6. Branching
x IP
∅∞ ∅∞
x IP
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 51 / 62
![Page 166: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/166.jpg)
LP-based branch-and-bound (colorful picture)
Steps
1. Abort criterion
2. Node selection
3. Solve relaxation
4. Bounding
5. Feasibility check
6. Branching
x IP
∅∞ ∅∞
x IP
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 51 / 62
![Page 167: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/167.jpg)
LP-based branch-and-bound (colorful picture)
Steps
1. Abort criterion
2. Node selection
3. Solve relaxation
4. Bounding
5. Feasibility check
6. Branching
x IP
∅
∞ ∅∞
x IP
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 51 / 62
![Page 168: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/168.jpg)
LP-based branch-and-bound (colorful picture)
Steps
1. Abort criterion
2. Node selection
3. Solve relaxation
4. Bounding
5. Feasibility check
6. Branching
x IP
∅
∞
∅∞
x IP
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 51 / 62
![Page 169: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/169.jpg)
LP-based branch-and-bound (colorful picture)
Steps
1. Abort criterion
2. Node selection
3. Solve relaxation
4. Bounding
5. Feasibility check
6. Branching
x IP
∅
∞
∅∞
x IP
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 51 / 62
![Page 170: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/170.jpg)
LP-based branch-and-bound (colorful picture)
Steps
1. Abort criterion
2. Node selection
3. Solve relaxation
4. Bounding
5. Feasibility check
6. Branching
x IP
∅∞ ∅∞
x IP
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 51 / 62
![Page 171: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/171.jpg)
LP-based branch-and-bound (colorful picture)
Steps
1. Abort criterion
2. Node selection
3. Solve relaxation
4. Bounding
5. Feasibility check
6. Branching
x IP
∅∞ ∅∞
x IP
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 51 / 62
![Page 172: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/172.jpg)
LP-based branch-and-bound (colorful picture)
Steps
1. Abort criterion
2. Node selection
3. Solve relaxation
4. Bounding
5. Feasibility check
6. Branching
x IP
∅∞ ∅∞
x IP
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 51 / 62
![Page 173: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/173.jpg)
LP-based branch-and-bound (colorful picture)
Steps
1. Abort criterion
2. Node selection
3. Solve relaxation
4. Bounding
5. Feasibility check
6. Branching
x IP
∅∞ ∅∞
x IP
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 51 / 62
![Page 174: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/174.jpg)
LP-based branch-and-bound (colorful picture)
Steps
1. Abort criterion
2. Node selection
3. Solve relaxation
4. Bounding
5. Feasibility check
6. Branching
x IP
∅∞ ∅∞
x IP
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 51 / 62
![Page 175: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/175.jpg)
LP-based branch-and-bound (colorful picture)
Steps
1. Abort criterion
2. Node selection
3. Solve relaxation
4. Bounding
5. Feasibility check
6. Branching
x IP
∅∞ ∅∞
x IP
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 51 / 62
![Page 176: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/176.jpg)
LP-based branch-and-bound (colorful picture)
Steps
1. Abort criterion
2. Node selection
3. Solve relaxation
4. Bounding
5. Feasibility check
6. Branching
x IP
∅∞ ∅∞
x IP
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 51 / 62
![Page 177: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/177.jpg)
LP-based branch-and-bound (colorful picture)
Steps
1. Abort criterion
2. Node selection
3. Solve relaxation
4. Bounding
5. Feasibility check
6. Branching
x IP
∅∞
∅
∞
x IP
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 51 / 62
![Page 178: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/178.jpg)
LP-based branch-and-bound (colorful picture)
Steps
1. Abort criterion
2. Node selection
3. Solve relaxation
4. Bounding
5. Feasibility check
6. Branching
x IP
∅∞ ∅
∞
x IP
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 51 / 62
![Page 179: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/179.jpg)
LP-based branch-and-bound (colorful picture)
Steps
1. Abort criterion
2. Node selection
3. Solve relaxation
4. Bounding
5. Feasibility check
6. Branching
x IP
∅∞ ∅
∞
x IP
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 51 / 62
![Page 180: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/180.jpg)
LP-based branch-and-bound (colorful picture)
Steps
1. Abort criterion
2. Node selection
3. Solve relaxation
4. Bounding
5. Feasibility check
6. Branching
x IP
∅∞ ∅∞
x IP
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 51 / 62
![Page 181: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/181.jpg)
Solving an integer program
F
x1
x2
1 2 3 4
1
2
3
conv(FIP)
min{cT x : x ∈ conv(FIP)}
x∗
cutting planes
x IP
branch-and-bound
. Both approaches solve an initial linear program.
. Classically using simplex algorithm for efficent hot start
I A cutting plane or a bound change is an additional row (linearconstraint).
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 52 / 62
![Page 182: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/182.jpg)
Solving an integer program
F
x1
x2
1 2 3 4
1
2
3
conv(FIP)
min{cT x : x ∈ conv(FIP)}
x∗
cutting planes
x IP
branch-and-bound
. Both approaches solve an initial linear program.
. Classically using simplex algorithm for efficent hot start
I A cutting plane or a bound change is an additional row (linearconstraint).
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 52 / 62
![Page 183: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/183.jpg)
Solving an integer program
F
x1
x2
1 2 3 4
1
2
3
conv(FIP)
min{cT x : x ∈ conv(FIP)}
x∗
cutting planes
x IP
branch-and-bound
. Both approaches solve an initial linear program.
. Classically using simplex algorithm for efficent hot start
I A cutting plane or a bound change is an additional row (linearconstraint).
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 52 / 62
![Page 184: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/184.jpg)
Solving an integer program
F
x1
x2
1 2 3 4
1
2
3
conv(FIP)
min{cT x : x ∈ conv(FIP)}
x∗
cutting planes
x IP
branch-and-bound
. Both approaches solve an initial linear program.
. Classically using simplex algorithm for efficent hot startI A cutting plane or a bound change is an additional row (linear
constraint).
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 52 / 62
![Page 185: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/185.jpg)
Branch-and-cut
Branch-and-cut = Branch-and-bound + Cutting planes
. Use branch-and-bound as global solver paradigm.
. Perform limited cutting plane generation within each search node.I global versus local cuts
. Pure cutting plane generation does not work in practiceI numerical issuesI convergence
. Pure branch-and-bound fails in generalI exponential search tree
. Branch-and-cut fails laterI still exponential search treeI but shifts the exponential grow significantly
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 53 / 62
![Page 186: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/186.jpg)
Branch-and-cut
Branch-and-cut = Branch-and-bound + Cutting planes
. Use branch-and-bound as global solver paradigm.
. Perform limited cutting plane generation within each search node.I global versus local cuts
. Pure cutting plane generation does not work in practiceI numerical issuesI convergence
. Pure branch-and-bound fails in generalI exponential search tree
. Branch-and-cut fails laterI still exponential search treeI but shifts the exponential grow significantly
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 53 / 62
![Page 187: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/187.jpg)
Branch-and-cut
Branch-and-cut = Branch-and-bound + Cutting planes
. Use branch-and-bound as global solver paradigm.
. Perform limited cutting plane generation within each search node.I global versus local cuts
. Pure cutting plane generation does not work in practiceI numerical issuesI convergence
. Pure branch-and-bound fails in generalI exponential search tree
. Branch-and-cut fails laterI still exponential search treeI but shifts the exponential grow significantly
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 53 / 62
![Page 188: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/188.jpg)
Branch-and-cut
Branch-and-cut = Branch-and-bound + Cutting planes
. Use branch-and-bound as global solver paradigm.
. Perform limited cutting plane generation within each search node.I global versus local cuts
. Pure cutting plane generation does not work in practiceI numerical issuesI convergence
. Pure branch-and-bound fails in generalI exponential search tree
. Branch-and-cut fails laterI still exponential search treeI but shifts the exponential grow significantly
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 53 / 62
![Page 189: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/189.jpg)
Branch-and-cut
Branch-and-cut = Branch-and-bound + Cutting planes
. Use branch-and-bound as global solver paradigm.
. Perform limited cutting plane generation within each search node.I global versus local cuts
. Pure cutting plane generation does not work in practiceI numerical issuesI convergence
. Pure branch-and-bound fails in generalI exponential search tree
. Branch-and-cut fails laterI still exponential search treeI but shifts the exponential grow significantly
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 53 / 62
![Page 190: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/190.jpg)
Branch-and-cut
Branch-and-cut = Branch-and-bound + Cutting planes
. Use branch-and-bound as global solver paradigm.
. Perform limited cutting plane generation within each search node.I global versus local cuts
. Pure cutting plane generation does not work in practiceI numerical issuesI convergence
. Pure branch-and-bound fails in generalI exponential search tree
. Branch-and-cut fails laterI still exponential search treeI but shifts the exponential grow significantly
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 53 / 62
![Page 191: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/191.jpg)
Solving an integer program
. How can a linear program be solved?
. How can an integer program be solved?
. For what is the linear programming relaxation used within aninteger programming solver?
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 54 / 62
![Page 192: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/192.jpg)
Reduced cost propagation. z∗: best objective value → cTx ≤ z∗
. x : LP optimum
. For variables xi with reduced cost ri 6= 0I variables are not in the basisI variables sitting on one of their boundsI ri > 0→ xi = lbi (lower bound)I ri < 0→ xi = ubi (upper bound)
cT x ≤
z∗
x
Case 1 ri > 0:
cTx + ri (xi − lbi ) ≤ z∗ ⇔ xi ≤z∗ − cTx
ri+ lbi
⇒ xi ≤⌊z∗ − cTx
ri+ lbi
⌋
Case 2 ri < 0:
cTx + ri (xi − ubi ) ≤ z∗ ⇔ xi ≥z∗ − cTx
ri+ ubi ⇒ xi ≥
⌊z∗ − cTx
ri+ ubi
⌋
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 55 / 62
![Page 193: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/193.jpg)
Reduced cost propagation. z∗: best objective value → cTx ≤ z∗
. x : LP optimum
. For variables xi with reduced cost ri 6= 0I variables are not in the basisI variables sitting on one of their boundsI ri > 0→ xi = lbi (lower bound)I ri < 0→ xi = ubi (upper bound)
cT x ≤
z∗
x
Case 1 ri > 0:
cTx + ri (xi − lbi ) ≤ z∗ ⇔ xi ≤z∗ − cTx
ri+ lbi
⇒ xi ≤⌊z∗ − cTx
ri+ lbi
⌋Case 2 ri < 0:
cTx + ri (xi − ubi ) ≤ z∗ ⇔ xi ≥z∗ − cTx
ri+ ubi ⇒ xi ≥
⌊z∗ − cTx
ri+ ubi
⌋
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 55 / 62
![Page 194: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/194.jpg)
Reduced cost propagation. z∗: best objective value → cTx ≤ z∗
. x : LP optimum
. For variables xi with reduced cost ri 6= 0I variables are not in the basisI variables sitting on one of their boundsI ri > 0→ xi = lbi (lower bound)I ri < 0→ xi = ubi (upper bound)
cT x ≤
z∗
x
Case 1 ri > 0:
cTx + ri (xi − lbi ) ≤ z∗ ⇔ xi ≤z∗ − cTx
ri+ lbi ⇒ xi ≤
⌊z∗ − cTx
ri+ lbi
⌋
Case 2 ri < 0:
cTx + ri (xi − ubi ) ≤ z∗ ⇔ xi ≥z∗ − cTx
ri+ ubi ⇒ xi ≥
⌊z∗ − cTx
ri+ ubi
⌋
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 55 / 62
![Page 195: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/195.jpg)
Reduced cost propagation. z∗: best objective value → cTx ≤ z∗
. x : LP optimum
. For variables xi with reduced cost ri 6= 0I variables are not in the basisI variables sitting on one of their boundsI ri > 0→ xi = lbi (lower bound)I ri < 0→ xi = ubi (upper bound)
cT x ≤
z∗
x
Case 1 ri > 0:
cTx + ri (xi − lbi ) ≤ z∗ ⇔ xi ≤z∗ − cTx
ri+ lbi ⇒ xi ≤
⌊z∗ − cTx
ri+ lbi
⌋Case 2 ri < 0:
cTx + ri (xi − ubi ) ≤ z∗ ⇔ xi ≥z∗ − cTx
ri+ ubi ⇒ xi ≥
⌊z∗ − cTx
ri+ ubi
⌋Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 55 / 62
![Page 196: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/196.jpg)
Branching – Pseudo Cost
Estimating the objective
. objective gain per unit:I ζ−(x3) = 4−2
7.4−7 = 20.4 = 5
I other values at other nodes
. pseudocosts:average objective gainψ−(x3) =
ζ−1 (x3)+...+ζ−n (x3)
n= 5+3
2= 4
. estimate increase of objectiveby pseudocosts and fractionality:
ψ−(x3) · frac(x3) = 4 · 0.2 = 0.8,and ψ+(x3)(1− frac(x3)) = 7.6
x3 ≤ 7
c = 4
x3 ≥ 8
c = 8
x3 = 7.4
c = 2
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 56 / 62
![Page 197: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/197.jpg)
Branching – Pseudo Cost
Estimating the objective
. objective gain per unit:I ζ−(x3) = 4−2
7.4−7 = 20.4 = 5
I other values at other nodes
. pseudocosts:average objective gainψ−(x3) =
ζ−1 (x3)+...+ζ−n (x3)
n= 5+3
2= 4
. estimate increase of objectiveby pseudocosts and fractionality:
ψ−(x3) · frac(x3) = 4 · 0.2 = 0.8,and ψ+(x3)(1− frac(x3)) = 7.6
x3 ≤ 7
c = 4
x3 ≥ 8
c = 8
x3 = 7.4
c = 2
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 56 / 62
![Page 198: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/198.jpg)
Branching – Pseudo Cost
Estimating the objective
. objective gain per unit:I ζ+(x3) = 8−2
8−7.4 = 60.6 = 10
I other values at other nodes
. pseudocosts:average objective gainψ−(x3) =
ζ−1 (x3)+...+ζ−n (x3)
n= 5+3
2= 4
. estimate increase of objectiveby pseudocosts and fractionality:
ψ−(x3) · frac(x3) = 4 · 0.2 = 0.8,and ψ+(x3)(1− frac(x3)) = 7.6
x3 ≤ 7
c = 4
x3 ≥ 8
c = 8
x3 = 7.4
c = 2
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 56 / 62
![Page 199: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/199.jpg)
Branching – Pseudo Cost
Estimating the objective
. objective gain per unit:I ζ−1 (x3) = 5, ζ+
1 (x3) = 10
I other values at other nodes
. pseudocosts:average objective gainψ−(x3) =
ζ−1 (x3)+...+ζ−n (x3)
n= 5+3
2= 4
. estimate increase of objectiveby pseudocosts and fractionality:
ψ−(x3) · frac(x3) = 4 · 0.2 = 0.8,and ψ+(x3)(1− frac(x3)) = 7.6
x3 ≤ 7
c = 4
x3 ≥ 8
c = 8
x3 = 7.4
c = 2
ζ−1 (x3) ζ+1 (x3)
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 56 / 62
![Page 200: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/200.jpg)
Branching – Pseudo Cost
Estimating the objective
. objective gain per unit:I ζ−1 (x3) = 5, ζ+
1 (x3) = 10I other values at other nodes
. pseudocosts:average objective gainψ−(x3) =
ζ−1 (x3)+...+ζ−n (x3)
n= 5+3
2= 4
. estimate increase of objectiveby pseudocosts and fractionality:
ψ−(x3) · frac(x3) = 4 · 0.2 = 0.8,and ψ+(x3)(1− frac(x3)) = 7.6
x3 ≤ 5
c ≈ 0.8
x3 = 5.2 c = 0
x3 ≥ 6
c ≈ 7.6
ζ−1 (x3) = 5
x3 ≤ 4 x3 ≥ 5
ζ−2 (x3) = 3 ζ+2 (x3) = 9x3 ≤ 7
ζ+1 (x3) = 10
x3 ≥ 8
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 56 / 62
![Page 201: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/201.jpg)
Branching – Pseudo Cost
Estimating the objective
. objective gain per unit:I ζ−1 (x3) = 5, ζ+
1 (x3) = 10I other values at other nodes
. pseudocosts:average objective gainψ−(x3) =
ζ−1 (x3)+...+ζ−n (x3)
n= 5+3
2= 4
. estimate increase of objectiveby pseudocosts and fractionality:
ψ−(x3) · frac(x3) = 4 · 0.2 = 0.8,and ψ+(x3)(1− frac(x3)) = 7.6
x3 ≤ 5
c ≈ 0.8
x3 = 5.2 c = 0
x3 ≥ 6
c ≈ 7.6
ζ−1 (x3) = 5
x3 ≤ 4 x3 ≥ 5
ζ−2 (x3) = 3 ζ+2 (x3) = 9x3 ≤ 7
ζ+1 (x3) = 10
x3 ≥ 8
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 56 / 62
![Page 202: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/202.jpg)
Branching – Pseudo Cost
Estimating the objective
. objective gain per unit:I ζ−1 (x3) = 5, ζ+
1 (x3) = 10I other values at other nodes
. pseudocosts:average objective gainψ−(x3) = 4, ψ+(x3) = 9.5
. estimate increase of objectiveby pseudocosts and fractionality:
ψ−(x3) · frac(x3) = 4 · 0.2 = 0.8,and ψ+(x3)(1− frac(x3)) = 7.6
x3 ≤ 5
c ≈ 0.8
x3 = 5.2 c = 0
x3 ≥ 6
c ≈ 7.6
ζ−1 (x3) = 5
x3 ≤ 4 x3 ≥ 5
ζ−2 (x3) = 3 ζ+2 (x3) = 9x3 ≤ 7
ζ+1 (x3) = 10
x3 ≥ 8
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 56 / 62
![Page 203: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/203.jpg)
Branching – Pseudo Cost
Estimating the objective
. objective gain per unit:I ζ−1 (x3) = 5, ζ+
1 (x3) = 10I other values at other nodes
. pseudocosts:average objective gainψ−(x3) = 4, ψ+(x3) = 9.5
. estimate increase of objectiveby pseudocosts and fractionality:ψ−(x3) · frac(x3)
= 4 · 0.2 = 0.8,and ψ+(x3)(1− frac(x3)) = 7.6
x3 ≤ 5
c ≈ 0.8
x3 = 5.2 c = 0
x3 ≥ 6
c ≈ 7.6
ζ−1 (x3) = 5
x3 ≤ 4 x3 ≥ 5
ζ−2 (x3) = 3 ζ+2 (x3) = 9x3 ≤ 7
ζ+1 (x3) = 10
x3 ≥ 8
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 56 / 62
![Page 204: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/204.jpg)
Branching – Pseudo Cost
Estimating the objective
. objective gain per unit:I ζ−1 (x3) = 5, ζ+
1 (x3) = 10I other values at other nodes
. pseudocosts:average objective gainψ−(x3) = 4, ψ+(x3) = 9.5
. estimate increase of objectiveby pseudocosts and fractionality:ψ−(x3) · frac(x3) = 4 · 0.2 = 0.8,
and ψ+(x3)(1− frac(x3)) = 7.6
x3 ≤ 5
c ≈ 0.8
x3 = 5.2 c = 0
x3 ≥ 6
c ≈ 7.6
ζ−1 (x3) = 5
x3 ≤ 4 x3 ≥ 5
ζ−2 (x3) = 3 ζ+2 (x3) = 9x3 ≤ 7
ζ+1 (x3) = 10
x3 ≥ 8
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 56 / 62
![Page 205: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/205.jpg)
Branching – Pseudo Cost
Estimating the objective
. objective gain per unit:I ζ−1 (x3) = 5, ζ+
1 (x3) = 10I other values at other nodes
. pseudocosts:average objective gainψ−(x3) = 4, ψ+(x3) = 9.5
. estimate increase of objectiveby pseudocosts and fractionality:ψ−(x3) · frac(x3) = 4 · 0.2 = 0.8,and ψ+(x3)(1− frac(x3)) = 7.6
x3 ≤ 5
c ≈ 0.8
x3 = 5.2 c = 0
x3 ≥ 6
c ≈ 7.6
ζ−1 (x3) = 5
x3 ≤ 4 x3 ≥ 5
ζ−2 (x3) = 3 ζ+2 (x3) = 9x3 ≤ 7
ζ+1 (x3) = 10
x3 ≥ 8
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 56 / 62
![Page 206: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/206.jpg)
Heuristic – RENS
RENS – Relaxation Enforced Neighborhood Search
Idea: Search the vicinity of a relaxation solution
Algorithm
1. x ← LP optimum;
2. Fix all integral variables:xi := xi for all i : xi ∈ Z;
3. Reduce domain of fractional variablesxi ∈ {bxic; dxie};
4. Solve the resulting sub-MIP;
Crucial point: Does not need a feasible start solution
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 57 / 62
![Page 207: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/207.jpg)
Heuristic – RENS
RENS – Relaxation Enforced Neighborhood Search
Idea: Search the vicinity of a relaxation solution
Algorithm
1. x ← LP optimum;
2. Fix all integral variables:xi := xi for all i : xi ∈ Z;
3. Reduce domain of fractional variablesxi ∈ {bxic; dxie};
4. Solve the resulting sub-MIP;
Crucial point: Does not need a feasible start solution
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 57 / 62
![Page 208: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/208.jpg)
Heuristic – RENS
RENS – Relaxation Enforced Neighborhood Search
Idea: Search the vicinity of a relaxation solution
Algorithm
1. x ← LP optimum;
2. Fix all integral variables:xi := xi for all i : xi ∈ Z;
3. Reduce domain of fractional variablesxi ∈ {bxic; dxie};
4. Solve the resulting sub-MIP;
Crucial point: Does not need a feasible start solution
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 57 / 62
![Page 209: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/209.jpg)
Heuristic – RENS
RENS – Relaxation Enforced Neighborhood Search
Idea: Search the vicinity of a relaxation solution
Algorithm
1. x ← LP optimum;
2. Fix all integral variables:xi := xi for all i : xi ∈ Z;
3. Reduce domain of fractional variablesxi ∈ {bxic; dxie};
4. Solve the resulting sub-MIP;
Crucial point: Does not need a feasible start solution
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 57 / 62
![Page 210: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/210.jpg)
Heuristic – RENS
RENS – Relaxation Enforced Neighborhood Search
Idea: Search the vicinity of a relaxation solution
Algorithm
1. x ← LP optimum;
2. Fix all integral variables:xi := xi for all i : xi ∈ Z;
3. Reduce domain of fractional variablesxi ∈ {bxic; dxie};
4. Solve the resulting sub-MIP;
Crucial point: Does not need a feasible start solution
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 57 / 62
![Page 211: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/211.jpg)
Heuristic – RENS
RENS – Relaxation Enforced Neighborhood Search
Idea: Search the vicinity of a relaxation solution
Algorithm
1. x ← LP optimum;
2. Fix all integral variables:xi := xi for all i : xi ∈ Z;
3. Reduce domain of fractional variablesxi ∈ {bxic; dxie};
4. Solve the resulting sub-MIP;
Crucial point: Does not need a feasible start solution
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 57 / 62
![Page 212: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/212.jpg)
Outline
Integer Programming for Constraint Programmers
1 Introduction
2 Linear programming
3 Integer (linear) programming
4 Summary
5 Discussion
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 58 / 62
![Page 213: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/213.jpg)
SummaryLinear relaxation
. gives a global view
. provides a proven dual bound for the original problemI quality guarantee
. can be used for more than getting a dual boundI propagation, branching, primal heuristic, ...
Additional remarks
. a linear relaxation does not have to represent all constraints
. numeric issues can arise due to continuous optimizationI in general the numerics can be controlledI there exist critical instancesI see also exact interger programming
As in CP, the chosen model has a huge impacton the performance of a solver
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 59 / 62
![Page 214: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/214.jpg)
SummaryLinear relaxation
. gives a global view
. provides a proven dual bound for the original problemI quality guarantee
. can be used for more than getting a dual boundI propagation, branching, primal heuristic, ...
Additional remarks
. a linear relaxation does not have to represent all constraints
. numeric issues can arise due to continuous optimizationI in general the numerics can be controlledI there exist critical instancesI see also exact interger programming
As in CP, the chosen model has a huge impacton the performance of a solver
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 59 / 62
![Page 215: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/215.jpg)
SummaryLinear relaxation
. gives a global view
. provides a proven dual bound for the original problemI quality guarantee
. can be used for more than getting a dual boundI propagation, branching, primal heuristic, ...
Additional remarks
. a linear relaxation does not have to represent all constraints
. numeric issues can arise due to continuous optimizationI in general the numerics can be controlledI there exist critical instancesI see also exact interger programming
As in CP, the chosen model has a huge impacton the performance of a solver
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 59 / 62
![Page 216: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/216.jpg)
An incomplete list of IP Solvers
Non-commercial solvers
. CBC (IBM) https://projects.coin-or.org/Cbc
. GLPK http://www.gnu.org/s/glpk/
. LPSOLVE http://lpsolve.sourceforge.net/
. SCIP http://scip.zib.de
. SYMPHONY https://projects.coin-or.org/SYMPHONY
Commercial solvers
. CPLEX (IBM) http://www.cplex.com
. GUROBI http://www.gurobi.com
. MOPS http://www.mops-optimizer.com
. MOSEK http://www.mosek.com
. XPRESS (Fico) http://www.fico.com
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 60 / 62
![Page 217: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/217.jpg)
Outline
Integer Programming for Constraint Programmers
1 Introduction
2 Linear programming
3 Integer (linear) programming
4 Summary
5 Discussion
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 61 / 62
![Page 218: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/218.jpg)
Questions
Ambros Gleixner and Stefan Heinz (ZIB) – Integer Programming for Constraint Programmers 62 / 62
![Page 219: Tutorial - Integer Programming for Constraint …Tutorial Integer Programming for Constraint Programmers Ambros Gleixner and Stefan Heinz Zuse Institute Berlin (ZIB) Chris Beck, Timo](https://reader033.vdocument.in/reader033/viewer/2022060209/5f0448b77e708231d40d3762/html5/thumbnails/219.jpg)
TutorialInteger Programming forConstraint Programmers
Ambros Gleixner and Stefan HeinzZuse Institute Berlin (ZIB)
Chris Beck, Timo Berthold, and Kati Wolter
DFG Research Center MATHEON
Mathematics for key technologies
CP 2011, 14/Sep/2011