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

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

179 Views

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

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -

**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 • 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**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**Real variable formulation**Two real variables and one binary variable Variables (x1, y1) and a bit ‘0’ or ‘1’ for every rectangle**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’, ., ., ., .)**Objective Functions**• Objective 1: • Objective 2: (Non-guillotine cutting)**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.**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**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**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**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]**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**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**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.**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**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**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**Simulation Results**• Case 1: Breadth of mother sheet = 6 units • 5 rectangles of size 1x1 units • Two pareto-optimal solutions**Simulation Results contd…**• Case 2: Breadth of mother sheet = 5 units • 5 rectangles of size 1x1 units • Only one solution obtained**Simulation Results contd…**• Case 3: Breadth of mother sheet = 1 units • 5 rectangles of size 1x1 units • Only one solution obtained**Simulation Results contd…**• Case 4: Breadth of mother sheet = 10 units • 10 rectangles of dimensions**Simulation Results contd…**• Case 5: Breadth of mother sheet = 20 units • 20 rectangles of dimensions**For Guillotine Cutting**• Case 6: Breadth of mother sheet = 10 units • 20 rectangles of dimensions**For Guillotine Cutting contd…**• Case 7: Breadth of mother sheet = 20 units • 20 rectangles of dimensions