pattern based diving heuristics for a two dimensional
play

Pattern based diving heuristics for a two-dimensional guillotine - PowerPoint PPT Presentation

Pattern based diving heuristics for a two-dimensional guillotine cutting stock problem with leftovers Franois Clautiaux 2 , 1 Ruslan Sadykov 1 , 2 Franois Vanderbeck 2 , 1 Quentin Viaud 1 , 2 1 2 Inria Bordeaux, Universit Bordeaux,


  1. Pattern based diving heuristics for a two-dimensional guillotine cutting stock problem with leftovers François Clautiaux 2 , 1 Ruslan Sadykov 1 , 2 François Vanderbeck 2 , 1 Quentin Viaud 1 , 2 1 2 Inria Bordeaux, Université Bordeaux, France France Matheuristics 2018, Tours, France, June 19 1 / 33

  2. Contents Introduction Column generation and standard diving heuristic “Non-proper” diving heuristic Solving the pricing problem Partial enumeration technique Computational results 2 / 33

  3. Context: production of windows 1.Initial storage 2.Cutting table → → 3.Intermediate storage 4. Assembly of windows → 3 / 33

  4. Specific industrial constraints ◮ 4-stage guillotine-cut process ◮ Restricted cuts (size of the cut part coincides with the width or height of a piece) ◮ Daily production is decomposed into independent batches (fitting to the intermediate storage) ◮ The order of batches is fixed because of the due dates of the customer orders ◮ The leftover of only the last bin of a batch can be reused for the next batch due to the organisational costs B 1 B 1 B 1 B 2 B 2 B 2 B 2 4 / 33

  5. One-batch problem : 2D guillotine cutting stock with leftovers ◮ Unlimited set of identical rectangular bins of size W × H ◮ Additional leftover bin of size ¯ W × H , ¯ W < W . ◮ Set I of items with fixed demand d i (number of pieces to cut) and size w i × h i , i ∈ I ◮ Each item copy can be rotated by 90 ◦ ◮ Each item copy should be cut in at most 4 stages ◮ Each cut is restricted and guillotine (from one side to the opposite side) ◮ The objective function is to minimize the total width of used bins and the width of the used part of the last bin. B B B B 5 / 33

  6. Example of a feasible cutting pattern 7 6 5 2 3 4 1 6 / 33

  7. Example of a feasible cutting pattern 7 6 5 2 3 4 1 6 / 33

  8. Example of a feasible cutting pattern 7 6 5 2 3 4 1 6 / 33

  9. Example of a feasible cutting pattern 7 6 5 2 3 4 1 6 / 33

  10. Example of a feasible cutting pattern 7 6 5 2 3 4 1 6 / 33

  11. Example of a valid solution 7 5 9 6 5 2 2 2 3 5 10 4 3 1 w W — waste — leftover Solution value = W + w 7 / 33

  12. 2D guillotine cutting stock : literature review ◮ Column generation + rounding (3 stages) [Vanderbeck, 2001] ◮ Branch and price (3 stages) [Puchinger and Raidl, 2007] ◮ Column generation + heuristics for the residual problem after the rounding [Cintra et al., 2008] ◮ Arc-flow MIP formulation (3 stages) [Silva et al., 2010] ◮ Column generation + diving (2 stages) [Furini et al., 2012] ◮ Dynamic MIP formulation [Furini et al., 2016] ◮ With leftovers (2 and 3 stages) [Puchinger et al., 2004] [Dusberger and Raidl, 2014] [Dusberger and Raidl, 2015] [Andrade et al., 2016] Remarks ◮ Small instances ( W , H ) = ( 300 , 300 ) ⇒ Exact methods ◮ Large instances ( W , H ) = ( 1000 , 1000 ) ⇒ Heuristics ◮ Our one-batch instances ( W , H ) = ( 6000 , 3000 ) , up to 150 items and ≈ 400 pieces to cut 8 / 33

  13. Contents Introduction Column generation and standard diving heuristic “Non-proper” diving heuristic Solving the pricing problem Partial enumeration technique Computational results 9 / 33

  14. Extended (pattern-based) formulation ◮ 3 bin types : leftover bin ( W ′ × H ), normal bin ( W × H ), last bin ( W × H ) ◮ P t — set of valid cutting patterns for a bin of type t = 1 , 2 , 3 ◮ a p i — number of pieces of item i cut in pattern p ◮ w p — width of pattern p � � � min W ′ λ p + w p λ p W λ p + p ∈P 1 p ∈P 2 p ∈P 3 a p � i λ p = d i , ∀ i ∈ I , p ∈P 1 ∪P 2 ∪P 3 � λ p = 1 , ∀ t ∈ { 1 , 3 } , p ∈P t λ p ∈ Z + , ∀ p ∈ P 2 , λ p ∈ { 0 , 1 } , ∀ p ∈ P t , t ∈ { 1 , 3 } . 10 / 33

  15. Pricing problem ◮ π ∈ R |I| — dual values for the demand constraints ◮ µ = ( µ 1 , µ 3 ) ∈ R 2 — dual values for the bin number constraints ◮ Reduced cost of a pattern p : W ′ − µ 1 ,  p ∈ P 1 ,  a p � c p = − ¯ i π i + W , p ∈ P 2 , w p − µ 3 , p ∈ P 3 .  i ∈I ◮ The pricing problem decomposes into three 2D guillotine integer knapsack problems, one for each bin type ◮ Can be solved by ◮ a branch-and-bound [Puchinger and Raidl, 2007] ◮ a MIP [Furini et al., 2012] ◮ a dynamic program with bounds [Dolatabadi et al., 2012] ◮ a labelling algorithm [Clautiaux et al., 2018] 11 / 33

  16. Standard diving heuristic [Furini et al., 2012] [Sadykov et al., 2018] ◮ use Depth-First Search ◮ at each node of the tree ◮ solve the master LP by column generation ◮ select a pattern p ∈ P with its value ¯ λ p closest to a non-zero integer ⌈ ¯ λ p ⌋ ◮ add ⌈ ¯ λ p ⌋ to the partial solution ◮ update the master LP: ◮ update demands d of the items ◮ remove “non-proper” patterns p ( ∃ i ∈ I : a p i > d i ) ◮ repeat until a complete solution is obtained The heuristic assumes that the pricing generates proper patterns ( a p i ≤ d i , ∀ i ∈ I )! 12 / 33

  17. Diving with LDS [Sadykov et al., 2018] Idea: add some diversification through limited backtracking (Limited Discrepancy Search by [Harvey and Ginsberg, 1995] ) MaxDiscrepancy = 2 , MaxDepth = 3 At each node, we have a tabu list of columns forbidden to be added to the partial solution. 13 / 33

  18. Contents Introduction Column generation and standard diving heuristic “Non-proper” diving heuristic Solving the pricing problem Partial enumeration technique Computational results 14 / 33

  19. “Proper” vs. “non-proper” pricing Proper case (item bounds are imposed in the pricing) + Standard diving heuristic can be applied − Exact pricing is expensive − Heuristic pricing makes diving less efficient Non-proper case (unbounded pricing) + Exact pricing by dynamic programming is relatively efficient + Column generation dual bound is almost as tight [Cintra et al., 2008] − One needs to adapt the diving heuristic 15 / 33

  20. Diving heuristic adaptations for the “non-proper” case ◮ If there are not enough proper columns in the master solution, then choose ones with the smallest reduced cost ◮ among all proper column in the restricted master ◮ and proper columns generated with a heuristic pricing ◮ Never fix patterns of type 3 (for the last bin) ◮ When all remaining pieces fit into one bin, heuristically generate a cutting pattern minimizing its width ◮ Every time a partial solution is augmented, complete it heuristically (hybridization with the evolutionary heuristic) 16 / 33

  21. “Non-proper” diving heuristic for our problem yes A proper pattern of type 1 Start or 2 in the master solution? non Solve the restricted master Solve the proper pricing heuristically and com- plete the master solution Solve the pricing problem Add a proper column of type 1 or 2 to the partial solution Convergence ? and update the master no yes Complete the partial All remaining pieces solution heuristically no fit into one plate yes Fractional columns in Solve the bounded 2D knap- yes the master solution? sack of type 3 heuristically Stop no 17 / 33

  22. Contents Introduction Column generation and standard diving heuristic “Non-proper” diving heuristic Solving the pricing problem Partial enumeration technique Computational results 18 / 33

  23. Unbounded 2D guillotine knapsack: dynamic program ◮ Application of [Beasley, 1985] and [Russo et al., 2014] ◮ W ( w , h ) , H ( w , h ) — set of all possible widths and heights ◮ U ( w , h , s ) ( U ( w , h , s ) ) — max. value of a pattern of size w × h cut at stage s (next cut should cut a piece) � �� U ( w ′ , h , 2 ) + U ( w − w ′ , h , 1 ) U ( w , h , 1 ) = max 0 , max � w ′ ∈W ( w , h ) � �� U ( w , h ′ , 3 ) + U ( w , h − h ′ , 2 ) U ( w , h , 2 ) = max 0 , max � h ′ ∈H ( w , h ) � �� U ( w ′ , h , 4 ) + U ( w − w ′ , h , 3 ) U ( w , h , 3 ) = max 0 , max � w ′ ∈W ( w , h ) U ( w , h , 2 ) = i ∈I : w i = w , h i ≤ h { π i + U ( w , h − h i , 2 ) } max U ( w , h , 3 ) = i ∈I : h i = h , w i ≤ w { π i + U ( w − w i , h , 3 ) } max � �� U ( w , h , 4 ) = max 0 , max � π i + U ( w , h − h i , 4 ) i ∈I : w i = w , h i ≤ h 19 / 33

  24. Dynamic program: example U ( w , h , 1 ) = max { 0 , w ′ ∈W ( w , h ) { U ( w ′ , h , 2 ) + U ( w − w ′ , h , 1 ) }} max ( 6 , 4 , 1 ) Bin ( W , H ) = ( 6 , 4 ) and an item a = ( 4 , 3 ) 20 / 33

  25. Dynamic program: example U ( w , h , 1 ) = max { 0 , w ′ ∈W ( w , h ) { U ( w ′ , h , 2 ) + U ( w − w ′ , h , 1 ) }} max ( 2 , 4 , 1 ) ( 4 , 4 , 2 ) Bin ( W , H ) = ( 6 , 4 ) and an item a = ( 4 , 3 ) 20 / 33

  26. Dynamic program: example U ( w , h , 2 ) = i ∈I : w i = w , h i ≤ h { π i + U ( w , h − h i , 2 ) } max ( 2 , 4 , 1 ) ( 4 , 4 , 2 ) Bin ( W , H ) = ( 6 , 4 ) and an item a = ( 4 , 3 ) 20 / 33

  27. Dynamic program: example U ( w , h , 2 ) = i ∈I : w i = w , h i ≤ h { π i + U ( w , h − h i , 2 ) } max ( 4 , 1 , 2 ) ( 2 , 4 , 1 ) a Bin ( W , H ) = ( 6 , 4 ) and an item a = ( 4 , 3 ) 20 / 33

Recommend


More recommend