Coluna: An Open-Source Branch-Cut-and-Price Framework T. Bulhes, G. - - PowerPoint PPT Presentation

coluna an open source branch cut and price framework
SMART_READER_LITE
LIVE PREVIEW

Coluna: An Open-Source Branch-Cut-and-Price Framework T. Bulhes, G. - - PowerPoint PPT Presentation

Coluna: An Open-Source Branch-Cut-and-Price Framework T. Bulhes, G. Marques, V. Nesello, A. Pessoa, E. Uchoa, R. Sadykov, I. Tahiri, F. Vanderbeck JuMP-dev 2019, Santiago March 2019 1 / 35 Contents What is Coluna.jl? Decomposition


slide-1
SLIDE 1

Coluna: An Open-Source Branch-Cut-and-Price Framework

  • T. Bulhões, G. Marques, V. Nesello, A. Pessoa, E. Uchoa, R. Sadykov, I. Tahiri, F.

Vanderbeck

JuMP-dev 2019, Santiago March 2019

1 / 35

slide-2
SLIDE 2

Contents

What is Coluna.jl? Decomposition approaches Using Coluna to decompose and solve a model

2 / 35

slide-3
SLIDE 3

Contents

What is Coluna.jl? Decomposition approaches Using Coluna to decompose and solve a model

3 / 35

slide-4
SLIDE 4

What is Coluna.jl?

4 / 35

slide-5
SLIDE 5

Coluna.jl

◮ What:

◮ A Column-and-Row generation code ◮ Open-Source: MPLicence ◮ Written in Julia (1.1) ◮ Uses JuMP.jl (0.19), MathOptInteface.jl and BlockDecomposition.jl

◮ Uses:

◮ Dantzig-Wolfe & Benders decomposition ◮ Robust & Stochastic Optimization ◮ Machine Learning

◮ First release: Jan. ’19 ◮ Support: Math Optimization Society (MOS) & JuliaOpt ◮ URL https://github.com/atoptima/Coluna.jl

5 / 35

slide-6
SLIDE 6

Contents

What is Coluna.jl? Decomposition approaches Using Coluna to decompose and solve a model

6 / 35

slide-7
SLIDE 7

Decomposition Approaches

◮ On a subset of constraints (Dantzig-Wolfe): multi-resources min c1 x1 + c2 x2 + . . . + cK xK A x1 + A x2 + . . . + A xK ≥ a B1 x1 ≥ b1 B2 x2 ≥ b2 . . . ≥ . . . BK xK ≥ bK ◮ On a subset of variables (Benders): multi-decision-levels min a x + b1 y1 + b2 y2 + . . . + bK yK A x + B1 y1 ≥ c1 A x + B2 y2 ≥ c2 A x + . . . ≥ . . . A x + BK yK ≥ cK

7 / 35

slide-8
SLIDE 8

The Cutting Stock Problem (CSP): Block-diagonal structure

min

K

  • k=1

yk s.t.

K

  • k=1

xik ≥ di ∀i

  • i

wi xik ≤ W yk ∀k xik ∈ N ∀i, k yk ∈ {0, 1} ∀k

8 / 35

slide-9
SLIDE 9

Dantzig-Wolfe Decomposition

Assume a bounded integer integer problem with structure: [F] ≡ min c x : A x ≥ a x ∈ X = { B x ≥ b x ∈ Nn } Assume that subproblem [SP] ≡ min{c x : x ∈ X} is “relatively easy” to solve compared to problem [F].

9 / 35

slide-10
SLIDE 10

Dantzig-Wolfe Decomposition

Assume a bounded integer integer problem with structure: [F] ≡ min c x : A x ≥ a x ∈ X = { B x ≥ b x ∈ Nn } Assume that subproblem [SP] ≡ min{c x : x ∈ X} is “relatively easy” to solve compared to problem [F]. Then, X = {xq}q∈Q

10 / 35

slide-11
SLIDE 11

Dantzig-Wolfe Decomposition

Assume a bounded integer integer problem with structure: [F] ≡ min c x : A x ≥ a x ∈ X = { B x ≥ b x ∈ Nn } Assume that subproblem [SP] ≡ min{c x : x ∈ X} is “relatively easy” to solve compared to problem [F]. Then, X = {xq}q∈Q conv(X) = {x ∈ I Rn

+ : x =

  • q∈Q

xqλq,

  • q∈Q

λq = 1, λq ≥ 0 q ∈ Q}

11 / 35

slide-12
SLIDE 12

Dantzig-Wolfe Decomposition

Assume a bounded integer integer problem with structure: [F] ≡ min c x : A x ≥ a x ∈ X = { B x ≥ b x ∈ Nn } Assume that subproblem [SP] ≡ min{c x : x ∈ X} is “relatively easy” to solve compared to problem [F]. Then, X = {xq}q∈Q conv(X) = {x ∈ I Rn

+ : x =

  • q∈Q

xqλq,

  • q∈Q

λq = 1, λq ≥ 0 q ∈ Q} [F] ≡ min{

  • q∈Q

cxqλq :

  • q∈Q

Axqλq ≥ a,

  • q∈Q

λq = 1,

  • q

xqλq ∈ Nn}

12 / 35

slide-13
SLIDE 13

The Cutting Stock Problem (CSP): Decomposition

min

K

  • k=1

yk s.t.

K

  • k=1

xik ≥ di ∀i

  • i

wi xik ≤ W yk ∀k xik ∈ N ∀i, k yk ∈ {0, 1} ∀k min

  • q

λq

  • q

xq

i λq

≥ di i = 1, · · · , n λq ∈ N ∀q

13 / 35

slide-14
SLIDE 14

Solving decomposed problems

Oracle Oracle Oracle Oracle Oracle Oracle Oracle Oracle Oracle

◮ Choose node ◮ Solve chosen node

◮ Solve master lp ◮ Check if converged ◮ Generate row/columns ◮ Repeat

◮ Create children nodes

14 / 35

slide-15
SLIDE 15

Coluna log : Solving a node

15 / 35

slide-16
SLIDE 16

Interest

Integer Programming Decomposition ◮ A powerful way to exploit the combinatorial structure. ◮ Benders & Dantzig Wolfe decomposition are generic schemes to derive & handle strong reformulations ◮ Size can be coped with using dynamic generation: a small % of variables and constraints are needed; hence it scales up to real-life applications. ◮ With efficiency enhancement features, these approaches can be highly competitive ◮ Implementation can be generic, with tools such as Coluna.jl

16 / 35

slide-17
SLIDE 17

Contents

What is Coluna.jl? Decomposition approaches Using Coluna to decompose and solve a model

17 / 35

slide-18
SLIDE 18

General idea

◮ Write a model using JuMP ◮ Use variable and constraint indices to define the decomposition ◮ Store extra information in the indices -> axis macro ◮ Create a decomposition tree based on the memberships defined in the extra information -> dantzig_wolfe_decomposition macro

18 / 35

slide-19
SLIDE 19

Generalized Assignment Problem : The simple case

m = 3 C3 m = 2 C2 m = 1 C1

1 3 2 5 7 4 6 $

$

$

min

  • jm

cjm xjm s.t.

M

  • m=1

xjm ≥ 1 ∀j

  • j

wjm xjm ≤ Cm ∀m xjm ∈ {0, 1} ∀j, m min

  • q

cq λq

  • m∈M
  • q∈Qm

xq

j λq

≥ 1 ∀j

  • q∈Qm

λq = 1 ∀m λq ∈ {0, 1} ∀q

19 / 35

slide-20
SLIDE 20

Generalized Assignment Problem : The simple case

(lb=1,ub=1) model sp(dec,1) sp(dec,2) sp(dec,3) master(dec) dec (lb=1,ub=1) (lb=1,ub=1) 20 / 35

slide-21
SLIDE 21

Generalized Assignment Problem : The simple case

(lb=1,ub=1) model sp(dec,1) sp(dec,2) sp(dec,3) master(dec) dec (lb=1,ub=1) (lb=1,ub=1)

21 / 35

slide-22
SLIDE 22

Cutting Stock : Different subproblems

(lb=1,ub=1) model sp(dec,1) sp(dec,100) master(dec) dec (lb=1,ub=1)

b b b

22 / 35

slide-23
SLIDE 23

Cutting Stock : Different subproblems

(lb=1,ub=100) model sp(dec,100) master(dec) dec sp(dec,1)

b b b

23 / 35

slide-24
SLIDE 24

Cutting Stock : Identical subproblems

(lb=1,ub=100) model sp(dec,100) master(dec) dec sp(dec,1)

b b b

24 / 35

slide-25
SLIDE 25

Cutting Stock : Getting the solution

25 / 35

slide-26
SLIDE 26

CVRP : Expression & ad-hoc pricing solver

min

  • e,r

cexr

e

s.t.

  • e∈δ(i),r

xr

e

≥ 2 ∀i xr ∈ X r ∀r min

  • e,r,q∈Qr

cexq

e λq

  • e∈δ(i),r,q∈Qr

xq

e λq

≥ 2 ∀i

  • q∈Qr

λq ≤ Ur ∀r λq ∈ {0, 1} ∀r, q ∈ Qr

26 / 35

slide-27
SLIDE 27

CVRP : Ad-hoc pricing solver

27 / 35

slide-28
SLIDE 28

CVRP : Ad-hoc pricing solver

28 / 35

slide-29
SLIDE 29

CVRP : Ad-hoc pricing solver

29 / 35

slide-30
SLIDE 30

2D Cutting Stock : Nested decomposition

1 2 3 4 5 6 7 8

W H

min

  • s∈S

zs s.t.

  • s∈S,p∈P

xjps ≥ 1 ∀j

  • p

wps ≤ W zs ∀s wps ≥ wj xjps ∀j, p, s

  • j

hj xjps ≤ H yps ∀p, s xjps ∈ {0, 1} ∀j, p, s yps ∈ {0, 1} ∀p, s zs ∈ {0, 1} ∀s

30 / 35

slide-31
SLIDE 31

2D Cutting Stock : Original & master reformulations

min

  • s∈S

zs s.t.

  • s∈S,p∈P

xjps ≥ 1 ∀j

  • p

wps ≤ W zs ∀s wps ≥ wj xjps ∀j, p, s

  • j

hj xjps ≤ H yps ∀p, s xjps ∈ {0, 1} ∀j, p, s yps ∈ {0, 1} ∀p, s zs ∈ {0, 1} ∀s min

  • s

λs

  • s

xs

j λs

≥ 1 ∀j λs ∈ N ∀s

31 / 35

slide-32
SLIDE 32

2D Cutting Stock : Pricing problem and its reformulation

min 1 − (

  • j

πj(

  • p

xjp)) s.t.

  • p

xjp ≤ 1 ∀j

  • p

wp ≤ W ∀ wp ≥ wj xjp ∀j, p

  • j

hj xjp ≤ H ∀p xjp ∈ {0, 1} ∀j, p min

  • p

λp

  • p

xp

j λp

≤ 1 ∀j

  • p

wp λp ≤ W λp ∈ N ∀p

32 / 35

slide-33
SLIDE 33

2D Cutting Stock : Nested decomposition

dec 1 master(dec 1) model dec 2[1] dec 2[2] dec 2[3]

master(dec 2[1]) master(dec 2[2]) master(dec 2[3])

sp(dec1,1) sp(dec1,2) sp(dec1,3)

sp(dec2[1],1) sp(dec2[1],2) sp(dec2[2],2) sp(dec2[2],1) sp(dec2[3],1) sp(dec2[3],2) sp(dec2[3],3)

33 / 35

slide-34
SLIDE 34

2D Cutting Stock : Nested decomposition

34 / 35

slide-35
SLIDE 35

Coluna: An Open-Source Branch-Cut-and-Price Framework

  • T. Bulhões, G. Marques, V. Nesello, A. Pessoa, E. Uchoa, R. Sadykov, I. Tahiri, F.

Vanderbeck

JuMP-dev 2019, Santiago March 2019

https://github.com/atoptima/Coluna.jl

35 / 35