Computers & Operations Research 35 (2008) 212 – 225 www.elsevier.com/locate/cor
Heuristic and exact algorithms for generating homogenous constrained three-staged cutting patterns Yaodong Cui∗ Department of Computer Science, Guangxi Normal University, Guilin 541004, China Available online 3 April 2006
Abstract An approach is proposed for generating homogenous three-staged cutting patterns for the constrained two-dimensional guillotinecutting problems of rectangles. It is based on branch-and-bound procedure combined with dynamic programming techniques. The stock plate is divided into segments. Each segment consists of strips with the same direction. Only homogenous strips are allowed, each of which contains rectangles of the same size. The approach uses a tree-search procedure. It starts from an initial lower bound, implicitly generates all possible segments through the builds of strips, and constructs all possible patterns through the builds of segments. Tighter bounds are established to discard non-promising segments and patterns. Both heuristic and exact algorithms are proposed. The computational results indicate that the algorithms are capable of dealing with problems of larger scale. Finally, the solution to a cutting problem taken from a factory that makes passenger cars is given. 䉷 2006 Elsevier Ltd. All rights reserved. Keywords: Cutting; Packing; Cutting stock; Constrained two-dimensional cutting
1. Introduction The constrained two-dimensional cutting (CTDC) problem discussed is as follows: m types of rectangles are to be cut from a rectangular plate with size L × W , where any cuts that are made are restricted to be guillotine cuts. The ith type has size li × wi , value ci and demand di , i = 1, . . . , m. Assume that pattern A includes zi pieces of type i. Assume that N is the set of natural numbers. The mathematical model for the CTDC problem is m max ci zi , A is a feasible pattern, zi ∈ N and 0 zi di , i = 1, . . . , m. i=1
The related unconstrained two-dimensional cutting problem (UTDC) is m max ci zi , A is a feasible pattern, zi ∈ N, i = 1, . . . , m. i=1
∗ Tel.: +86 773 5851286.
E-mail address:
[email protected]. 0305-0548/$ - see front matter 䉷 2006 Elsevier Ltd. All rights reserved. doi:10.1016/j.cor.2006.02.029
Y. Cui / Computers & Operations Research 35 (2008) 212 – 225
213
Fig. 1. Three-staged X-pattern. (a) First stage. (b) Second stage. (c) Third stage.
Fig. 2. Three-staged Y -pattern.
Both problems are denoted as the two-dimensional, rectangular SLOPP type, where SLOPP means single large object placement problem [1]. They appear in several industrial areas, such as the cutting of metal plate, wood plate, or plate glass into smaller rectangles. Good algorithms for these problems are important for the improvement of material usage. This paper proposes the homogenous three-staged patterns shown in Figs. 1 and 2, where the numbers indicate the piece types. A three-staged pattern can be divided into pieces in three stages. For the pattern in Fig. 1, vertical cuts divide the plate into four segments at the first stage (Fig. 1a), horizontal cuts divide the segments into strips at the second stage (Fig. 1b), and vertical cuts divide the strips into pieces at the third stage (Fig. 1c). A pattern is referred to as a homogenous one if only pieces of the same type can appear in a strip; otherwise it is a general one. The pattern in Fig. 1a is an X-pattern, where the segments are arranged horizontally from left to right. Whereas the pattern in Fig. 2 is a Y -pattern, where the segments are arranged vertically from bottom to top. Sometimes the shearing and punching process is used to divide the plate into pieces [2,3]. It includes two stages. At the first stage, a guillotine shear cuts the plate into strips. At the second stage, a stamping press punches out the pieces from the strips. Typically, a strip is fed into a stamping press that cuts a piece from the strip with each stroke, moves the strip forward, and cuts the next piece. The feeding distance between two adjacent pieces is referred to as a step. Fig. 3 shows two strips that may be processed at the second stage. The approach of this paper can directly deal with the cutting of a plate into strips with equal steps (Fig. 3a). In generating cutting patterns, the strip in Fig. 3b can be
214
Y. Cui / Computers & Operations Research 35 (2008) 212 – 225
Fig. 3. Strips for punching. (a) A strip with equal steps. (b) A strip with unequal steps.
Fig. 4. Uniform and general strips. (a) A uniform strip. (b) A general strip.
Fig. 5. Patterns for different minimum strip lengths. (a) A pattern of three segments. (b) A pattern of two segments.
treated as a strip consisting of rectangles. The first rectangle has a length longer than that of the others. The approach of this paper can be easily adapted for the case where the strips with unequal steps (Fig. 3b) are required. The approach for the basic constrained staged cutting problem [4] cannot efficiently deal with the problem discussed in this paper, because it is not specialized. The homogenous three-staged patterns are applicable even if a guillotine shear is used to cut the strips into pieces at the second stage. To cut a homogenous strip into pieces, the feeding distance for each cut can be gauged at the start and will not change during the cutting process of the strip. Fig. 4 shows a uniform strip and a general strip. A uniform strip contains pieces of the same width. Changing the feeding distance becomes necessary during the cutting of a uniform strip. This makes the cutting process more complex than that of a homogenous strip. A general strip consists of pieces of different sizes. Changing the feeding distance is also necessary during the cutting process. Furthermore, the pieces must be trimmed horizontally to produce the exact widths. Trimming is not necessary for homogenous or uniform strips. For these three types of strips, the cutting process of the general strip is the most complex one, and that of the homogenous strip is the simplest one. To simplify the cutting process of homogenous three-staged patterns, a constraint on the minimum strip length can be used. For the pattern in Fig. 1a, the plate length is 1800. Fig. 5a shows the pattern obtained when the minimum strip length allowed is 350, and Fig. 5b shows that when the minimum strip length allowed is 500. Although using constraint on the minimum strip length can simplify the cutting process, it may increase the amount of waste. Balance should be made between the simplicity of the cutting process and the level of waste.
Y. Cui / Computers & Operations Research 35 (2008) 212 – 225
215
Many authors have investigated the CTDC problem. There exist two exact approaches: the top-down approach [4,5] and the bottom-up one [6–11]. The top-down approach was first presented in [4]. It uses a tree-search procedure. All possible cuts that can be made on the stock plate are enumerated by means of a tree in which branching corresponds to guillotine cuts and nodes represent sub-rectangles obtained through the guillotine cut. The approach was improved in [5], in which the search space is limited by using a bound derived from a state space relaxation of a dynamic programming formulation of the problem. The bottom-up approach is based on the observation that any pattern satisfying the guillotine constraint can be obtained through horizontal and vertical builds of rectangles. All possible combinations of smaller rectangles are generated to obtain larger rectangles until no more guillotine patterns can be obtained. Both approaches can use upper and lower bounds to discard some non-promising branches. The patterns generated are usually difficult to cut. The approach proposed in this paper is a bottom-up one. It can generate relatively simple cutting patterns. Hifi and Roucairol [12] presented an approach for generating two-staged constrained cutting patterns. Morabito and Arenales [13] proposed an AND/OR-graph approach for staged and constrained two-dimensional guillotine cutting problems. The former is a bottom-up approach and the later a top-down approach. Lodi and Monaci [14] presented integer and linear programming models for two-staged constrained cutting patterns, and their algorithms are comparable to Hifi and Roucairol’s exact algorithm in computation time. These approaches can simplify the cutting process in some degree for that strips are used. It cannot efficiently deal with the case where the strip in Fig. 3a is required. Furthermore, for problems of relatively larger scale, the computation time of these algorithms is too long to afford because of the tremendous solution space. Vanderbeck [15] discussed a three-staged two-dimensional cutting-stock problem where various constraints coming from practice are considered. He also used homogenous three-staged cutting patterns and generated them heuristically. Only a small portion of the solution space is considered because of the practical considerations. This paper presents heuristic and exact algorithms for homogenous three-staged patterns. The computational results indicate that the algorithms are efficient in computation time. The algorithms are described only for X-patterns, which can be easily adapted for Y -patterns. 2. Some basic concepts Assume that the sizes of the pieces and the stock plate are integers. To facilitate presentation, the algorithms will be described only for the case where the pieces have fixed direction. Definition 1. Strips, segments, patterns, and partial patterns: Only horizontal strips are used in X-patterns. A strip contains one or more pieces of the same type, a segment consists of one or more strips, and a pattern includes one or more segments. The value of a strip is the sum of the values of the pieces included, the value of a segment is the sum of the values of the strips included, and the value of a pattern is the sum of the segments included. The pattern in Fig. 5a includes three segments, the third segment (counted from left to right) consists of six strips, and the bottom strip in this segment contains five pieces of type 6. Sometimes it is necessary to differentiate between full patterns and partial patterns. A partial pattern is realized on a partial plate x × W , where x L. A full pattern is realized on the original stock plate L × W . Definition 2. Normal lengths: A normal length is the multiple of a piece length. Assume that Lp is the minimum strip length allowed, which is used to simplify the cutting pattern. Normal lengths related to the ith piece type are xik = kl i ,
k positive integer, kl i Lp ,
k min[di , int(L/ li )], i = 1, . . . , m.
Assume that P is the set of normal lengths. To facilitate the design of the algorithms, add 0 and L to the above set, and arrange the elements in ascending order, namely P={p1 , . . . , pM }, p1 =0, pM =L, and pi < pi+1 for i =1, . . . , M −1. Normal lengths have the following property [8,16]: the optimal value of segment x × y is the same as that of segment p(x) × y, where p(x) is the maximum normal length not larger than x. Definition 3. Normal segments and normal patterns: The strips in a normal segment are arranged from bottom to top in non-increasing order of their lengths. The segments in a normal pattern are arranged from left to right in non-increasing order of their lengths. In searching for the optimal pattern, it is sufficient to consider only normal patterns and normal
216
Y. Cui / Computers & Operations Research 35 (2008) 212 – 225
Fig. 6. A normal pattern.
segments. The reason is that any non-normal pattern can be transformed to a normal one through position interchanging of the segments, without changing the value of the pattern, and any non-normal segment can be transformed to a normal one through position interchanging of the strips, without changing the value of the segment. The pattern in Fig. 5a can be transformed to the normal pattern shown in Fig. 6.
3. The approach The approach for generating the optimal homogenous three-staged patterns consists of the following stages: (1) Generate all possible strips; (2) Obtain all possible segments through vertical build of strips; (3) Generate all possible three-staged patterns through horizontal build of segments, and select the best one as the optimal solution. These three stages will be described, respectively, in Sections 3.1–3.3. Section 3.4 presents the exact algorithm, and Section 3.5 describes the heuristic algorithms. 3.1. Generating strips Definition 4. Possible strips for building up segments: In order to obtain all possible segments through vertical build of strips, all possible strips must be considered. For the ith piece type, the width of the strip is wi , the number of different strips is gi = min[di , int(L/ li )]. The kth strip contains k pieces, and its value is kci , 1 k gi . When Lp > 0, the range of k should be modified to Lp / li k gi . 3.2. Generating segments through vertical build of strips Definition 5. Vertical build of strips: Two strips A = lA × wA and B = lB × wB can form a segment C = lC × wC through vertical build, where lC = max(lA , lB ), wC = wA + wB , lC L and wC W . Moreover, the numbers of pieces in C must not exceed the demands. The segment in Fig. 7a is obtained from the vertical build of two strips in Fig. 7b. Vertical build can also be performed between a segment and a strip. It should not be performed between two segments; otherwise duplicate segments will be produced. For example, a segment with four strips can be obtained through the
Y. Cui / Computers & Operations Research 35 (2008) 212 – 225
217
Fig. 7. Vertical build of strips. (a) A segment. (b) Two strips.
Fig. 8. A partial pattern obtained from the horizontal build of two segments. (a) A partial pattern. (b) Two segments.
vertical build of two segments, each of which contains two strips. It can also be generated through the vertical build of a strip and a segment with three strips. Furthermore, from Definition 3 it is sufficient only to generate normal segments. 3.3. Generating three-staged patterns through horizontal build of segments 3.3.1. Builds of segments Definition 6. Horizontal build of segments: Segments A = lA × wA and B = lB × wB can form a partial pattern C = lC × W through horizontal build, where lC = lA + lB , wC = max(wA , wB ) W , lC L. Moreover, the numbers of pieces in C must not exceed the demands. The pattern in Fig. 8a is obtained from the horizontal build of the two segments in Fig. 8b. Horizontal build can also be performed between a segment and a partial pattern. Similar to the vertical build of strips, horizontal build of segments should not be performed between two partial patterns, and it is sufficient only to generate normal partial patterns. 3.3.2. The upper bound of the patterns related to a segment All possible segments can be generated through the vertical build of strips according to Definition 5. Some of them may not appear in the optimal solution. To cut down the number of segments explicitly considered, it is helpful to use tighter upper bound. Assume that val(R), the value of segment R = lR × wR , is already known. Let ubound(R) be the upper bound of a full pattern that contains R. The strips that will be combined with R later through vertical build have lengths not longer than lR , because only normal segments will be considered. Divide the plate into the three regions shown in Fig. 9, where a = W − wR , b = L − lR , and the arrows indicate the strip directions of the related regions. When the full pattern is generated, region A contains only horizontal strips, and region B contains a partial pattern. Let UA be the
218
Y. Cui / Computers & Operations Research 35 (2008) 212 – 225
Fig. 9. Upper bound for a pattern containing segment R.
upper bound of the total value of the pieces included in segment lR × a, and UB be that in region b × W . Then ubound(R) = val(R) + UA + UB .
(1)
UA and UB must be determined before ubound(R) can be estimated. First consider how to estimate UA . A constrained solution will be used. In a constrained solution, the numbers of pieces must not exceed the demands. Assume that E(x, y) is the value of the optimal constrained solution for segment x × y, where x is a normal length. To determine E(x, y), it is necessary to consider some of the strips obtained from Definition 4. Index all possible strips of lengths not longer than x from 1 to n. Let S = {s1 , . . . , sn } be the set of the widths and T = {t1 , . . . , tn } be the set of the values of these strips. Let zi be the number of the ith strip included in the segment, and e(k, x, y) be the number of the kth piece type in this segment. The number of the kth piece type in the ith strip is ik , k = 1, . . . , m. Recall that each strip contains only one piece type. For a specific i, there exists only one integer j so that ik > 0 for k = j , and ik = 0 for k = j . Assume that N is the set of natural numbers. The following knapsack model determines the constrained solution of the segment: n ti zi E(x, y) = max i=1
s.t.
n
si zi y,
e(k, x, y) =
i=1
zi ∈ N,
n
zi ik dk ,
k = 1, . . . , m,
(2)
i=1 m
ik = 1,
i = 1, . . . , n,
k=1
x ∈ P,
0 y W .
The algorithms for solving Model (2) can be easily found in the literature [17]. After solving the model, it is reasonable to let UA = E(lR , a). Now consider how to estimate UB . The pattern in region b × W may be a three-staged pattern. Assume that F (x) is the value of the optimal three-staged pattern on partial plate x × W . To determine F (x), it is necessary to consider all possible segments of lengths between 0 and x. Assume that zi is the number of the ith segment included in the partial plate. The following model determines the partial-constrained solution for partial plate x × W : x E(i, W )zi , F (x) = max i=1
s.t.
x i=1
izi x,
zi ∈ N,
i = 1, . . . , n.
(3)
Y. Cui / Computers & Operations Research 35 (2008) 212 – 225
219
Fig. 10. Upper bound for a full pattern containing partial pattern R.
/ P. Model (3) is an unbounded knapsack From the property of the normal lengths, zi can be set to equal zero if i ∈ problem, algorithms for it can also be found in the literature. The solution obtained from Model (3) is referred to as partial-constrained, for that the numbers of pieces in each segment are constrained, and that the numbers of pieces in the pattern are unconstrained. After solving the model, it is reasonable to let UB = F (b). Eq. (1) can be rewritten as ubound(R) = val(R) + E(lR , W − wR ) + F (L − lR ).
(4)
3.3.3. The lower bound of the patterns related to a segment For the optimal pattern on partial plate x × W , let G(x) be the value of the approximate solution, zi be the number of segment pi × W included in the partial plate, ik be the number of piece type k yielded by segment pi × W , and g(k, x) be the number of piece type k included in the approximate solution. Then M G(x) = max E(pi , W )zi , 0 x L i=1
s.t.
M
pi zi x,
g(k, x) =
i=1
M
zi ik dk ,
k = 1, . . . , m.
(5)
i=1
Let lbound(R) be the lower bound of the full patterns containing segment R = lR × wR . Consider the three regions in Fig. 9. Let n(k, R) be the number of the kth piece type included in R. Determine e(k, lR , W − wR ), the number of piece type k in region A, from Model (2). Determine g(k, L − lR ), the number of piece type k in region B, from Model (5). Let lbound(R) = val(R) + E(lR , W − wR ) + G(L − lR ) if the following equations hold: n(k, R) + e(k, lR , W − wR ) + g(k, L − lR ) dk ,
k = 1, . . . , m.
Otherwise let lbound(R) = val(R). 3.3.4. The upper and lower bounds of the full patterns related to a partial pattern All possible patterns can be generated through the horizontal build of segments according to Definition 6. Some of them may not appear in the optimal solution. In order to reduce the number of patterns explicitly considered, it is helpful to use tighter upper and lower bounds. Assume that val(R), the value of partial pattern R = lR × W is already known. Let ubound(R) be the upper bound of a full pattern that contains R. As shown in Fig. 10, divide plate L × W into two regions R and A = (L − lR ) × W . Region A contains a partial pattern. The upper bound of its value is F (L − lR ). Therefore, ubound(R) = val(R) + F (L − lR ).
(6)
Let lbound(R) be the lower bound of a full pattern containing partial pattern R=lR ×W . If n(k, R)+g(k, L−lR ) dk holds for k = 1, . . . , m, let lbound(R) = val(R) + G(L − lR ); otherwise let lbound(R) = val(R). 3.3.5. The initial lower bound During the searching process, when the upper bound for a pattern containing segment or partial pattern R is less than or equal to the value of the best pattern obtained so far, R can be discarded. Initially the value of the best pattern is
220
Y. Cui / Computers & Operations Research 35 (2008) 212 – 225
set to the value of a feasible pattern, which is referred to as the initial lower bound. Starting from a good initial lower bound can shorten the searching space greatly. In the algorithms of this paper, the initial lower bound is set equal to G(L), which is determined from Model (5). 3.3.6. Inferior blocks Assume that block A = lA × wA and block B = lB × wB are two blocks of the same type (either segments or partial patterns). Assume that DA (i) is the number of piece type i in segment A, and DB (i) is that in segment B. Refer A as an inferior segment if lA lB , wA wB , and DA (i) DB (i) holds for any i between 1 and m. It is obvious that inferior blocks can be discarded in searching for the optimal solution. In the searching process, inferior blocks should be discarded immediately after detecting them. 3.4. The exact algorithm Assume that pmax = maxi {ci /(li wi )} is the maximum value of the unit area of the pieces. Use blocks to denote strips, segments, and partial patterns. A partial pattern here contains at least two segments. Let V ∗ be the value of the best three-staged pattern obtained so far, ubound(R) be the upper bound, and lbound(R) the lower bound of the pattern containing block R. Let Open, Closed, ClosedA and ClosedB be four sets to keep blocks. ClosedA contains segments. ClosedB contains partial patterns. The exact algorithm (the EA for short) consists of the following steps: Step 1. Obtain P = {p1 , . . . , pM }, the set of normal lengths, from Definition 2. Step 2. Solve Model (2) to obtain E(x, y), value of the constrained solution for segment x × y, x ∈ P and 0 y W . Solve Model (3) to obtain F (x), value of the partial-constrained solution for partial plate x × W , 0 x L. Get G(x) from Model (5), which is the lower bound for the pattern on partial plate x × W , 0 x L. Step 3. Let V ∗ = F (L). Generate all possible strips from Definition 4, and add them to Open. Let the upper bound of each initial strip in Open be pmax LW . Step 4. Go to Step 9 if Open is empty. Otherwise take one block RA from Open having the highest upper bound ubound(RA ). Go to Step 9 if ubound(RA ) V ∗ . Step 5. If RA is a segment, put all blocks in ClosedA and ClosedB together to form a big set Closed, transfer RA from Open to ClosedA, and go to Step 6. Otherwise transfer RA from Open to ClosedB, let Closed = ClosedA and go to Step 7. Step 6. Vertical build of strips: Consider the blocks in ClosedA one by one, until ubound(RA ) V ∗ or all blocks have been considered. When finished, go to Step 7. For each block RB taken from ClosedA, skip it if ubound(RB ) V ∗ . Otherwise perform vertical build between RA and RB according to Definition 5. Determine the upper bound of the resulting block RC according to Eq. (4). Discard RC if ubound(RC ) V ∗ or it is an inferior block. Otherwise determine lbound(RC ) according to Section 3.3.3, and let V ∗ = max[V ∗ , lbound(RC )]. Step 7. Horizontal build of segments: Consider the blocks in Closed one by one, until ubound(RA ) V ∗ or all blocks have been considered. Go to Step 8 when finished. For each block RB taken from Closed, skip it if ubound(RB ) V ∗ . Otherwise from Definition 6, obtain partial pattern RC through the horizontal build of RA and RB . Determine ubound(RC ) according to Section 3.3.4. Discard RC if ubound(RC ) V ∗ or it is an inferior block; otherwise, determine lbound(RC ) according to Section 3.3.4, and let V ∗ = max[V ∗ , lbound(RC )]. Step 8. Go to Step 4. Step 9. Output V ∗ and stop. The exact algorithm is basically a branch-and-bound procedure, in which dynamic programming techniques are used to solve the knapsack problems for the lower and upper bounds. The search for the optimal solution starts from an initial feasible lower bound (Step 3). Steps 4–8 are performed repeatedly. Each time a block is selected from Open. If it is a partial pattern, perform horizontal build with each segment in ClosedA to form new partial patterns (steps 5 and 7). If it is a segment, perform vertical build with each segment in ClosedA to form new segments, and perform horizontal build with the blocks in ClosedA and ClosedB to form new partial patterns (steps 5–7). The blocks generated in steps 6 and 7 should be add to Open for further consideration, if they are not inferior blocks and have upper bounds larger than the value of the best pattern obtained so far. The searching process ends when Open is empty or the maximum value of the upper bounds of the blocks in Open is not larger than the value of the best pattern obtained so far (Step 4).
Y. Cui / Computers & Operations Research 35 (2008) 212 – 225
221
The construction process is similar to that presented in [12] except that: (1) The former considers the builds of both strips and segments, the later considers only the build of strips; and (2) The former estimates the bounds from the property of the homogenous three-staged patterns, the later does this from the property of two-staged patterns. 3.5. The heuristic algorithms Two heuristic algorithms (HA1 and HA2 for short) are straightforward. One (HA1) is to solve Model (5) to obtain the approximate solution, which is used as the initial lower bound in the EA. The other (HA2) is the same as the EA, except that the upper bounds of the blocks generated are underestimated. Let uBound(R) be the upper bound used in HA2, it is set equal to r × ubound(R), where 0 < r 1. HA2 is an exact algorithm if r = 1; otherwise it is a heuristic one. It should be noted that the idea of underestimating the upper bound is also used by other authors [7,13].
4. The computational results This section presents the computational results of the test problems, and give the solution to a real cutting problem taken from a factory that makes passenger cars. The computer used has clock rate 2.8 GHz and main memory 512 MB. Both X and Y patterns are generated for each problem, the better one of which is taken as the solution. 4.1. Test on benchmark problems There are no algorithms for homogenous three-staged patterns in the literature. The purpose of the test on benchmark problems here is to demonstrate that the exact algorithm can solve the benchmark problems in a few seconds. Two-staged patterns of general strips (referred to as general two-staged patterns) are the special case of the homogenous three-staged patterns. If it is constrained that each strip contains only one piece, the EA will actually generate general two-staged patterns. Hifi and Roucairol [12] presented an exact algorithm (the HRA for short) for generating general two-staged patterns for CTDC problems. In Ref. [12, Table 5], they gave the computational results of some test problems. The EA solved these problems in 15.953 s. Table 1 lists the computational results. Where VHRA is the value of the general two-staged pattern obtained from HRA, VEA is the value and tEA is the time for homogenous three-staged patterns generated by the EA. VEA > VHRA for 23 problems, and VEA = VHRA for the others. It should be noted that the quality and runtimes of the solutions are not strictly comparable to other results of the literature, since they relate to a particular problem class. 4.2. Test on random problems of larger scale Two groups of problems are used. Once the paper is published, these problems will be made available on the Internet at http://www.gxnu.edu.cn/Personal/ydcui/index.htm. The first group includes 20 weighted problems. The variables are uniformly distributed in the following ranges: plate length L and width W both in [1000, 5000], number of piece types m in [50, 100], piece length li in [0.05L, 0.3L], piece width wi in [0.05W, 0.3W ], piece demand di in [3, 10], and piece value ci in [0.15li wi , 0.65li wi ]. The computational results are summarized in Table 2, where ID is the problem index; VEA , VHA1 and VHA2 are the pattern values obtained from algorithms EA, HA1 and HA2, respectively; tEA , tHA1 and tHA2 are the average computation times; 1 = VHA1 /VEA and 2 = VHA2 /VEA . The mark “” means that the value is equal to VEA . For Algorithm EA, the maximum computation time allowed for a problem was set equal to 3600 s, and the initial lower bound was obtained from considering both X and Y patterns. The problem is referred to as non-optimized if its computation time exceeds 3600 s. There are five non-optimized problems (problems 5, 7, 10, 12 and 14). If the nonoptimized problems are counted and their average computation time is taken as 3600 s, then the average computation time is 1075.138 s.
222
Y. Cui / Computers & Operations Research 35 (2008) 212 – 225
Table 1 The computational results for benchmark problems Problem
VHRA
VEA
tEA
Problem
VHRA
VEA
tEA
HH 2 3 A1 A2 STS2 STS4 CHL1 CHL2 CW1 CW2 CW3 Hch12 Hch19 2s 3s A1s A2s STS2s
10 689 2535 1740 1820 2315 4620 9468 8360 2235 6402 5354 5689 9630 5100 2450 2623 2950 3451 4625
11 211 2672 1860 1840 2390 4620 9700 8395 2292 6402 5354 5689 9630 5100 2583 2623 2950 3451 4637
0 0.125 0 0 0.015 0.016 0 0.156 0.016 0 0.031 0.031 10.844 3.985 0.125 0 0 0 0.015
STS4s OF1 OF2 W CHL1s CHL2s A3 A4 A5 CHL5 CHL6 CHL7 CU1 CU2 Hch13s Hch14s Hch16s Hch17s Hch18s
9481 2713 2522 2623 13 036 3198 5403 5905 12 553 363 16 572 16 728 12 312 26 100 11 961 11 408 60 170 62 845 791
9700 2713 2690 2700 13 036 3244 5403 6043 12 778 376 16 623 16 728 12 330 26 100 12 209 11 964 60 828 62 845 876
0 0 0 0 0.094 0 0 0.016 0.015 0 0 0.110 0 0.015 0 0.016 0.031 0.125 0.172
Table 2 The computational results for the weighted problems ID
VEA
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
4 1 4 2 4 4 3 7 6 1 2 2 3 5 2 6 7 5 5
631 544 833 339 676 245 305 610 446 038 168 567 795 152 018 157 881 548 704 726
863 395 000 083 651 663 010 441 330 211 284 171 973 403 587 408 547 827 261 840
VHA1
VHA2
tEA
tHA1
tHA2
1 (%)
2 (%)
6 24 068 4 536 642 1 831 637
6 31 852 4 539 683
6.140 68.531 1450.282 9.265 3600.000 225.656 3600.000 15.860 11.031 3600.000 3.968 3600.000 5.609 3600.000 29.563 237.688 17.625 113.532 14.922 1293.094
1.484 6.469 7.921 9.391 4.250 4.078 12.985 6.969 9.203 11.657 2.266 3.875 4.047 2.625 11.843 8.891 7.032 7.282 10.922 12.844
1.422 7.000 9.875 9.203 4.703 4.609 15.047 7.891 10.047 12.937 2.688 4.312 4.422 2.891 13.484 10.718 7.407 7.796 11.938 14.640
98.77 99.83 99.93 100 100 100 99.61 99.85 100 99.45 99.17 97.12 100 98.54 100 100 99.21 97.37 100 98.55
100.00 99.90 100 100 100 100 100 99.93 100 99.56 99.54 100 100 100 100 100 99.61 99.29 100 99.13
4 288 035 3 604 959
3 608 015
6 005 147 1 158 550 2 493 280
6 011 779 1 162 898
6 827 062 7 350 498
6 854 864 7 495 558
3 106 495
5 643 652
5 676 748
As mentioned in Section 3.5, the initial lower bound for EA is obtained from HA1 that is a heuristic algorithm. From Table 2 it is seen that the initial lower bounds are very tight, where 1 is in the range of [97.12%, 100%] and its average value is 99.37%. The average computation time of HA1 is 7.487 s. Algorithm HA2 solved these problems with r = 0.90. The average computation time is 8.343 s. 2 is in the range of [99.13%, 100%] and its average value is 99.85%. From the above computational results, it is clear that both the HA1 and the HA2 can give solutions very close to those of the exact algorithm, and the average computation times of them are much more shorter than that of the EA.
Y. Cui / Computers & Operations Research 35 (2008) 212 – 225
223
Table 3 The computational results for the unweighted problems ID
VEA
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
1 7 2 6 4 6 6 5 11 10 1 4 4 5 7 3 11 12 9 9
019 358 927 941 397 877 873 816 961 072 879 485 501 140 964 443 120 314 177 124
835 781 244 162 252 807 621 240 700 864 621 532 274 614 178 493 468 542 535 739
VHA1
VHA2
tEA
tHA1
tHA2
1 878 993
1 879 245
2.297 8.140 13.547 10.922 9.171 6.000 22.672 10.766 49.406 13.516 4.578 4.296 5.188 4.890 14.625 11.109 145.953 15.735 15.328 17.406
1.469 7.157 8.859 10.297 4.673 4.578 14.437 7.750 10.187 12.953 2.515 4.297 4.422 2.891 13.187 9.922 7.625 8.078 12.218 14.281
1.734 7.360 1.109 11.140 5.297 4.984 16.891 8.906 11.297 13.531 2.985 4.406 4.891 3.203 14.485 11.203 8.468 8.969 12.750 16.344
4 396 075
5 138 684
Table 4 The piece data of the example (li × wi × di ) 990 × 235 × 6, 220 × 113 × 6, 288 × 250 × 6, 1160 × 868 × 3, 1000 × 868 × 3, 868 × 598 × 6, 1160 × 258 × 3, 1000 × 96 × 15, 1000 × 152 × 15, 185 × 160 × 3, 1183 × 521 × 3, 815 × 521 × 3, 1012 × 571 × 3, 455 × 180 × 3, 540 × 192 × 3, 555 × 210 × 3, 253 × 143 × 3, 442 × 420 × 3, 240 × 90 × 3, 330 × 182 × 3, 800 × 133 × 3, 800 × 403 × 6, 803 × 333 × 3, 778 × 116 × 3, 778 × 78 × 3, 1200 × 241 × 3, 1020 × 262 × 3, 1300 × 121 × 3, 1300 × 83 × 3, 800 × 120 × 3, 700 × 133 × 3,1200 × 85 × 3, 480 × 480 × 6, 965 × 705 × 3, 800 × 390 × 3, 680 × 185 × 3, 840 × 410 × 3, 800 × 73 × 3, 800 × 40 × 3, 930 × 78 × 3, 930 × 50 × 3, 600 × 88 × 3, 1200 × 146 × 6, 822 × 465 × 3, 876 × 318 × 3, 755 × 147 × 3, 460 × 180 × 3, 270 × 117 × 3, 215 × 145 × 3
The second group includes 20 unweighted problems, which are the same as those in the first group, except that the value of each piece is equal to its area. Use material usage u to evaluate the quality of the solution. It is determined as u = (Total area of pieces in the pattern)/(Area of the plate) × 100%. The computational results are summarized in Table 3. The average material usage is 99.7528% for EA, 99.7479% for HA1, and 99.7518% for HA2. The average computation time is 19.480 s for EA, 8.277 s for HA1, and 9.198 s for HA2. HA1 solved 17 problems to optimality, and HA2 solved 19 problems to optimality. The scale of the problems is comparable to that of most practical problems. The computational results in Table 3 indicate that the computation times of the algorithms are reasonable for problems of such scale. 4.3. Solution to a real cutting problem The example below is taken from a factory that makes passenger cars. Pieces of 49 types are to be cut from a stock plate of 2600 × 1300. Table 4 shows the piece data. The value of each piece is equal to its area. Fig. 11 shows the cutting patterns and the computational results. In interpreting the computation times, it should be noted that for this example, the original main memory (512 MB) is exhausted and virtual memory is created in the hard disk, a portion of the computation time is consumed in interchanging data between the main memory and the virtual memory.
224
Y. Cui / Computers & Operations Research 35 (2008) 212 – 225
Fig. 11. Cutting patterns for the example. (a) Fixed direction, computation time 13.61 s, value 3 375 050, material usage 99.85%. (b) Rotation allowed, computation time 35.844 s, value 3 376 597, material usage 99.90%.
5. Conclusions Because of the simplicity of the cutting process, cutting patterns of homogenous strips have gotten wider use in practice. They are especially appropriate for the case where non-numerical controlled guillotine shears are used, or the shearing and punching process is applied.
Y. Cui / Computers & Operations Research 35 (2008) 212 – 225
225
Other exact algorithms exist for the CTDC problems. Usually the patterns generated do not consist of strips, and are not adequate for the shearing and punching process. The staged patterns of general or uniform strips are not adequate either. If cutting patterns consisting of homogenous strips are required, the algorithms of this paper may be helpful. The scale of the random test problems is comparable to that of most practical cutting problems. The computational results indicate that the computation time of the algorithms is reasonable for unweighted problems. The heuristic algorithms are extremely efficient in solving weighted problems. They can give solutions close to those of the exact algorithm in a short time period. Acknowledgment This paper is part of the project supported by Guangxi Science Foundation. The author wish to express his appreciation to the supporter. References [1] Wascher G, Haussner H, Schumann H. An improved typology of cutting and packing problems. European Journal of Operational Research, forthcoming. [2] CuiY, Huang L. Dynamic programming algorithms for generating optimal strip layouts. Computational Optimization and Applications, 2006;33, forthcoming, http://dx.doi.org/10.1007/s10589-005-3067-y. [3] Zhao Z, Peng Y. Development of a practical blank layout optimization system for stamping die design. International Journal of Advanced Manufacturing Technology 2002;20:357–62. [4] Christofides N, Whitlock C. An algorithm for two-dimensional cutting problems. Operations Research 1977;25:31–44. [5] Christofides N, Hadjiconstantinou E. An exact algorithm for orthogonal 2-D cutting problems using guillotine cuts. European Journal of Operational Research 1995;83:21–38. [6] Viswanathan KV, BagehiA. Best-first search methods for constrained two-dimensional cutting stock problems. Operations Research 1993;41:768 –76. [7] Wang PY. Two algorithms for constrained two-dimensional cutting stock problems. Operations Research 1983;32:573–86. [8] Cung V-D, Hifi M, Cun BL. Constrained two-dimensional cutting stock problems a best-first branch-and-bound algorithm. International Transactions in Operations Research 2000;7:185–210. [9] Hifi M. An improvement of Viswanathan and Bagchi’s exact algorithm for constrained two-dimensional cutting stock. Computers & Operations Research 1997;24:727–36. [10] Amaral ARS, Wright M. Efficient algorithm for the constrained two-dimensional cutting stock problem. International Transactions in Operations Research 2001;8:3–13. [11] Daza VP, Alvarenga AG, Diego J. Exact solutions for constrained two-dimensional cutting problems. European Journal of Operational Research 1995;84:633–44. [12] Hifi M, Roucairol C. Approximate and exact algorithms for constrained (un)weighted two-dimensional two-staged cutting stock problems. Journal of Combinatorial Optimization 2001;5:465–94. [13] Morabito R, Arenales MN. Staged and constrained two-dimensional guillotine cutting problems—An AND/OR-graph approach. European Journal of Operational Research 1996;94:548–60. [14] Lodi A, Monaci M. Integer linear programming models for 2-staged two-dimensional Knapsack problems. Mathematical Programming 2003;B94:257–78. [15] Vanderbeck F. A nested decomposition approach to a three-stage, two-dimensional cutting-stock problem. Management Science 2001;47: 864–79. [16] Hifi M. Exact algorithms for large-scale unconstrained two and three staged cutting problems. Computational Optimization and Applications 2001;18:63–88. [17] Kellerer H, Pferschy U, Pisinger D. Knapsack problems. Berlin: Springer; 2004.