1 / 28

Multi-objective Optimization of Two-Dimensional Sheet Cutting Problem using Genetic Algorithms

Multi-objective Optimization of Two-Dimensional Sheet Cutting Problem using Genetic Algorithms. Santosh Tiwari. Sheet Cutting Frameworks. Guillotine Cutting – (cutting from edge to edge, Detached parts treated as separate entities) – Applicable to metallic sheets

mendel
Télécharger la présentation

Multi-objective Optimization of Two-Dimensional Sheet Cutting Problem using Genetic Algorithms

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Multi-objective Optimization of Two-Dimensional Sheet Cutting Problem using Genetic Algorithms Santosh Tiwari

  2. Sheet Cutting Frameworks • Guillotine Cutting – (cutting from edge to edge, Detached parts treated as separate entities) – Applicable to metallic sheets • Non-guillotine Cutting – (cutting from edge to edge not mandatory, Detached parts treated as same entity) – Applicable to piles of paper • Guillotine cutting is of practical importance to industry • Sheet Cutting formulated as an optimization problem for Industry

  3. Optimization Problem • Objective 1: Minimize the length of mother-sheet required (Trim loss) • Objective 2: Minimize the number of cuts required (Tool life) • Non-guillotine Cutting: Both real and binary formulations • Guillotine Cutting: Only binary formulation • Binary formulation greatly outperforms real variable formulation

  4. Real variable formulation Two real variables and one binary variable Variables (x1, y1) and a bit ‘0’ or ‘1’ for every rectangle

  5. Representation of an Individual • Let number of parts be ‘n’ • Length of gene of real variables = ‘2n’ (x1, y1, x2, y2, .., .., .., ..) • Length of gene of binary variables = ‘n’ (‘0’, ‘1’, ., ., ., .)

  6. Objective Functions • Objective 1: • Objective 2: (Non-guillotine cutting)

  7. Objective 2 contd…

  8. Number of cuts (Non-guillotine cutting) 1. Number of cuts = 4*n. 2. For every rectangle ‘i’ do the following 3. For every edge of rectangle ‘i’ that lies on the boundary decrease the number of cuts by one and mark that edge using a flag. 4. For every rectangle ‘j’ from ‘i+1’ to ‘n’ do the following 5. For every unmarked edge of rectangle ‘i’ compare it with all the (suitable) edges of rectangle ‘j’ to find out if they are aligned. 6. If they are aligned then find out if they are touching or not, if they are touching, then decrease the number of cuts by one and mark the corresponding edge of rectangle ‘j’. 7. If the rectangles are not touching then find out the line joining the aligning edges and for every rectangle ‘k’ ≠ ‘i’ and ≠ ‘j’ find out whether the line and rectangle ‘k’ interfere or not. If none of the rectangle ‘k’ interfere then decrease the number of cuts by one and mark the corresponding edge of rectangle ‘j’ 8. Increase the number of cuts by one to account for the final cut that is made at the end of the mother sheet.

  9. Constraints • Constraint 1: Error in location of rectangular parts – should be inside the mother sheet • Constraint 2: Overlap error – no two triangles should overlap one another

  10. Overlap Error 1. For i←0 to i←n do 2. { 3. if (rect[i].x1<0) return ERROR 4. if (rect[i].y1<0) return ERROR 5. if (rect[i].x2>l) return ERROR 6. if (rect[i].y2>b) return ERROR 7. For j←i+1 to j←n do 8. { 9. if (rect[i].x2≤rect[j].x1 or rect[i].x1≥rect[j].x2 or rect[i].y1≥rect[j].y2 or rect[i].y2≤rect[j].y1 ) 10. { do nothing } 11. else 12. return ERROR 13. } 14. } 15. return NO_ERROR

  11. Binary Formulation

  12. Equation representing the Individual “1 2 H 3 4 H V 5 6 V 7 8 V H H” “0, 1, 1, 0, 0, 0, 1, 0” Tree View

  13. Physical Layout

  14. Tree-String Conversion Algorithm to convert the tree to string – we use in-order traversal Traverse-tree (x) 1 if x ≠ NIL 2 then traverse-tree (left[x]) 3 traverse-tree (right[x]) 4 print key[x]

  15. Feasibility and Validity of Gene • No – number of operators • Np – number of parts • No = Np – 1 • In tree, • all intermediate nodes are operators • All leaf nodes are parts • Tree should be complete • Leaf nodes should be unique • In string, • Np – number of parts to its left for any operator • No – number of operators to its left including itself for any operator

  16. Advantages of String Notation • Constant size of string • No parenthesis required • Unique representation • Finite search space • Optimal representation of the set • Powerful crossover and mutation operators can be designed • Both guillotine and non-guillotine sets can be represented

  17. Coordinate allocation and Tree Construction 1. If it is a part number push it into stack1. 2. If it is an operator then pop two elements from stack1 make a new part number and push it into stack1 and stack2. Keep track of the breadth of the newly formed part number, if it is more than the breadth of the master sheet, then change the operator and communicate the change back to the GAs. 3. When all the elements are interpreted then only one entry remains in stack1 and n-1 entries remain in stack2. 4. Pop the first entry from stack2, assign it the coordinates, and then assign the coordinates to its constituents. 5. Pop next entry from stack2 and assign the coordinates to its constituents. 6. Proceed until stack2 is empty.

  18. Number of Cuts – Guillotine Cutting key←2n-1 calculate number of cuts (key) 1. a←rect[key].a 2. b←rect[key].b 3. op←rect[key].op 4. number of cuts←1 5. if (rect[key].breadth<breadth of mother sheet) 6. number of cuts←1+number of cuts 7. calculate dimensions of rect[a] based on its orientation 8. calculate dimensions of rect[b] based on its orientation 9. if (op=’H’) 10. if (vertical dimension(a)≠vertical dimension(b)) 11. number of cuts←2+number of cuts 12. else 13. number of cuts←1+number of cuts 14. if (op=’V’) 15. if (horizontal dimension(a)≠horizontal dimension(b)) 16. number of cuts←2+number of cuts 17. else 18. number of cuts←1+number of cuts 19. if (a>number of rectangles) 20. number of cuts←number of cuts+calculate number of cuts (a) 21. if (b>number of rectangles) 22. number of cuts←number of cuts+calculate number of cuts (b) 23. return number of cuts

  19. Crossover Operation • Done with the string • Three types of crossover routines implemented • PMX Partial mapped crossover • Ordered Crossover • Cyclic Crossover • Uniform one point crossover done to the string keeping record of orientation

  20. Mutation Operation • Done to the tree • Pick up any two intermediate nodes and swap them • Pick any two leaf nodes and swap them • Pick any intermediate node and flip it • Pick any location on the state string and flip it

  21. Simulation Results • Case 1: Breadth of mother sheet = 6 units • 5 rectangles of size 1x1 units • Two pareto-optimal solutions

  22. Simulation Results contd… • Case 2: Breadth of mother sheet = 5 units • 5 rectangles of size 1x1 units • Only one solution obtained

  23. Simulation Results contd… • Case 3: Breadth of mother sheet = 1 units • 5 rectangles of size 1x1 units • Only one solution obtained

  24. Simulation Results contd… • Case 4: Breadth of mother sheet = 10 units • 10 rectangles of dimensions

  25. Simulation Results contd… • Case 5: Breadth of mother sheet = 20 units • 20 rectangles of dimensions

  26. For Guillotine Cutting • Case 6: Breadth of mother sheet = 10 units • 20 rectangles of dimensions

  27. For Guillotine Cutting contd… • Case 7: Breadth of mother sheet = 20 units • 20 rectangles of dimensions

More Related