column generation, dantzig-wolfe, branch-price-and-cut · 2020. 9. 30. · reminder: vertex...

58
Column Generation, Dantzig-Wolfe, Branch-Price-and-Cut Q & A and Exercise Session Marco L ¨ ubbecke · OR Group · RWTH Aachen University, Germany @mluebbecke @mluebbecke · CO@Work 2020 · Exercise: Column Generation, Dantzig-Wolfe Reformulation , Branch-Price-and-Cut · 1/39

Upload: others

Post on 24-Feb-2021

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Column Generation, Dantzig-Wolfe, Branch-Price-and-Cut · 2020. 9. 30. · Reminder: Vertex Coloring Problem Data G= (V;E) undirected graph Goal color all vertices such that adjacent

Column Generation, Dantzig-Wolfe, Branch-Price-and-CutQ & A and Exercise Session

Marco Lubbecke · OR Group · RWTH Aachen University, Germany

@mluebbecke

@mluebbecke · CO@Work 2020 · Exercise: Column Generation, Dantzig-Wolfe Reformulation , Branch-Price-and-Cut · 1/39

Page 2: Column Generation, Dantzig-Wolfe, Branch-Price-and-Cut · 2020. 9. 30. · Reminder: Vertex Coloring Problem Data G= (V;E) undirected graph Goal color all vertices such that adjacent

This Exercise

1. a theoretic part2. a more practical part

Page 3: Column Generation, Dantzig-Wolfe, Branch-Price-and-Cut · 2020. 9. 30. · Reminder: Vertex Coloring Problem Data G= (V;E) undirected graph Goal color all vertices such that adjacent

Reminder: Vertex Coloring Problem

DataG = (V,E) undirected graph

Goalcolor all vertices such that adjacent vertices receive different colors, minimizing thenumber of used colors

@mluebbecke · CO@Work 2020 · Exercise: Column Generation, Dantzig-Wolfe Reformulation , Branch-Price-and-Cut · 3/39

Page 4: Column Generation, Dantzig-Wolfe, Branch-Price-and-Cut · 2020. 9. 30. · Reminder: Vertex Coloring Problem Data G= (V;E) undirected graph Goal color all vertices such that adjacent

Vertex Coloring: A Compact Integer Program

I notation: C set of available colors

χ(G) = min∑c∈C

yc // minimize number of used colors

s.t.∑c∈C

xic = 1 i ∈ V // color each vertex

xic + xjc ≤ 1 ij ∈ E, c ∈ C // avoid conflicts

xic ≤ yc i ∈ V, c ∈ C // couple x and y variables

xic ∈ {0, 1} i ∈ V, c ∈ C // color vertex i with c?

yc ∈ {0, 1} c ∈ C // do we use color c?

I χ(G) is called the chromatic number of G.I alternative linking of variables x and y possible

@mluebbecke · CO@Work 2020 · Exercise: Column Generation, Dantzig-Wolfe Reformulation , Branch-Price-and-Cut · 4/39

Page 5: Column Generation, Dantzig-Wolfe, Branch-Price-and-Cut · 2020. 9. 30. · Reminder: Vertex Coloring Problem Data G= (V;E) undirected graph Goal color all vertices such that adjacent

Vertex Coloring: A Compact Integer Program

I notation: C set of available colors

χ(G) = min∑c∈C

yc // minimize number of used colors

s.t.∑c∈C

xic = 1 i ∈ V // color each vertex

xic + xjc ≤ 1 ij ∈ E, c ∈ C // avoid conflicts

xic ≤ yc i ∈ V, c ∈ C // couple x and y variables

xic ∈ {0, 1} i ∈ V, c ∈ C // color vertex i with c?

yc ∈ {0, 1} c ∈ C // do we use color c?

I χ(G) is called the chromatic number of G.I alternative linking of variables x and y possible

@mluebbecke · CO@Work 2020 · Exercise: Column Generation, Dantzig-Wolfe Reformulation , Branch-Price-and-Cut · 4/39

Page 6: Column Generation, Dantzig-Wolfe, Branch-Price-and-Cut · 2020. 9. 30. · Reminder: Vertex Coloring Problem Data G= (V;E) undirected graph Goal color all vertices such that adjacent

Vertex Coloring: A Compact Integer Program

I notation: C set of available colors

χ(G) = min∑c∈C

yc // minimize number of used colors

s.t.∑c∈C

xic = 1 i ∈ V // color each vertex

xic + xjc ≤ 1 ij ∈ E, c ∈ C // avoid conflicts

xic ≤ yc i ∈ V, c ∈ C // couple x and y variables

xic ∈ {0, 1} i ∈ V, c ∈ C // color vertex i with c?

yc ∈ {0, 1} c ∈ C // do we use color c?

I χ(G) is called the chromatic number of G.I alternative linking of variables x and y possible

@mluebbecke · CO@Work 2020 · Exercise: Column Generation, Dantzig-Wolfe Reformulation , Branch-Price-and-Cut · 4/39

Page 7: Column Generation, Dantzig-Wolfe, Branch-Price-and-Cut · 2020. 9. 30. · Reminder: Vertex Coloring Problem Data G= (V;E) undirected graph Goal color all vertices such that adjacent

Vertex Coloring: A Compact Integer Program

I notation: C set of available colors

χ(G) = min∑c∈C

yc // minimize number of used colors

s.t.∑c∈C

xic = 1 i ∈ V // color each vertex

xic + xjc ≤ 1 ij ∈ E, c ∈ C // avoid conflicts

xic ≤ yc i ∈ V, c ∈ C // couple x and y variables

xic ∈ {0, 1} i ∈ V, c ∈ C // color vertex i with c?

yc ∈ {0, 1} c ∈ C // do we use color c?

I χ(G) is called the chromatic number of G.I alternative linking of variables x and y possible

@mluebbecke · CO@Work 2020 · Exercise: Column Generation, Dantzig-Wolfe Reformulation , Branch-Price-and-Cut · 4/39

Page 8: Column Generation, Dantzig-Wolfe, Branch-Price-and-Cut · 2020. 9. 30. · Reminder: Vertex Coloring Problem Data G= (V;E) undirected graph Goal color all vertices such that adjacent

Vertex Coloring: A Compact Integer Program

I notation: C set of available colors

χ(G) = min∑c∈C

yc // minimize number of used colors

s.t.∑c∈C

xic = 1 i ∈ V // color each vertex

xic + xjc ≤ 1 ij ∈ E, c ∈ C // avoid conflicts

xic ≤ yc i ∈ V, c ∈ C // couple x and y variables

xic ∈ {0, 1} i ∈ V, c ∈ C // color vertex i with c?

yc ∈ {0, 1} c ∈ C // do we use color c?

I χ(G) is called the chromatic number of G.I alternative linking of variables x and y possible

@mluebbecke · CO@Work 2020 · Exercise: Column Generation, Dantzig-Wolfe Reformulation , Branch-Price-and-Cut · 4/39

Page 9: Column Generation, Dantzig-Wolfe, Branch-Price-and-Cut · 2020. 9. 30. · Reminder: Vertex Coloring Problem Data G= (V;E) undirected graph Goal color all vertices such that adjacent

Vertex Coloring: A Compact Integer Program

I notation: C set of available colors

χ(G) = min∑c∈C

yc // minimize number of used colors

s.t.∑c∈C

xic = 1 i ∈ V // color each vertex

xic + xjc ≤ 1 ij ∈ E, c ∈ C // avoid conflicts

xic ≤ yc i ∈ V, c ∈ C // couple x and y variables

xic ∈ {0, 1} i ∈ V, c ∈ C // color vertex i with c?

yc ∈ {0, 1} c ∈ C // do we use color c?

I χ(G) is called the chromatic number of G.

I alternative linking of variables x and y possible

@mluebbecke · CO@Work 2020 · Exercise: Column Generation, Dantzig-Wolfe Reformulation , Branch-Price-and-Cut · 4/39

Page 10: Column Generation, Dantzig-Wolfe, Branch-Price-and-Cut · 2020. 9. 30. · Reminder: Vertex Coloring Problem Data G= (V;E) undirected graph Goal color all vertices such that adjacent

Vertex Coloring: A Compact Integer Program

I notation: C set of available colors

χ(G) = min∑c∈C

yc // minimize number of used colors

s.t.∑c∈C

xic = 1 i ∈ V // color each vertex

xic + xjc ≤ yc ij ∈ E, c ∈ C // avoid conflicts

xic ≤ yc i ∈ V, c ∈ C // couple x and y variables

xic ∈ {0, 1} i ∈ V, c ∈ C // color vertex i with c?

yc ∈ {0, 1} c ∈ C // do we use color c?

I χ(G) is called the chromatic number of G.I alternative linking of variables x and y possible

@mluebbecke · CO@Work 2020 · Exercise: Column Generation, Dantzig-Wolfe Reformulation , Branch-Price-and-Cut · 4/39

Page 11: Column Generation, Dantzig-Wolfe, Branch-Price-and-Cut · 2020. 9. 30. · Reminder: Vertex Coloring Problem Data G= (V;E) undirected graph Goal color all vertices such that adjacent

Similar: Edge Coloring Problem

DataG = (V,E) undirected graph

Goalcolor all edges such that incident edges receive different colors, minimizing the number ofused colors

@mluebbecke · CO@Work 2020 · Exercise: Column Generation, Dantzig-Wolfe Reformulation , Branch-Price-and-Cut · 5/39

Page 12: Column Generation, Dantzig-Wolfe, Branch-Price-and-Cut · 2020. 9. 30. · Reminder: Vertex Coloring Problem Data G= (V;E) undirected graph Goal color all vertices such that adjacent

It is your Turn!

I formulate the edge coloring problem as a compact integer program

@mluebbecke · CO@Work 2020 · Exercise: Column Generation, Dantzig-Wolfe Reformulation , Branch-Price-and-Cut · 6/39

Page 13: Column Generation, Dantzig-Wolfe, Branch-Price-and-Cut · 2020. 9. 30. · Reminder: Vertex Coloring Problem Data G= (V;E) undirected graph Goal color all vertices such that adjacent

Edge Coloring: A Compact Integer Program

I notation: δ(i) = {{i, j} | {i, j} ∈ E} edges incident with i ∈ V

χ′(G) = min∑c∈C

yc // minimize number of used colors

s.t.∑c∈C

xec = 1 e ∈ E // color each edge∑e∈δ(i)

xec ≤ yc i ∈ V, c ∈ C // avoid conflicts

xec ∈ {0, 1} e ∈ E, c ∈ C // color edge e with c?

yc ∈ {0, 1} c ∈ C // do we use color c?

I χ′(G) is called the chromatic index of G.

@mluebbecke · CO@Work 2020 · Exercise: Column Generation, Dantzig-Wolfe Reformulation , Branch-Price-and-Cut · 7/39

Page 14: Column Generation, Dantzig-Wolfe, Branch-Price-and-Cut · 2020. 9. 30. · Reminder: Vertex Coloring Problem Data G= (V;E) undirected graph Goal color all vertices such that adjacent

Edge Coloring: A Compact Integer Program

I notation: δ(i) = {{i, j} | {i, j} ∈ E} edges incident with i ∈ V

χ′(G) = min∑c∈C

yc // minimize number of used colors

s.t.∑c∈C

xec = 1 e ∈ E // color each edge∑e∈δ(i)

xec ≤ yc i ∈ V, c ∈ C // avoid conflicts

xec ∈ {0, 1} e ∈ E, c ∈ C // color edge e with c?

yc ∈ {0, 1} c ∈ C // do we use color c?

I χ′(G) is called the chromatic index of G.

@mluebbecke · CO@Work 2020 · Exercise: Column Generation, Dantzig-Wolfe Reformulation , Branch-Price-and-Cut · 7/39

Page 15: Column Generation, Dantzig-Wolfe, Branch-Price-and-Cut · 2020. 9. 30. · Reminder: Vertex Coloring Problem Data G= (V;E) undirected graph Goal color all vertices such that adjacent

Edge Coloring: A Compact Integer Program

I notation: δ(i) = {{i, j} | {i, j} ∈ E} edges incident with i ∈ V

χ′(G) = min∑c∈C

yc // minimize number of used colors

s.t.∑c∈C

xec = 1 e ∈ E // color each edge

∑e∈δ(i)

xec ≤ yc i ∈ V, c ∈ C // avoid conflicts

xec ∈ {0, 1} e ∈ E, c ∈ C // color edge e with c?

yc ∈ {0, 1} c ∈ C // do we use color c?

I χ′(G) is called the chromatic index of G.

@mluebbecke · CO@Work 2020 · Exercise: Column Generation, Dantzig-Wolfe Reformulation , Branch-Price-and-Cut · 7/39

Page 16: Column Generation, Dantzig-Wolfe, Branch-Price-and-Cut · 2020. 9. 30. · Reminder: Vertex Coloring Problem Data G= (V;E) undirected graph Goal color all vertices such that adjacent

Edge Coloring: A Compact Integer Program

I notation: δ(i) = {{i, j} | {i, j} ∈ E} edges incident with i ∈ V

χ′(G) = min∑c∈C

yc // minimize number of used colors

s.t.∑c∈C

xec = 1 e ∈ E // color each edge∑e∈δ(i)

xec ≤ yc i ∈ V, c ∈ C // avoid conflicts

xec ∈ {0, 1} e ∈ E, c ∈ C // color edge e with c?

yc ∈ {0, 1} c ∈ C // do we use color c?

I χ′(G) is called the chromatic index of G.

@mluebbecke · CO@Work 2020 · Exercise: Column Generation, Dantzig-Wolfe Reformulation , Branch-Price-and-Cut · 7/39

Page 17: Column Generation, Dantzig-Wolfe, Branch-Price-and-Cut · 2020. 9. 30. · Reminder: Vertex Coloring Problem Data G= (V;E) undirected graph Goal color all vertices such that adjacent

Edge Coloring: A Compact Integer Program

I notation: δ(i) = {{i, j} | {i, j} ∈ E} edges incident with i ∈ V

χ′(G) = min∑c∈C

yc // minimize number of used colors

s.t.∑c∈C

xec = 1 e ∈ E // color each edge∑e∈δ(i)

xec ≤ yc i ∈ V, c ∈ C // avoid conflicts

xec ∈ {0, 1} e ∈ E, c ∈ C // color edge e with c?

yc ∈ {0, 1} c ∈ C // do we use color c?

I χ′(G) is called the chromatic index of G.

@mluebbecke · CO@Work 2020 · Exercise: Column Generation, Dantzig-Wolfe Reformulation , Branch-Price-and-Cut · 7/39

Page 18: Column Generation, Dantzig-Wolfe, Branch-Price-and-Cut · 2020. 9. 30. · Reminder: Vertex Coloring Problem Data G= (V;E) undirected graph Goal color all vertices such that adjacent

Edge Coloring: A Compact Integer Program

I notation: δ(i) = {{i, j} | {i, j} ∈ E} edges incident with i ∈ V

χ′(G) = min∑c∈C

yc // minimize number of used colors

s.t.∑c∈C

xec = 1 e ∈ E // color each edge∑e∈δ(i)

xec ≤ yc i ∈ V, c ∈ C // avoid conflicts

xec ∈ {0, 1} e ∈ E, c ∈ C // color edge e with c?

yc ∈ {0, 1} c ∈ C // do we use color c?

I χ′(G) is called the chromatic index of G.

@mluebbecke · CO@Work 2020 · Exercise: Column Generation, Dantzig-Wolfe Reformulation , Branch-Price-and-Cut · 7/39

Page 19: Column Generation, Dantzig-Wolfe, Branch-Price-and-Cut · 2020. 9. 30. · Reminder: Vertex Coloring Problem Data G= (V;E) undirected graph Goal color all vertices such that adjacent

Reminder: Dantzig-Wolfe Reformulation

min∑c∈C

yc

s.t.∑c∈C

xic = 1 i ∈ V

xic + xjc ≤ yc ij ∈ E, c ∈ C

// reformulate

xic ∈ {0, 1} i ∈ V, c ∈ C

// reformulate

yc ∈ {0, 1} c ∈ C

// reformulate

I considerXc = conv {xic ∈ {0, 1}, i ∈ V, yc ∈ {0, 1} | xic + xjc ≤ yc, ij ∈ E} , c ∈ C

the convex hull of incidence vectors of stable sets in G in color c

@mluebbecke · CO@Work 2020 · Exercise: Column Generation, Dantzig-Wolfe Reformulation , Branch-Price-and-Cut · 8/39

Page 20: Column Generation, Dantzig-Wolfe, Branch-Price-and-Cut · 2020. 9. 30. · Reminder: Vertex Coloring Problem Data G= (V;E) undirected graph Goal color all vertices such that adjacent

Reminder: Dantzig-Wolfe Reformulation

min∑c∈C

yc

s.t.∑c∈C

xic = 1 i ∈ V

xic + xjc ≤ yc ij ∈ E, c ∈ C // reformulate

xic ∈ {0, 1} i ∈ V, c ∈ C // reformulate

yc ∈ {0, 1} c ∈ C // reformulate

I considerXc = conv {xic ∈ {0, 1}, i ∈ V, yc ∈ {0, 1} | xic + xjc ≤ yc, ij ∈ E} , c ∈ C

the convex hull of incidence vectors of stable sets in G in color c

@mluebbecke · CO@Work 2020 · Exercise: Column Generation, Dantzig-Wolfe Reformulation , Branch-Price-and-Cut · 8/39

Page 21: Column Generation, Dantzig-Wolfe, Branch-Price-and-Cut · 2020. 9. 30. · Reminder: Vertex Coloring Problem Data G= (V;E) undirected graph Goal color all vertices such that adjacent

Reminder: Dantzig-Wolfe Reformulation

min∑c∈C

yc

s.t.∑c∈C

xic = 1 i ∈ V

xic + xjc ≤ yc ij ∈ E, c ∈ C // reformulate

xic ∈ {0, 1} i ∈ V, c ∈ C // reformulate

yc ∈ {0, 1} c ∈ C // reformulate

I considerXc = conv {xic ∈ {0, 1}, i ∈ V, yc ∈ {0, 1} | xic + xjc ≤ yc, ij ∈ E} , c ∈ C

the convex hull of incidence vectors of stable sets in G in color c

@mluebbecke · CO@Work 2020 · Exercise: Column Generation, Dantzig-Wolfe Reformulation , Branch-Price-and-Cut · 8/39

Page 22: Column Generation, Dantzig-Wolfe, Branch-Price-and-Cut · 2020. 9. 30. · Reminder: Vertex Coloring Problem Data G= (V;E) undirected graph Goal color all vertices such that adjacent

Reminder: Dantzig-Wolfe Reformulation

Xc = conv {xic ∈ {0, 1}, i ∈ V, yc ∈ {0, 1} | xic + xjc ≤ yc, ij ∈ E} , c ∈ C

I we express every(xcyc

)∈ Xc as convex combination of extreme points of Xc

// by construction we know that these extreme points are incidence vectors of stable sets

x1c...

x|V |cyc

=∑q∈Qc

x1cq

...x|V |cqycq

· λcq, ∑q∈Qc

λcq = 1, λcq ≥ 0, q ∈ Qc, c ∈ C

I that is, we can replace xic =∑

q∈Qc:i∈qλcq and yc = 1 ⇐⇒ xq 6= 0

@mluebbecke · CO@Work 2020 · Exercise: Column Generation, Dantzig-Wolfe Reformulation , Branch-Price-and-Cut · 9/39

Page 23: Column Generation, Dantzig-Wolfe, Branch-Price-and-Cut · 2020. 9. 30. · Reminder: Vertex Coloring Problem Data G= (V;E) undirected graph Goal color all vertices such that adjacent

Reminder: Dantzig-Wolfe Reformulation

I we can replace xic =∑

q∈Qc:i∈qλcq and yc = 1 ⇐⇒ xq 6= 0 in the “master” constraints

min∑c∈C

yc

s.t.∑c∈C

xic = 1 i ∈ V

xec ≥ 0 e ∈ E, c ∈ Cyc ≥ 0 c ∈ C

@mluebbecke · CO@Work 2020 · Exercise: Column Generation, Dantzig-Wolfe Reformulation , Branch-Price-and-Cut · 10/39

Page 24: Column Generation, Dantzig-Wolfe, Branch-Price-and-Cut · 2020. 9. 30. · Reminder: Vertex Coloring Problem Data G= (V;E) undirected graph Goal color all vertices such that adjacent

Reminder: Dantzig-Wolfe Reformulation

I we can replace xic =∑

q∈Qc:i∈qλcq and yc = 1 ⇐⇒ xq 6= 0 in the “master” constraints

min∑c∈C

∑q∈Qc:xq 6=0

λcq // minimize number of (non-empty) stable sets

s.t.∑c∈C

∑q∈Qc:i∈q

λcq = 1 i ∈ V // every vertex must appear in exactly one stable set

∑q∈Qc

λcq = 1 c ∈ C // exactly one stable set per color, could be empty !

λcq ≥ 0 q ∈ Qc

@mluebbecke · CO@Work 2020 · Exercise: Column Generation, Dantzig-Wolfe Reformulation , Branch-Price-and-Cut · 10/39

Page 25: Column Generation, Dantzig-Wolfe, Branch-Price-and-Cut · 2020. 9. 30. · Reminder: Vertex Coloring Problem Data G= (V;E) undirected graph Goal color all vertices such that adjacent

It is your Turn!

I review and understand the above Dantzig-Wolfe reformulationI think about what would change on the edge coloring model

@mluebbecke · CO@Work 2020 · Exercise: Column Generation, Dantzig-Wolfe Reformulation , Branch-Price-and-Cut · 11/39

Page 26: Column Generation, Dantzig-Wolfe, Branch-Price-and-Cut · 2020. 9. 30. · Reminder: Vertex Coloring Problem Data G= (V;E) undirected graph Goal color all vertices such that adjacent

Dantzig-Wolfe Reformulation for Edge Coloring

I we consider the convex hull of incidence vectors of matchings in G in color c

X ′c = conv

{xec ∈ {0, 1}, e ∈ E, yc ∈ {0, 1} |

∑e∈δ(i)

xec ≤ yc, i ∈ V}, c ∈ C

I the formulas look very similar, except that we talk about edges and matchingsI replace xec =

∑q∈Qc:e∈q

λcq and yc = 1 ⇐⇒ xq 6= 0 in the “master” constraints

@mluebbecke · CO@Work 2020 · Exercise: Column Generation, Dantzig-Wolfe Reformulation , Branch-Price-and-Cut · 12/39

Page 27: Column Generation, Dantzig-Wolfe, Branch-Price-and-Cut · 2020. 9. 30. · Reminder: Vertex Coloring Problem Data G= (V;E) undirected graph Goal color all vertices such that adjacent

Dantzig-Wolfe Reformulation for Edge Coloring

I we consider the convex hull of incidence vectors of matchings in G in color c

X ′c = conv

{xec ∈ {0, 1}, e ∈ E, yc ∈ {0, 1} |

∑e∈δ(i)

xec ≤ yc, i ∈ V}, c ∈ C

I the formulas look very similar, except that we talk about edges and matchingsI replace xec =

∑q∈Qc:e∈q

λcq and yc = 1 ⇐⇒ xq 6= 0 in the “master” constraints

@mluebbecke · CO@Work 2020 · Exercise: Column Generation, Dantzig-Wolfe Reformulation , Branch-Price-and-Cut · 12/39

Page 28: Column Generation, Dantzig-Wolfe, Branch-Price-and-Cut · 2020. 9. 30. · Reminder: Vertex Coloring Problem Data G= (V;E) undirected graph Goal color all vertices such that adjacent

The Restricted Master Problem for Edge Coloring

I the restricted master problem also looks similarI Qc index set of matchings in G in color c, c ∈ C

min∑c∈C

∑q∈Qc:xq 6=0

λcq // minimize number of (non-empty) matchings

s.t.∑c∈C

∑q∈Qc:e∈q

λcq = 1 e ∈ E // every edge must appear in exactly one matching

∑q∈Qc

λcq = 1 c ∈ C // exactly one matching per color, could be empty !

λcq ≥ 0 q ∈ Qc

@mluebbecke · CO@Work 2020 · Exercise: Column Generation, Dantzig-Wolfe Reformulation , Branch-Price-and-Cut · 13/39

Page 29: Column Generation, Dantzig-Wolfe, Branch-Price-and-Cut · 2020. 9. 30. · Reminder: Vertex Coloring Problem Data G= (V;E) undirected graph Goal color all vertices such that adjacent

Reminder: Column Generation: Vertex Coloring

I solving the restricted master problem gives an optimal dual solution {πi}i∈V , {σc}c∈CI the pricing problem is to minimize the reduced cost over Xc

min∑c∈C

yc −∑i∈V

πixic −∑c∈C

σc

s.t. xic + xjc ≤ yc ij ∈ E, c ∈ Cxic ∈ {0, 1} i ∈ V, c ∈ Cyc ∈ {0, 1} c ∈ C

I one realizes that this decomposes into |C| independent problems

@mluebbecke · CO@Work 2020 · Exercise: Column Generation, Dantzig-Wolfe Reformulation , Branch-Price-and-Cut · 14/39

Page 30: Column Generation, Dantzig-Wolfe, Branch-Price-and-Cut · 2020. 9. 30. · Reminder: Vertex Coloring Problem Data G= (V;E) undirected graph Goal color all vertices such that adjacent

It is your Turn!

I think about how the pricing problem for the edge coloring problem looks like

@mluebbecke · CO@Work 2020 · Exercise: Column Generation, Dantzig-Wolfe Reformulation , Branch-Price-and-Cut · 15/39

Page 31: Column Generation, Dantzig-Wolfe, Branch-Price-and-Cut · 2020. 9. 30. · Reminder: Vertex Coloring Problem Data G= (V;E) undirected graph Goal color all vertices such that adjacent

Column Generation for Edge Coloring

I solving the restricted master problem gives an optimal dual solution {πe}e∈E , {σc}c∈CI the pricing problem is to minimize the reduced cost over X ′

c

min∑c∈C

yc −∑e∈E

πexec −∑c∈C

σc

s.t.∑e∈δ(i)

xec ≤ yc i ∈ V, c ∈ C

xec ∈ {0, 1} e ∈ E, c ∈ Cyc ∈ {0, 1} c ∈ C

I one realizes that this decomposes into |C| independent problems

@mluebbecke · CO@Work 2020 · Exercise: Column Generation, Dantzig-Wolfe Reformulation , Branch-Price-and-Cut · 16/39

Page 32: Column Generation, Dantzig-Wolfe, Branch-Price-and-Cut · 2020. 9. 30. · Reminder: Vertex Coloring Problem Data G= (V;E) undirected graph Goal color all vertices such that adjacent

Do we really need to know all this?

I well, yes and no

@mluebbecke · CO@Work 2020 · Exercise: Column Generation, Dantzig-Wolfe Reformulation , Branch-Price-and-Cut · 17/39

Page 33: Column Generation, Dantzig-Wolfe, Branch-Price-and-Cut · 2020. 9. 30. · Reminder: Vertex Coloring Problem Data G= (V;E) undirected graph Goal color all vertices such that adjacent

What is GCG?

I a branch-price-and-cut solver, based on SCIPI reads MIP, performs DW reformulation, does BP&C

I pricing: MIP/specialized, heuristic/exact, parallel, . . .I branching: original/Ryan-Foster/genericI cuts from original: combinatorial/from basisI primal heuristics: original/master/mixedI stabilization, early branching, . . .

I no modeling language/user interaction required

I download: gcg.or.rwth-aachen.de or scipopt.org

@mluebbecke · CO@Work 2020 · Exercise: Column Generation, Dantzig-Wolfe Reformulation , Branch-Price-and-Cut · 18/39

Page 34: Column Generation, Dantzig-Wolfe, Branch-Price-and-Cut · 2020. 9. 30. · Reminder: Vertex Coloring Problem Data G= (V;E) undirected graph Goal color all vertices such that adjacent

What is necessary to make this work?

I coefficient matrices of integer programs

0

500

1000

1500

2000

2500

3000

3500

0 500 1000 1500 2000 2500 3000 3500

b2c1s1

(with 4 blocks)

@mluebbecke · CO@Work 2020 · Exercise: Column Generation, Dantzig-Wolfe Reformulation , Branch-Price-and-Cut · 19/39

Page 35: Column Generation, Dantzig-Wolfe, Branch-Price-and-Cut · 2020. 9. 30. · Reminder: Vertex Coloring Problem Data G= (V;E) undirected graph Goal color all vertices such that adjacent

What is necessary to make this work?

I coefficient matrices of integer programs

0

500

1000

1500

2000

2500

0 500 1000 1500 2000 2500

b2c1s1 (with 4 blocks)

@mluebbecke · CO@Work 2020 · Exercise: Column Generation, Dantzig-Wolfe Reformulation , Branch-Price-and-Cut · 19/39

Page 36: Column Generation, Dantzig-Wolfe, Branch-Price-and-Cut · 2020. 9. 30. · Reminder: Vertex Coloring Problem Data G= (V;E) undirected graph Goal color all vertices such that adjacent

What is necessary to make this work?

I coefficient matrices of integer programs

0

500

1000

1500

2000

2500

0 500 1000 1500 2000 2500

b2c1s1 (with 15 blocks)

@mluebbecke · CO@Work 2020 · Exercise: Column Generation, Dantzig-Wolfe Reformulation , Branch-Price-and-Cut · 19/39

Page 37: Column Generation, Dantzig-Wolfe, Branch-Price-and-Cut · 2020. 9. 30. · Reminder: Vertex Coloring Problem Data G= (V;E) undirected graph Goal color all vertices such that adjacent

For Textbook Models: Matrix Adjacency not ideal

0

20

40

60

80

100 0 500 1000 1500 2000 2500

cpmp p2050-1 (with 50 blocks)

@mluebbecke · CO@Work 2020 · Exercise: Column Generation, Dantzig-Wolfe Reformulation , Branch-Price-and-Cut · 20/39

Page 38: Column Generation, Dantzig-Wolfe, Branch-Price-and-Cut · 2020. 9. 30. · Reminder: Vertex Coloring Problem Data G= (V;E) undirected graph Goal color all vertices such that adjacent

What did they have in Mind?

0

2000

4000

6000

8000

10000

0 500 1000 1500 2000 2500 3000 3500 4000 4500

ns1778858

(with 16 blocks)

@mluebbecke · CO@Work 2020 · Exercise: Column Generation, Dantzig-Wolfe Reformulation , Branch-Price-and-Cut · 21/39

Page 39: Column Generation, Dantzig-Wolfe, Branch-Price-and-Cut · 2020. 9. 30. · Reminder: Vertex Coloring Problem Data G= (V;E) undirected graph Goal color all vertices such that adjacent

What did they have in Mind?

0

2000

4000

6000

8000

10000

0 500 1000 1500 2000 2500 3000 3500 4000 4500

ns1778858 (with 16 blocks)

@mluebbecke · CO@Work 2020 · Exercise: Column Generation, Dantzig-Wolfe Reformulation , Branch-Price-and-Cut · 21/39

Page 40: Column Generation, Dantzig-Wolfe, Branch-Price-and-Cut · 2020. 9. 30. · Reminder: Vertex Coloring Problem Data G= (V;E) undirected graph Goal color all vertices such that adjacent

Number of Blocks?

0

200

400

600

800

1000

1200

1400

1600

1800

0 1000 2000 3000 4000 5000 6000

ns4-pr9

(with 88 blocks)

@mluebbecke · CO@Work 2020 · Exercise: Column Generation, Dantzig-Wolfe Reformulation , Branch-Price-and-Cut · 22/39

Page 41: Column Generation, Dantzig-Wolfe, Branch-Price-and-Cut · 2020. 9. 30. · Reminder: Vertex Coloring Problem Data G= (V;E) undirected graph Goal color all vertices such that adjacent

Number of Blocks?

0

200

400

600

800

1000

1200

1400

1600

1800

0 1000 2000 3000 4000 5000 6000

ns4-pr9 (with 88 blocks)

@mluebbecke · CO@Work 2020 · Exercise: Column Generation, Dantzig-Wolfe Reformulation , Branch-Price-and-Cut · 22/39

Page 42: Column Generation, Dantzig-Wolfe, Branch-Price-and-Cut · 2020. 9. 30. · Reminder: Vertex Coloring Problem Data G= (V;E) undirected graph Goal color all vertices such that adjacent

GCG “Detectors” detect Model Structure

I these pictures are automatically generated by GCGI so-called “detectors” identify certain structures like “blocks”

@mluebbecke · CO@Work 2020 · Exercise: Column Generation, Dantzig-Wolfe Reformulation , Branch-Price-and-Cut · 23/39

Page 43: Column Generation, Dantzig-Wolfe, Branch-Price-and-Cut · 2020. 9. 30. · Reminder: Vertex Coloring Problem Data G= (V;E) undirected graph Goal color all vertices such that adjacent

It is your Turn!

let us invoke GCG

1. open a terminal// click new → terminal

2. call GCG from the terminal// just type gcg

@mluebbecke · CO@Work 2020 · Exercise: Column Generation, Dantzig-Wolfe Reformulation , Branch-Price-and-Cut · 24/39

Page 44: Column Generation, Dantzig-Wolfe, Branch-Price-and-Cut · 2020. 9. 30. · Reminder: Vertex Coloring Problem Data G= (V;E) undirected graph Goal color all vertices such that adjacent

It is your Turn!

I GCG can solve integer programs, just like SCIPI you can read and optimize LP and MPS (and other) files

I try to read bpp-200l-150.lp

I then optimize the modelI you can also display solution afterwardsI if you have seen enough you can quit — just as in SCIP

! you can even invoke SCIP on the command line and compare the performance!

@mluebbecke · CO@Work 2020 · Exercise: Column Generation, Dantzig-Wolfe Reformulation , Branch-Price-and-Cut · 25/39

Page 45: Column Generation, Dantzig-Wolfe, Branch-Price-and-Cut · 2020. 9. 30. · Reminder: Vertex Coloring Problem Data G= (V;E) undirected graph Goal color all vertices such that adjacent

ZIMPL Model for Edge Coloring: edge coloring.zpl

# definitions of sets V, E, C, and delta[i] are not displayed here

# use color c for edge <i,j> in E?var x[E*C] binary;# use color c?var y[C] binary;

minimize cost: sum<c> in C: y[c];

# every edge must receive exactly one colorsubto assign:

forall <i,j> in E: sum<c> in C: x[i,j,c] == 1;

# edges incident to a vertex must cannot receive the same colorsubto conflict:

forall <i,c> in V*C: sum<j,k> in delta[i]: x[j,k,c] <= y[c];

@mluebbecke · CO@Work 2020 · Exercise: Column Generation, Dantzig-Wolfe Reformulation , Branch-Price-and-Cut · 26/39

Page 46: Column Generation, Dantzig-Wolfe, Branch-Price-and-Cut · 2020. 9. 30. · Reminder: Vertex Coloring Problem Data G= (V;E) undirected graph Goal color all vertices such that adjacent

It is your Turn!

I start GCG from the terminal, then

I read edge coloring.zpl

I optimize

@mluebbecke · CO@Work 2020 · Exercise: Column Generation, Dantzig-Wolfe Reformulation , Branch-Price-and-Cut · 27/39

Page 47: Column Generation, Dantzig-Wolfe, Branch-Price-and-Cut · 2020. 9. 30. · Reminder: Vertex Coloring Problem Data G= (V;E) undirected graph Goal color all vertices such that adjacent

GCG can visualize the Matrix/Model Structure

0

10

20

30

40

50

0 10 20 30 40 50 60 70

@mluebbecke · CO@Work 2020 · Exercise: Column Generation, Dantzig-Wolfe Reformulation , Branch-Price-and-Cut · 28/39

Page 48: Column Generation, Dantzig-Wolfe, Branch-Price-and-Cut · 2020. 9. 30. · Reminder: Vertex Coloring Problem Data G= (V;E) undirected graph Goal color all vertices such that adjacent

It is your Turn!

1. start GCG from the terminal, then

2. read edge coloring.zpl

3. (optionally: presolve)4. detect

I this has invoked the detection manually, now you can check what GCG has found:

5. explore

I there are many “decompositions”. . .

@mluebbecke · CO@Work 2020 · Exercise: Column Generation, Dantzig-Wolfe Reformulation , Branch-Price-and-Cut · 29/39

Page 49: Column Generation, Dantzig-Wolfe, Branch-Price-and-Cut · 2020. 9. 30. · Reminder: Vertex Coloring Problem Data G= (V;E) undirected graph Goal color all vertices such that adjacent

The Explore Menu

Summary presolved original--------- --------

detected 0 20user given (partial) 0 0user given (full) 0 0============================================================================

id nbloc nmacon nlivar nmavar nstlva spfwh history pre nopcon nopvar usr sel---- ----- ------ ------ ------ ------ ----- ------- --- ------ ------ --- ---

0 6 12 0 0 0 0.8241 cC no 0 0 no no1 6 18 0 0 0 0.2778 cC no 0 0 no no2 6 24 0 0 0 0.2315 cC no 0 0 no no3 6 30 0 18 0 0.1937 cC no 0 0 no no4 6 36 0 24 0 0.1474 cC no 0 0 no no5 6 36 0 24 0 0.1474 cC no 0 0 no no6 18 0 72 0 0 0.1293 vC no 0 0 no no7 8 36 0 0 0 0.1147 cC no 0 0 no no8 6 30 0 0 0 0.1104 cC no 0 0 no no9 12 42 0 6 0 0.1026 cC no 0 0 no no

============================================================================

I new GCG 3.1.0, the explore menu offers e.g., sorting facilities@mluebbecke · CO@Work 2020 · Exercise: Column Generation, Dantzig-Wolfe Reformulation , Branch-Price-and-Cut · 30/39

Page 50: Column Generation, Dantzig-Wolfe, Branch-Price-and-Cut · 2020. 9. 30. · Reminder: Vertex Coloring Problem Data G= (V;E) undirected graph Goal color all vertices such that adjacent

The Explore Menu

I currently, the most interesting functionality is to browse the listI enter help for available commandsI I often use visualize, this produces a PDF

@mluebbecke · CO@Work 2020 · Exercise: Column Generation, Dantzig-Wolfe Reformulation , Branch-Price-and-Cut · 31/39

Page 51: Column Generation, Dantzig-Wolfe, Branch-Price-and-Cut · 2020. 9. 30. · Reminder: Vertex Coloring Problem Data G= (V;E) undirected graph Goal color all vertices such that adjacent

It is your Turn!

I at the moment, the visualization relies on gnuplot and a pdf viewerI you cannot start a pdf viewer today but you can download (and view) the pdf

@mluebbecke · CO@Work 2020 · Exercise: Column Generation, Dantzig-Wolfe Reformulation , Branch-Price-and-Cut · 32/39

Page 52: Column Generation, Dantzig-Wolfe, Branch-Price-and-Cut · 2020. 9. 30. · Reminder: Vertex Coloring Problem Data G= (V;E) undirected graph Goal color all vertices such that adjacent

Influencing the Detection

I there are many settings which influence the detectionI unfortunately, most of this is not yet documentedI the current best bet is to→ read the SCIP 6.0 release report, chapter 5

opus4.kobv.de/opus4-zib/files/6936/scipopt-60.pdf

→ check the (“internal”) GCG 3.1.0 documentationgcg.or.rwth-aachen.de/dev/

→ get in touch with us dev team

@mluebbecke · CO@Work 2020 · Exercise: Column Generation, Dantzig-Wolfe Reformulation , Branch-Price-and-Cut · 33/39

Page 53: Column Generation, Dantzig-Wolfe, Branch-Price-and-Cut · 2020. 9. 30. · Reminder: Vertex Coloring Problem Data G= (V;E) undirected graph Goal color all vertices such that adjacent

GCG can visualize the Matrix/Model Structure

0

10

20

30

40

50

0 10 20 30 40 50 60 70

@mluebbecke · CO@Work 2020 · Exercise: Column Generation, Dantzig-Wolfe Reformulation , Branch-Price-and-Cut · 34/39

Page 54: Column Generation, Dantzig-Wolfe, Branch-Price-and-Cut · 2020. 9. 30. · Reminder: Vertex Coloring Problem Data G= (V;E) undirected graph Goal color all vertices such that adjacent

It is your Turn!

I start GCG from the terminal, then

I read enlight13.mps.gz

I set detection detectors stairheur enabled TRUE// this enables a “staircase” detector

I presolve

I detect

I explore

I visualize 0

@mluebbecke · CO@Work 2020 · Exercise: Column Generation, Dantzig-Wolfe Reformulation , Branch-Price-and-Cut · 35/39

Page 55: Column Generation, Dantzig-Wolfe, Branch-Price-and-Cut · 2020. 9. 30. · Reminder: Vertex Coloring Problem Data G= (V;E) undirected graph Goal color all vertices such that adjacent

GCG can visualize a Staircase Structure

0

20

40

60

80

100

120

140

160

0 50 100 150 200 250 300

@mluebbecke · CO@Work 2020 · Exercise: Column Generation, Dantzig-Wolfe Reformulation , Branch-Price-and-Cut · 36/39

Page 56: Column Generation, Dantzig-Wolfe, Branch-Price-and-Cut · 2020. 9. 30. · Reminder: Vertex Coloring Problem Data G= (V;E) undirected graph Goal color all vertices such that adjacent

You can provide the Decomposition Information

I in addition to an LP or MPS file you can give a DEC fileI it essentially contains the information which constraint will take which role→ “block” or “master”

@mluebbecke · CO@Work 2020 · Exercise: Column Generation, Dantzig-Wolfe Reformulation , Branch-Price-and-Cut · 37/39

Page 57: Column Generation, Dantzig-Wolfe, Branch-Price-and-Cut · 2020. 9. 30. · Reminder: Vertex Coloring Problem Data G= (V;E) undirected graph Goal color all vertices such that adjacent

It is your Turn!

I download and inspect the file edge coloring.lp

I download and inspect the file edge coloring-cC-27-6-dec.dec

I start GCG from the terminal, then

I read edge coloring.lp

I read edge coloring-cC-27-6-dec.dec// you can create such DEC files yourself when GCG does not detect “your” structure

I explore

I visualize 0

I optimize

@mluebbecke · CO@Work 2020 · Exercise: Column Generation, Dantzig-Wolfe Reformulation , Branch-Price-and-Cut · 38/39

Page 58: Column Generation, Dantzig-Wolfe, Branch-Price-and-Cut · 2020. 9. 30. · Reminder: Vertex Coloring Problem Data G= (V;E) undirected graph Goal color all vertices such that adjacent

Stay in Touch

I if you have use cases, comments, questions, wishes, . . .I contact us @mluebbecke, [email protected] we also listen on the SCIP mailing list

@mluebbecke · CO@Work 2020 · Exercise: Column Generation, Dantzig-Wolfe Reformulation , Branch-Price-and-Cut · 39/39