coluna an open source branch cut and price framework
play

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


  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

  2. Contents What is Coluna.jl? Decomposition approaches Using Coluna to decompose and solve a model 2 / 35

  3. Contents What is Coluna.jl? Decomposition approaches Using Coluna to decompose and solve a model 3 / 35

  4. What is Coluna.jl? 4 / 35

  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

  6. Contents What is Coluna.jl? Decomposition approaches Using Coluna to decompose and solve a model 6 / 35

  7. Decomposition Approaches ◮ On a subset of constraints ( Dantzig-Wolfe ): multi-resources c 1 x 1 c 2 x 2 c K x K min + + . . . + A x 1 A x 2 A x K + + + ≥ a . . . B 1 x 1 ≥ b 1 B 2 x 2 ≥ b 2 ≥ . . . . . . B K x K ≥ b K ◮ On a subset of variables ( Benders ): multi-decision-levels b 1 y 1 b 2 y 2 b K y K min + + + + a x . . . B 1 y 1 ≥ c 1 A x + B 2 y 2 ≥ c 2 A x + + ≥ . . . A x . . . B K y K ≥ c K A x + 7 / 35

  8. The Cutting Stock Problem (CSP): Block-diagonal structure K � min y k k = 1 K � s.t. ≥ ∀ i x ik d i k = 1 � ≤ ∀ k w i x ik W y k i x ik ∈ N ∀ i , k y k ∈ { 0 , 1 } ∀ k 8 / 35

  9. Dantzig-Wolfe Decomposition Assume a bounded integer integer problem with structure: [F] ≡ min c x : A x ≥ a x ∈ X = { ≥ B x b N n x ∈ } Assume that subproblem [SP] ≡ min { c x : x ∈ X } is “relatively easy” to solve compared to problem [F]. 9 / 35

  10. Dantzig-Wolfe Decomposition Assume a bounded integer integer problem with structure: [F] ≡ min c x : A x ≥ a x ∈ X = { B x ≥ b N n x ∈ } Assume that subproblem [SP] ≡ min { c x : x ∈ X } is “relatively easy” to solve compared to problem [F]. Then, { x q } q ∈ Q X = 10 / 35

  11. Dantzig-Wolfe Decomposition Assume a bounded integer integer problem with structure: [F] ≡ min c x : A x ≥ a x ∈ X = { B x ≥ b N n x ∈ } Assume that subproblem [SP] ≡ min { c x : x ∈ X } is “relatively easy” to solve compared to problem [F]. Then, { x q } q ∈ Q X = R n � x q λ q , � λ q = 1 , λ q ≥ 0 q ∈ Q } conv ( X ) = { x ∈ I + : x = q ∈ Q q ∈ Q 11 / 35

  12. Dantzig-Wolfe Decomposition Assume a bounded integer integer problem with structure: [F] ≡ min c x : A x ≥ a x ∈ X = { B x ≥ b N n x ∈ } Assume that subproblem [SP] ≡ min { c x : x ∈ X } is “relatively easy” to solve compared to problem [F]. Then, { x q } q ∈ Q X = R n � x q λ q , � conv ( X ) = { x ∈ I + : x = λ q = 1 , λ q ≥ 0 q ∈ Q } q ∈ Q q ∈ Q � cx q λ q : � Ax q λ q ≥ a , � � x q λ q ∈ N n } [F] ≡ min { λ q = 1 , q q ∈ Q q ∈ Q q ∈ Q 12 / 35

  13. The Cutting Stock Problem (CSP): Decomposition K � min y k k = 1 K � s.t. x ik ≥ d i ∀ i k = 1 � ≤ ∀ k w i x ik W y k i x ik ∈ N ∀ i , k { 0 , 1 } y k ∈ ∀ k � min λ q q x q � i λ q ≥ d i i = 1 , · · · , n q λ q ∈ N ∀ q 13 / 35

  14. Solving decomposed problems ◮ Choose node Oracle Oracle Oracle ◮ Solve chosen node ◮ Solve master lp ◮ Check if converged Oracle Oracle Oracle ◮ Generate row/columns ◮ Repeat ◮ Create children nodes Oracle Oracle Oracle 14 / 35

  15. Coluna log : Solving a node 15 / 35

  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

  17. Contents What is Coluna.jl? Decomposition approaches Using Coluna to decompose and solve a model 17 / 35

  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

  19. Generalized Assignment Problem : The simple case � min c jm x jm jm M � s.t. x jm ≥ 1 ∀ j m = 1 � w jm x jm ≤ C m ∀ m 4 6 m = 3 j C 3 x jm ∈ { 0 , 1 } ∀ j , m 5 7 m = 2 C 2 � min c q λ q 1 3 2 m = 1 q C 1 � � x q j λ q ≥ 1 ∀ j q ∈ Q m m ∈ M $ $ $ � = 1 ∀ m λ q q ∈ Q m ∈ { 0 , 1 } ∀ q λ q 19 / 35

  20. Generalized Assignment Problem : The simple case dec master(dec) model (lb=1,ub=1) (lb=1,ub=1) (lb=1,ub=1) sp(dec,1) sp(dec,3) sp(dec,2) 20 / 35

  21. Generalized Assignment Problem : The simple case dec master(dec) model (lb=1,ub=1) (lb=1,ub=1) (lb=1,ub=1) sp(dec,1) sp(dec,2) sp(dec,3) 21 / 35

  22. b b b Cutting Stock : Different subproblems dec master(dec) model (lb=1,ub=1) (lb=1,ub=1) sp(dec,1) sp(dec,100) 22 / 35

  23. b b b Cutting Stock : Different subproblems dec master(dec) model (lb=1,ub=100) sp(dec,1) sp(dec,100) 23 / 35

  24. b b b Cutting Stock : Identical subproblems dec master(dec) model (lb=1,ub=100) sp(dec,1) sp(dec,100) 24 / 35

  25. Cutting Stock : Getting the solution 25 / 35

  26. CVRP : Expression & ad-hoc pricing solver � c e x r min e e , r � x r s.t. ≥ 2 ∀ i e e ∈ δ ( i ) , r x r X r ∈ ∀ r � c e x q min e λ q e , r , q ∈ Q r x q � 2 e λ q ≥ ∀ i e ∈ δ ( i ) , r , q ∈ Q r � U r ≤ ∀ r λ q q ∈ Q r ∀ r , q ∈ Q r λ q ∈ { 0 , 1 } 26 / 35

  27. CVRP : Ad-hoc pricing solver 27 / 35

  28. CVRP : Ad-hoc pricing solver 28 / 35

  29. CVRP : Ad-hoc pricing solver 29 / 35

  30. 2D Cutting Stock : Nested decomposition � min z s s ∈ S � s.t. x jps ≥ 1 ∀ j s ∈ S , p ∈ P 6 � 3 w ps ≤ W z s ∀ s 5 H p 2 7 w ps ≥ w j x jps ∀ j , p , s 4 1 8 � h j x jps ≤ H y ps ∀ p , s j W x jps ∈ { 0 , 1 } ∀ j , p , s { 0 , 1 } y ps ∈ ∀ p , s { 0 , 1 } z s ∈ ∀ s 30 / 35

  31. 2D Cutting Stock : Original & master reformulations � min z s s ∈ S � s.t. x jps ≥ 1 ∀ j � min s ∈ S , p ∈ P λ s � s w ps ≤ W z s ∀ s � x s ≥ 1 ∀ j j λ s p w ps ≥ w j x jps ∀ j , p , s s λ s ∈ ∀ s N � h j x jps ≤ H y ps ∀ p , s j x jps ∈ { 0 , 1 } ∀ j , p , s { 0 , 1 } y ps ∈ ∀ p , s { 0 , 1 } z s ∈ ∀ s 31 / 35

  32. 2D Cutting Stock : Pricing problem and its reformulation � � min 1 − ( π j ( x jp )) j p � min λ p p � s.t. 1 x jp ≤ ∀ j � x p j λ p ≤ 1 ∀ j p p � w p ≤ W ∀ � w p λ p ≤ W p p w p ≥ w j x jp ∀ j , p λ p ∈ N ∀ p � h j x jp ≤ H ∀ p j x jp ∈ { 0 , 1 } ∀ j , p 32 / 35

  33. 2D Cutting Stock : Nested decomposition master(dec 1) dec 1 model master(dec 2[2]) master(dec 2[3]) master(dec 2[1]) sp(dec1,2) sp(dec1,3) sp(dec1,1) sp(dec2[3],1) sp(dec2[1],1) sp(dec2[1],2) sp(dec2[2],1) sp(dec2[2],2) sp(dec2[3],3) sp(dec2[3],2) dec 2[1] dec 2[2] dec 2[3] 33 / 35

  34. 2D Cutting Stock : Nested decomposition 34 / 35

  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

Recommend


More recommend