# A Variable Neighborhood Search Algorithm for the Leather Nesting Problem

Authors: Cláudio Alves; Pedro Brás; José M. Valério de Carvalho; Telmo Pinto
Journal: Mathematical Problems in Engineering
 (2012)

---

## Abstract

The leather nesting problem is a cutting and packing optimization problem that consists in finding the best layout for a set of irregular pieces within a natural leather hide with an irregular surface and contour. In this paper, we address a real application of this problem related to the production of car seats in the automotive industry. The high quality requirements imposed on these products combined with the heterogeneity of the leather hides make the problem very complex to solve in practice. Very few results are reported in the literature for the leather nesting problem. Furthermore, the majority of the approaches impose some additional constraints to the layouts related to the particular application that is considered. In this paper, we describe a variable neighborhood search algorithm for the general leather nesting problem. To evaluate the performance of our approaches, we conducted an extensive set of computational experiments on real instances. The results of these experiments are reported at the end of the paper.


---

## Body

## 1. Introduction

The leather nesting problem (LNP) is a two-dimensional cutting problem whose objective is to find the best layout for a set of irregular pieces within the boundaries of an irregular surface, which is a natural leather hide. The hides not only are irregular in their contour, but alsomay have holes and zones with different quality levels. On the another hand, the pieces are subject to quality requirements that restrict their placement within the hides. They are divided into quality zones that specify the minimum quality of the hide from which these parts of the pieces must be cut. Here, we consider a particular application of the LNP in the automotive industry, and in particular in the production of car seats. This application has influence on, namely, the characteristics of the pieces. For instance, the pieces found in this sector contrast with the pieces of other applications whose complexity tends to be low like in the furniture industry. In this paper, our conclusions and data are supported by the real case study of a multinational company operating in the automotive sector.The LNP addressed in this paper shares most of the characteristics and requirements of other nesting problems. Obviously, the pieces must be placed within the boundaries of the hides, and they should not overlap. Except for the quality constraints mentioned above, no other constraints apply to the layouts like, for example, constraints on the directionality of the pieces. Since the hides have a limited area (in opposition to the strips whose area may be considered virtually unlimited), the standard optimization criterion that is considered when building the layouts is the total raw material usage. When multiple hides are involved, we may consider additional criteria like the percentage of remaining space that is left on the last hide [1]. The typology proposed in [2] classifies this LNP as a 2D-RCSP (two-dimensional residual cutting stock problem). Because of all these characteristics, the problem is very challenging. At the same time, the value of the hides and the potential for savings make this problem very relevant from an economical point of view.A first contribution for a similar LNP can be found in [3]. In this paper, Heistermann and Lengauer describe a constructive heuristic that starts by selecting an empty region of the hide using a multicriteria quality function. A subset of pieces is then selected according to their geometry and to the geometry of the selected region. These pieces are placed in this region in the positions that maximizes another multicriteria function used to evaluate how good each piece fits in a given position. The authors report on computational results for real instances that show the competitiveness of their approach compared to the results achieved by human nesters.More recently, Alves et al. [1] proposed a set of constructive heuristics for the general LNP addressed in this paper. Their approach combines different strategies for grouping the pieces, for selecting the next piece to place on the hide, for selecting an empty region of the hide where the selected piece will be placed, and for evaluating the different placement positions in this region. The authors use no-fit polygons to ensure the feasibility of the layouts, and also to guide the different selection processes of their heuristic. They report on a set of computational experiments on real instances that attest the performance of some of the combinations of strategies described in their paper.Heistermann and Lengauer [3] and Alves et al. [1] are the only authors to report on results for the same general LNP as the one addressed in this paper. All the other contributions proposed in the literature [4–7] focus on variants of this LNP. In [4], Crispin et al. describe two genetic algorithms for a LNP with directionality constraints. They consider an application on the shoe-making industry where the rotations that can be applied to the pieces are restricted over the hide. In practice, these constraints reduce the complexity of the problem.In [7], Yuping and Caijun explore a variant of the LNP with no quality constraints. They describe a solution approach based on genetic algorithms and simulated annealing and report on computational results with material usage of 70% achieved in one hour of computing time. Lee et al. [6] addressed a similar LNP with no quality zones and multiple hides. Their algorithm consists in placing the pieces sequentially on the hide, and in adjusting their placement through translations and rotations.In this paper, we describe a variable neighborhood search (VNS) algorithm for the general LNP described above. Our approach relies on a fast constructive heuristic used to generate the first layout and to complete the partial layouts that might be generated during the local search procedure. It relies also on different neighborhood structures that are explored through the general framework proposed by Mladenović and Hansen in [8]. Our neighborhood structures are based on the sequence by which the pieces are placed on the hide and on the quality of the fitness of these pieces in the current layout. The goal is to improve quickly the incumbent solution by exploring neighboring solutions obtained by removing or replacing the pieces with the worst fitness in a given part of the sequence. We explore different strategies for removing and replacing the pieces with the worst fitness, and to generate the rest of the sequence from this piece forward. These strategies define the moves in the corresponding neighborhoods. The VNS framework is used to systematically explore the various neighborhoods and to escape from the regions that contain a local optimum through randomization. In our algorithm, the local search phase is performed on a single neighborhood space, which is the same as the one used in the shaking phase. As a consequence, our algorithm corresponds to an implementation of the basic or standard VNS. Extensive computational experiments are reported for real instances from our real case study. The tests were performed with two objectives: to tune the algorithm so as to identify the best set of parameters and evaluate the real impact of each neighborhood in the quality of the layouts and to evaluate the performance of the best approach on a large set of real instances.To the best of our knowledge, no results have been reported in the literature concerning the application of the VNS metaheuristic to the general LNP addressed in this paper. In fact, we are not aware of any algorithm based on VNS for cutting and packing problems involving irregular shapes. Recent applications of VNS to cutting and packing problems can be found in [9–11].In [9], the authors describe a hybrid method for the strip packing problem combining the greedy randomized adaptive search procedure (GRASP) with VNS. The problem consists in finding the best packing for a set of rectangles within a 2-dimensional strip with (virtually) infinite length. Their objective is to find the pattern with the minimum length. The authors describe an approach that embeds a VNS algorithm in the postprocessing phase of GRASP. The VNS metaheuristic is used to improve the packing of the last rectangles that were placed in the constructive phase. Their neighborhood structures are based on the permutations of these rectangles. They report on a set of computational experiments where their method compares favorably with a simulated annealing algorithm proposed in the literature [12].In [10], Parreño et al. describe a VNS algorithm for the container-loading problem. The initial solution is generated using a constructive heuristic proposed in [13]. This heuristic builds iteratively a valid layout for the problem by choosing and placing a set of boxes into a so-called maximal space, that is, the space where the largest parallelepiped can be placed. The authors propose five different neighborhood structures for the problem based on five types of movements involving the deletion of layers, the insertion of columns and boxes, and emptying a complete region of the container. In [10], their algorithm is compared with other state-of-the-art approaches proposed in the literature on a set of 1500 benchmark instances. Their approach outperforms these other algorithms for the set of instances that were considered.In [11], the authors describe a VNS approach for different variants of the 2-dimensional cutting stock problem with guillotine constraints. They propose a set of greedy heuristics for the problem, together with three neighborhood structures and their corresponding local search procedures. These structures rely on the representation of the solutions as a sequence of items, and on movements based on swapping items and reversing subsequences of items. These neighborhood spaces are explored within a variable neighborhood descent procedure. The authors report on computational experiments for real instances of the furniture industry. The number of bins and corresponding waste decreased with their approach when compared with the results achieved by the companies.The paper is organized as follows. In Section2, we describe the characteristics of the general LNP addressed in this paper. In Section 3, we introduce the geometrical issues related to the problem and the strategies used to overcome these issues. In Section 4, we describe the constructive heuristic used to generate the initial solution and to complete the partial layouts within the local search phases. In Section 5, we describe the different components of our algorithm including the movements and the corresponding neighborhood structures, and we describe how these components are integrated in our VNS algorithm. In Section 6, we report on an extensive set of computational experiments conducted on real instances from our real case study. Some final conclusions are drawn in Section 7.


## 2. The Leather Nesting Problem

The LNP is a two-dimensional cutting stock problem that consists in finding the best way to cut a set of irregular pieces from a natural leather hide. The hides and the pieces have both an irregular contour. Furthermore, they may have holes and regions with different quality grades. For the hides, the holes (as other defects), and the quality, zones are a consequence of the nature of the product. On the contrary, a quality zone in a piece defines a minimum quality requirement set by the client. It stipulates that the corresponding part of the piece must be cut from a region of the hide that has at least this level of quality.Figure1 shows a leather hide with holes (in white) and different quality zones (in black, red, green, and blue). The regions in grey at the border of the hide are nonusable areas. They are not defects in the strict sense of the word, but because their quality is too low, they are not used to produce any piece. In our specific application, the quality zones are divided into four groups denoted by A, B, C, and D. The zones A correspond to the best-quality regions of the hides. The quality decreases from A to D, with D being the worst quality level. The zones D of the hides are typically used to cut the parts of the pieces that are not visible in the car seats. In the forthcoming figures, we will depict the zones A, B, C, and D of the hides in black, red, green, and blue, respectively. The holes will be represented in white.Figure 1
Leather hide.The quality zones of the pieces are defined using a similar scheme with four different quality grades. In our case, the pieces are the parts of a car seat. The quality zone of a piece can only be cut from a region of the hide whose quality grade is similar or higher. For example, a zone C of a piece will be cut only from a region A, B, or C of a hide. Note that in the real application considered in this paper the pieces may be highly irregular. They may have different concavities, and their area may differ significantly.A feasible layout is an arrangement of the pieces on the hide such that the pieces are all placed within the boundaries of the hide (its usable part) without overlapping with each other, and such that the quality requirements of the pieces are fulfilled. Note that while the defects on the hides do not increase the complexity of the problem compared to other nesting problems, the existence of quality zones really do. A defect on the hide (including the holes) can be treated as a piece already placed on this region of the hide. However, the same does not apply to the quality zones. While a quality zone of a hide cannot overlap with some parts of the pieces, it may overlap with others as long as its corresponding quality level is the same or better than the quality requirement of these parts of the pieces.The most common criterion used to evaluate the quality of a layout is the total material usage. In the automotive industry, other criteria are used to improve the efficiency of the cutting processes [1]. For instance, when a production order requires more than a single hide, an important issue is to ensure that the total usable area that remains on the last hide after the final cutting operation is maximized. Indeed, the parts of the last hide that are too small are discarded, while the others are used as an input for subsequent orders. Hence, the criterion that applies when generating the layout for the last hide is no more the material usage, but instead the total usable area of this hide. In this paper, we will focus on the generation of efficient layouts on a single hide, and hence, we will use the maximization of the material usage as the optimization criterion.


## 3. Geometric Issues

The hides, the pieces, and their quality zones, holes, and defects are all represented using polygons. These polygons are generated after a scanning process for the hides, and using a CAD system for the pieces of the car seats. To improve the efficiency of our approach, we simplified first the representation of the hides and pieces by generating approximations of the corresponding shapes using a procedure described in [1]. The outer border of the hides is represented using an inner approximation obtained by removing sequentially the vertices whose distance from its immediate predecessor is smaller than a given (small) parameter. A vertex is removed only if the resulting polygon is in fact an inner approximation of the original polygon. On the contrary, the holes and the quality zones of the hides are replaced by an outer approximation using a similar scheme. All the polygons representing the pieces are replaced by outer approximations using again a similar scheme. This procedure ensures that every layout that is feasible for the approximated hide will remain feasible for the original hide. It is important to note that the number of vertices of the resulting polygons is still much larger than the number of vertices of the polygons used in [3]. The number of vertices used to represent the hides and the pieces decreased, respectively, to 300 and 80 for the instances used in our computational experiments. In [3], the number of vertices per hide and per piece was, respectively, equal to 100 and 70 before their simplifications.In our approach, we resorted to no-fit polygons (NFPs) to compute the relative position between two pieces and between the pieces and the quality zones of the hide. To ensure that a piece is placed within the boundaries of the hide, we used inner-fit polygons (IFPs). Both the no-fit and the inner-fit polygons are computed using the Minkowski sums [14, 15]. In the particular case of the LNP, testing whether a piece is placed correctly on the hide is more complex than in other nesting problems because of the quality zones. The quality zones of a hide cannot be treated as pieces already placed on its surface (just as its holes and defects). Indeed, while some parts of the pieces will not be allowed to overlap with the zones of the hide whose quality is lower, these parts will be allowed to overlap with other zones that meet the corresponding quality requirements. Hence, any standard method used to avoid that two pieces overlap must be adapted in the case of the LNP.The no-fit and inner-fit polygons of two polygons A and B will be denoted byNFPA,B and IFPA,B, respectively. The outer border of a no-fit polygon NFPA,B is the path followed by a reference point of B when B slides around A without ever overlapping with A but such that B is always in contact with A. The inner-fit polygon IFPA,B is defined in a similar way except that the polygon B must always remain inside A. The NFPs are used to know if two polygons overlap or not, while the IFPs are used to know if a polygon is completely contained within another one. Indeed, if the reference point of B is inside NFPA,B, then A and B overlap. If it lies at the boundary of A, then B touches A without overlapping with it. Finally, if the reference point of B is outside NFPA,B, then A and B overlap. Similarly, if the reference point of B is inside IFPA,B, then B is completely inside A. If it is at the border of IFPA,B, then B remains inside A and it touches its border.The NFPs between all the pairs of pieces have to be computed, together will all the IFPs between each piece and the usable area of the hide, and all the NFPs between each quality zone of the pieces and the regions of the hide with a lower quality grade. The IFPs of a given piece and the hide and the NFPs of this piece and the quality zones of the hide describe the set of feasible placement positions of the piece inside the hide. Note that there can be more than one (unconnected) IFP describing the feasible placement positions inside a hide. The constructive heuristic used in our algorithm takes advantage of the information provided by these polygons.


## 4. Generating Feasible Layouts: A Constructive Heuristic

To generate feasible layouts, we use a constructive heuristic that follows the same steps as those described in [1]. The approach can be divided as follows:(a)
definition of groups of pieces,(b)
selection of the next piece to place on the hide from a given group of pieces,(c)
selection of a region of the hide where to place the piece,(d)
evaluation of the placement positions in this region and selection of one of these positions.The steps (b) to (d) are repeated until no more pieces can be placed on the hide, or until there are no more pieces available. The heuristic is used many times in the course of the algorithm, and hence it should remain fast however, without neglecting the quality of the layouts. The strategies used in the steps (b) to (d) were chosen with this objective in mind.Letm be the total number of different pieces, and let bi, with i=1,…,m, denote the demand associated to the piece i. The step (a) consists in grouping the pieces according to a given criterion. Let n be the number of groups, and let Gj denote the set of pieces that belong to the group j. For ease of presentation, we will assume that a reindexing of the pieces is applied after the pieces have been assigned to a group. Hence, denoting by mj the total number of pieces in the group j, we will have Gj={1,2,…,mj}. The demand of the piece i in group j will be denoted by bji.The pieces are assigned to the groups according to the value of their areas. A piecei is assigned to a group j if its area Ai is such that
(4.1)Ai∈[min⁡+max⁡-min⁡n×(j-1);min⁡+max⁡-min⁡n×j),
with min and max representing, respectively, the area of the smallest piece and the area of the largest piece and n being the total number of groups that are allowed. Note that for j=n, the previous interval is closed on the right. Group G1 corresponds to the pieces with the smallest areas. The areas of the pieces increase with the index of the groups, and hence, the pieces with the largest values belong to the nth group Gn.In the step (b) of the heuristic, we start by choosing the group of pieces from which the next piece will be selected. The groups are chosen by decreasing order of their index. We select the first group that has pieces to be placed and such that at least one of these pieces still fits on the hide. The selection of the next piece and its rotation is based on the index of the chosen group and on the characteristics of the IFPs of the pieces and the hide. Letj be the index of the chosen group. If j<n/2, we choose the piece with the smallest IFP, while if j≥n/2, the piece that is selected is the one that has the largest IFP. The reference point of the selected piece is then placed within the IFP that determined the selection of the piece.The principle is to use the information provided by the IFPs as an indicator of the expectable quality of the fitness of the pieces in the corresponding regions of the hide. We recall that there can be more than one IFP representing the feasible placement positions of a given piece inside the hide. If one of the IFPs of a small piece is a polygon with a small area, then one may expect that the fitness of this piece in the corresponding region of the hide will be good. For the largest pieces, the objective is to place them in regions where the impact on the placement of the next pieces is lower.Once a piece and a placement region have been selected, we choose the final placement position of the piece within this region. We use a simple criterion to evaluate each placement position. The position that is selected is the point in the border of the IFP that is nearer from the border of the hide. Here, the goal is to fill the hide preferentially from the border to the center.


## 5. A Variable Neighborhood Search Algorithm

### 5.1. Overview

The VNS framework was introduced by Mladenović and Hansen [8] and applied successfully to many optimization problems (see [16] for a recent survey). This framework leads to a metaheuristic that drives the search into different neighborhoods in a systematic way so as to improve the incumbent solution. In this paper, we use this framework to explore alternative neighborhoods for the general LNP. Our approach relies on the constructive heuristic introduced above and on a set of neighborhoods that are briefly described below. The details of the neighborhood structures will be given in the next section.The initial layout is obtained by applying the constructive heuristic defined above. This heuristic determines the sequence by which the pieces are placed and the exact position of each piece on the hide. A layout is defined by the set of pieces that are placed on the hide together with their rotation and position. As an alternative, we can represent a layout as a sequence of pieces combined with the iterative application of the steps (c) and (d) of our constructive heuristic. By iterative, we mean that the pieces are chosen and placed on the hide one after the other following the order defined by the sequence and that the process repeats until there are no more pieces in the sequence. We will use this latter representation to describe our neighborhood structures and associated movements.We propose four types of distinct movements defined from a sequence of pieces: exchanging a piecep by another that is not in the sequence, removing all the pieces from this piece forward and filling the hide using the constructive heuristic; exchanging a piece p by another that is not in the sequence, keeping the rest of the sequence unchanged, placing the corresponding pieces using iteratively the steps (c) and (d) of the constructive heuristic and filling the rest of the hide by applying the complete heuristic; swapping two pieces p and p′ in the sequence if p′ can be placed on the hide with a better fitness than p following the steps (c) and (d) of the heuristic placing all the pieces of the sequence using the steps (c) and (d) of the heuristic and filling the rest of the hide with the complete heuristic; removing a piece p of the sequence, placing all the pieces of the resulting sequence by applying iteratively the steps (c) and (d) of the heuristic, and filling the rest of the hide with the complete heuristic.The piecep that is exchanged, swapped with another piece, or removed from the sequence is chosen from a set of candidate pieces with the worst fitness. The quality of the fitness of a piece is evaluated by computing the areas of the polygons resulting from the intersection of an offset of the piece with the outer part of the hide and with the current layout and by dividing this total area by the area of the offset. The largest will be this value, the better will be the fitness. Ideally, when this value is equal to 1, the whole border of the piece touches the border of the hide or the border of the current layout. Figure 2 illustrates the process.Evaluating the quality of the fitness of a piece at a given placement position.
(a)(b)For ease of presentation, we will always denote in this paper the piece that is to be exchanged, swapped with another piece, or removed from the sequence byp, and the set of candidate pieces from which p is selected by P. Similarly, the set of pieces that are candidate to substitute p in the sequence will be denoted by P′, and the piece that is selected from P′ will be denoted by p′. Furthermore, we will denote by S a sequence of pieces, and we will define it as a vector of tuples as follows:(5.1)S=(s1,s2,…,s|S|),
with sk=(j,i) denoting the group (Gj) and the piece (i∈Gj) that is in the kth position in the sequence. The vector containing the values of the corresponding fitness of these pieces will be denoted by F and defined as follows:(5.2)F=(f1,f2,…,f|S|),
with 0≤fk≤1, k=1,…,|S|.A key characteristic of our approach is that the neighbors of a solutionL (except eventually the one defined through the fourth type of movement described above) are layouts in which the fitness of the piece p′ is always better than the fitness of the piece p in L. Furthermore, the pieces p will not be chosen from any part of the sequence, but from a restricted subpart of the sequence. These subparts will be defined based on the  position of the pieces in the sequence. However, instead of using the indexes k of the tuples sk in S to denote these positions, we use the percentage of material usage achieved right after a piece is placed on the hide. For example, we will choose the pieces that are in a window of 50% to 70% of material usage meaning that only the pieces that lead to a material usage in this interval right after being placed on the hide will be chosen. We will denote by U the vector of values of the material usage achieved after placing each piece of the sequence S. We will have(5.3)U=(u1,u2,…,u|S|),
with uk<uk+1, k=1,…,|S|-1. The vector U will represent the evolution of the material usage as the pieces are placed on the hide. To identify a subpart of the sequence, we will use a lower and an upper bound for the value of the material usage. We will denote these values by umin and umax, respectively. For the example given above, we have umin=50% and umax=70%.Specific neighborhoods are defined from the general movements referred to above. The neighborhoods further depend on the following set of parameters:(i)
the number of pieces that are candidate to be exchanged, swapped with another piece, or removed, that is,|P| (we will denote this parameter by q);(ii)
the number of pieces that are candidate to substitute the piecep, that is, |P′| (we will denote this parameter by r);(iii)
the subpart of the sequence from which the pieces ofP are chosen, that is, (si,…,sj) with
(5.4)i=argminl∈{1,…,|S|}{ul:ul≥umin⁡,ul∈U},j=argmaxl∈{1,…,|S|}{ul:ul≤umax⁡,ul∈U}.
Note that when q=1, the piece that is exchanged, swapped, or removed is the piece with the worst fitness in the given subsequence. Similarly, when r=1, the piece p is replaced in the sequence by the piece that leads to the best fitness, either from the sequence S or not. It is possible to define various neighborhoods by setting these parameters to different values. The details of these neighborhoods will be given in the next section.To explore these neighborhoods, we use the standard VNS framework. At each iteration, the procedure tries to improve the incumbent by looking to local optima within each neighborhood. Driving the search to a different neighborhood may improve the solutions obtained through the exploration of the previous neighborhoods since the local optima in two different neighborhoods are not necessarily the same. In this paper, we propose an approach based on VNS that explores systematically the neighborhoods obtained through the general movements described above and by setting the above parameters to some specific values.


### 5.2. Movements and Neighborhood Structures

We begin by describing in detail the procedures that define each one of the four movements referred to above. These movements will be denoted byM1, M2, M3, and M4, respectively.(A) MovementM1
(1)
Select the piecep:
Letk1=argminl∈{1,…,|S|}{ul:ul≥umin,ul∈U} and k2=argmaxl∈{1,…,|S|}{ul:ul≤umax,ul∈U};LetP be the set of the q pieces from the subsequence (sk1,…,sk2) with the smallest fitness in F;Choose a piecep from P;(2)
Select the piecep′:
LetC be the set of pieces that are not in the sequence S;LetP′ be the set of the r pieces of C with the best fitness when placed on the hide right after sk1-1 following the steps (c) and (d) of the heuristic;Choose a piecep′ from P′;(3)
Update the sequenceS:
LetGj be the group of the piece p and i the index of p in Gj, and let k3 be the index of (j,i) in S corresponding to the chosen piece p;LetGj′ be the group of the piece p′ and i′ the index of p′ in Gj′;Remove the subsequence(sk3,…,s|S|) from S;(4)
Place the pieces of the sequence(s1,…,sk3-1,(j′,i′)) on the hide following the steps (c) and (d) of the constructive heuristic (if a piece of the sequence cannot be placed on the hide, update S by removing this piece from the sequence);(5)
Fill the hide (and complete the sequenceS) using the constructive heuristic.
Note that if k3=1, then the subsequence (s1,…,sk3-1) is an empty vector.The movement M2 differs from M1 only on the steps (3) and (4). As happens in M1, the piece p is replaced in the current sequence S by another (p′) with a better fitness and that is not in S, while the rest of the sequence from p forward remains unchanged. The pieces of the new sequence are placed on the hide using the steps (c) and (d) of the constructive heuristic. When all these pieces have been placed (or discarded eventually if they do not fit on the hide), the complete heuristic is used (eventually) to fill the empty spaces that may remain.(B) MovementM2
(1)
Select the piecep: similar to step (1) of M1;(2)
Select the piecep′: similar to step (2) of M1;(3)
Update the sequenceS:
LetGj be the group of the piece p and i the index of p in Gj, and let k3 be the index of (j,i) in S corresponding to the chosen piece p;LetGj′ be the group of the piece p′ and i′ the index of p′ in Gj′;Replace(j,i) in the position k3 of the sequence by (j′,i′), that is,(5.5)S=(s1,…,sk3-1,(j′,i′),sk3+1,…,s|S|);(4)
Place the pieces of the new sequenceS on the hide following the steps (c) and (d) of the constructive heuristic (if a piece of the sequence cannot be placed on the hide, update S by removing this piece from the sequence);(5)
Fill the hide (and complete the sequenceS) using the constructive heuristic.In the movement M3, the piece p′ is selected from the subsequence of S starting from p and up to the end of the sequence. The pieces p and p′ are swapped in the sequence S, and the pieces of the resulting sequence are placed using the steps (c) and (d) of the heuristic. Again, the constructive heuristic is used at the end of the process to fill the empty spaces.(C) MovementM3
(1)
Select the piecep: similar to step (1) of M1;(2)
Select the piecep′:
LetP′ be the set of the r pieces of S from the chosen piece p up to the end of S with the best fitness when placed on the hide right after sk1-1 following the steps(c) and (d) of the heuristic;Choose a piecep′ from P′;(3)
Update the sequenceS:
LetGj  be the group of the piece p and i the index of p in Gj, and let k3 be the index of (j,i) in S corresponding to the chosen piece p;LetGj′ be the group of the piece p′ and i′ the index of p′ in Gj′, and let k4 be the index of (j′,i′) in S corresponding to the chosen piece p′;Swapsk3 and sk4 in S, that is,(5.6)S=(s1,…,sk3-1,sk4,sk3+1,…,sk4-1,sk3,sk4+1,s|S|);(4)
Place the pieces of the new sequenceS on the hide following the steps (c) and (d) of the constructive heuristic (if a piece of the sequence cannot be placed on the hide, update S by removing this piece from the sequence);(5)
Fill the hide (and complete the sequenceS) using the constructive heuristic.
Here, we assume that k3<|S|, otherwise it is clear that p′ will not exist.The fourth movement consists in removing the piece p from the sequence S and placing the remaining pieces from this piece forward using the constructive heuristic.(D) MovementM4
(1)
Select the piecep: similar to step (1) of M1;(2)
Update the sequenceS:
LetGj be the group of the piece p and i the index of p in Gj, and let k3 be the index of (j,i) in S corresponding to the chosen piece p;Removesk3 from S, that is, S=(s1,…,sk3-1,sk3+1,…,s|S|);(3)
Place the pieces of the new sequenceS on the hide following the steps (c) and (d) of the constructive heuristic (if a piece of the sequence cannot be placed on the hide, update S by removing this piece from the sequence);(4)
Fill the hide (and complete the sequenceS) using the constructive heuristic.The objective of these movements is to explore different neighborhoods of the current solutionL that are all composed by solutions obtained from L by removing one of its pieces with a bad fitness, and replacing it (eventually) by another piece with a better fitness. They differ essentially from each other in the way the piece p is treated. Note that while in M1, M2, and M3, the piece p is replaced by another that leads to a better fitness (by definition), there is no guarantee that the piece sk3+1 in M4 will improve the fitness of the piece p.The movementM1 is the most computationally expensive among the four movements, since it forces to repeat the complete heuristic right after p has been exchanged. In the other movements, the step (b) of the heuristic consisting in the selection of the next piece to place is not applied, while the pieces of the new sequence S are being placed. The heuristic is applied in its entirety only after all these pieces have been placed on the hide. Typically, the number of iterations at this stage is small. The movements M2 and M3 vary essentially on the source from which p′ is selected, either from the sequence or not. The movement M4 is the simplest movement. The neighborhoods of a solution L defined through M4 are composed by |P| solutions. This movement is proposed as a fast strategy that aims at removing a piece with a bad fitness, letting the heuristic complete the layout starting from its immediate successor sk3+1 in S.Each movement will be associated to a specific neighborhood. We will denote the neighborhoods of a solutionL obtained through Mi by Ni(L), i=1,…,4. The neighborhoods N1(L), N2(L), and N3(L) of a solution L consists in the solutions generated by taking every piece p∈P, and for each one these pieces by replacing (or swapping) it by every piece p′∈P′, and then by applying the steps (3) to (5) of M1, M2 and M3, respectively. The neighborhood N4(L) of a solution L is composed by all the solutions obtained from L by removing each one of the pieces of P, and by applying the steps (2) to (4) of M4. These neighborhoods depend on different parameters, namely, umin and umax that determine the subpart of the sequence from which the pieces of P are selected, and the parameters q and r that determine the size of the sets P and P′, respectively. Specific neighborhoods can be obtained from these general definitions by setting these parameters to given values. To explore in a systematic way the neighborhoods induced by these general definitions, we developed an algorithm based on the VNS framework described in [8]. The details of this approach are given in the following section.


### 5.3. Variable Neighborhood Search

The VNS metaheuristic defines a general framework for optimization based on the systematic exploration of different neighborhoods. It is a local search metaheuristic that allows for the escape from local optima by switching among the neighborhoods. It relies on the simple observation that a local optimum in a given neighborhood may not remain optimal in another neighborhood. Different variants are defined from this general framework, such as the variable neighborhood descent algorithm and the variable neighborhood decomposition search procedure. In [16], Hansen et al. reviewed different possible implementations of the VNS metaheuristic. These schemes are general enough to allow for different practical implementations. In this paper, we describe an implementation of the VNS metaheuristic based on the basic approach. To improve the efficiency of our approach, we adapted some components of the basic scheme, essentially in the local search phase. A computational study was performed to tune the resulting algorithm, to identify promising sets of parameters and to evaluate the impact of each neighborhood in the quality of the solutions. The results of this study are provided in Section 6.Letv(x) denote the value of a solution x. The general steps of the basic VNS are described in Algorithm 1 for a minimization problem.Algorithm 1
Input:tmax neighborhood structures Nt, t=1,…,tmax;A stopping criterion;(1) Initialization:x:=findInitialSolution ();(2) Repeat the following steps until the stopping criterion is met:(a)t:=1;(b) Repeat the following steps untilt=tmax:x′:=shaking(x, t);x′′:=localSearch(x′,t);if v(x′′)<v(x) thenx:=x′′;t:=1;elset:=t+1;The output of this algorithm is the incumbent solutionx. The procedure findInitialSolution generates an initial solution for the problem which becomes also the first incumbent solution. At each iteration, a solution is generated randomly from the tth neighborhood of x through the shaking procedure. A local optimum is then sought in this tth neighborhood space through the local search procedure localSearch. If the value of this local optimum is better than the value of the incumbent solution, the incumbent is updated and the search is resumed starting from the first neighborhood structure and with this new incumbent. If it is worse or equal than the value of the incumbent solution, the local search procedure is then applied on the neighborhood Nt+1. The process repeats until the stopping criterion is finally met. Note that this general definition allows for different implementations. For instance, the strategy used to switch between two neighborhood structures may be different from the sequential scheme followed in the basic VNS described above. Similarly, the criterion used to accept a local optimum and move to the corresponding solution may not be based (only) on the value of this local optimum.Our implementation of the basic VNS for the general LNP is described next. The neighborhood structuresNi refer to the structures introduced in the previous section. Furthermore, we denote by (umin,ij,umax,ij) the jth pair of lower and upper bounds (umin,umax) for the value of the material usage associated to the neighborhood Ni, which define the subpart of the sequence from which the pieces of P are selected. The parameters qij and rij will be used to denote the general parameters q and r introduced in Section 5.1 and associated to the jth neighborhood defined from Ni. For each Ni, i=1,…,4, let tNi denote the number of parameter sets that are considered, each one consisting on given values for the parameters (umin,ij,umax,ij), qij, and rij, j=1,…,tNi. Each one of these parameter sets defines a specific neighborhood structure within one of the general neighborhoods Ni, i=1,…,4 (whose precise definition depends on this set of parameters). In practice, ∑i=14tNi neighborhood structures are effectively considered in our algorithm. Let tmax=∑i=14tNi. For the sake of clarity, in our description of our VNS algorithm given in Algorithm 2, we will index these neighborhoods sequentially using an index t such that t=1,…,tmax.Algorithm 2
Input:For eachNi, i=1,…,4, tNi sets of parameters (umin,ij,umax,ij), qij and rij, j=1,…,tNi,such thattmax=∑i=14tNi (the resulting neighborhood structures will be indexed with theindext, with t=1,…,tmax);A limittlimit on the total computing time;(1) Initialization:L:=findInitialSolution();(2) Repeat the following steps untilcpuTime()≥tlimit:(a)t:=1;(b) Repeat the following steps untilt=tmax:L′:=shaking(L, t);L′′:= first Improvement (L′,t);if v(L′′)<v(L) thenL:=L′′;t:=1;elset:=t+1;The initial layoutL is generated using the constructive heuristic described in Section 4. The neighborhood structures used in the shaking phase and in the local search procedure are the same. In our implementation, we used a first improvement local search procedure. To further accelerate this procedure, we restrict the search to a subpart of the neighborhood of the solution L′. Indeed, whenever q (the size of the set P of pieces to exchange, swap with others, or remove) is greater than 1, we explore only the neighbors obtained by choosing randomly one piece p of P, and by taking all the pieces p′ of P′ in the case of N1, N2, and N3. Note that to generate a neighboring solution, we have to use the constructive heuristic. The heuristic is computationally expensive, namely, because of the computation of the NFPs and IFPs, even if, in practice, the heuristic is applied only on the subpart of the sequence that was changed, since the head of the sequence that was kept unchanged produces exactly the same partial layout. Finally, the execution of the algorithm is stopped after a given time limit has been reached.


## 5.1. Overview

The VNS framework was introduced by Mladenović and Hansen [8] and applied successfully to many optimization problems (see [16] for a recent survey). This framework leads to a metaheuristic that drives the search into different neighborhoods in a systematic way so as to improve the incumbent solution. In this paper, we use this framework to explore alternative neighborhoods for the general LNP. Our approach relies on the constructive heuristic introduced above and on a set of neighborhoods that are briefly described below. The details of the neighborhood structures will be given in the next section.The initial layout is obtained by applying the constructive heuristic defined above. This heuristic determines the sequence by which the pieces are placed and the exact position of each piece on the hide. A layout is defined by the set of pieces that are placed on the hide together with their rotation and position. As an alternative, we can represent a layout as a sequence of pieces combined with the iterative application of the steps (c) and (d) of our constructive heuristic. By iterative, we mean that the pieces are chosen and placed on the hide one after the other following the order defined by the sequence and that the process repeats until there are no more pieces in the sequence. We will use this latter representation to describe our neighborhood structures and associated movements.We propose four types of distinct movements defined from a sequence of pieces: exchanging a piecep by another that is not in the sequence, removing all the pieces from this piece forward and filling the hide using the constructive heuristic; exchanging a piece p by another that is not in the sequence, keeping the rest of the sequence unchanged, placing the corresponding pieces using iteratively the steps (c) and (d) of the constructive heuristic and filling the rest of the hide by applying the complete heuristic; swapping two pieces p and p′ in the sequence if p′ can be placed on the hide with a better fitness than p following the steps (c) and (d) of the heuristic placing all the pieces of the sequence using the steps (c) and (d) of the heuristic and filling the rest of the hide with the complete heuristic; removing a piece p of the sequence, placing all the pieces of the resulting sequence by applying iteratively the steps (c) and (d) of the heuristic, and filling the rest of the hide with the complete heuristic.The piecep that is exchanged, swapped with another piece, or removed from the sequence is chosen from a set of candidate pieces with the worst fitness. The quality of the fitness of a piece is evaluated by computing the areas of the polygons resulting from the intersection of an offset of the piece with the outer part of the hide and with the current layout and by dividing this total area by the area of the offset. The largest will be this value, the better will be the fitness. Ideally, when this value is equal to 1, the whole border of the piece touches the border of the hide or the border of the current layout. Figure 2 illustrates the process.Evaluating the quality of the fitness of a piece at a given placement position.
(a)(b)For ease of presentation, we will always denote in this paper the piece that is to be exchanged, swapped with another piece, or removed from the sequence byp, and the set of candidate pieces from which p is selected by P. Similarly, the set of pieces that are candidate to substitute p in the sequence will be denoted by P′, and the piece that is selected from P′ will be denoted by p′. Furthermore, we will denote by S a sequence of pieces, and we will define it as a vector of tuples as follows:(5.1)S=(s1,s2,…,s|S|),
with sk=(j,i) denoting the group (Gj) and the piece (i∈Gj) that is in the kth position in the sequence. The vector containing the values of the corresponding fitness of these pieces will be denoted by F and defined as follows:(5.2)F=(f1,f2,…,f|S|),
with 0≤fk≤1, k=1,…,|S|.A key characteristic of our approach is that the neighbors of a solutionL (except eventually the one defined through the fourth type of movement described above) are layouts in which the fitness of the piece p′ is always better than the fitness of the piece p in L. Furthermore, the pieces p will not be chosen from any part of the sequence, but from a restricted subpart of the sequence. These subparts will be defined based on the  position of the pieces in the sequence. However, instead of using the indexes k of the tuples sk in S to denote these positions, we use the percentage of material usage achieved right after a piece is placed on the hide. For example, we will choose the pieces that are in a window of 50% to 70% of material usage meaning that only the pieces that lead to a material usage in this interval right after being placed on the hide will be chosen. We will denote by U the vector of values of the material usage achieved after placing each piece of the sequence S. We will have(5.3)U=(u1,u2,…,u|S|),
with uk<uk+1, k=1,…,|S|-1. The vector U will represent the evolution of the material usage as the pieces are placed on the hide. To identify a subpart of the sequence, we will use a lower and an upper bound for the value of the material usage. We will denote these values by umin and umax, respectively. For the example given above, we have umin=50% and umax=70%.Specific neighborhoods are defined from the general movements referred to above. The neighborhoods further depend on the following set of parameters:(i)
the number of pieces that are candidate to be exchanged, swapped with another piece, or removed, that is,|P| (we will denote this parameter by q);(ii)
the number of pieces that are candidate to substitute the piecep, that is, |P′| (we will denote this parameter by r);(iii)
the subpart of the sequence from which the pieces ofP are chosen, that is, (si,…,sj) with
(5.4)i=argminl∈{1,…,|S|}{ul:ul≥umin⁡,ul∈U},j=argmaxl∈{1,…,|S|}{ul:ul≤umax⁡,ul∈U}.
Note that when q=1, the piece that is exchanged, swapped, or removed is the piece with the worst fitness in the given subsequence. Similarly, when r=1, the piece p is replaced in the sequence by the piece that leads to the best fitness, either from the sequence S or not. It is possible to define various neighborhoods by setting these parameters to different values. The details of these neighborhoods will be given in the next section.To explore these neighborhoods, we use the standard VNS framework. At each iteration, the procedure tries to improve the incumbent by looking to local optima within each neighborhood. Driving the search to a different neighborhood may improve the solutions obtained through the exploration of the previous neighborhoods since the local optima in two different neighborhoods are not necessarily the same. In this paper, we propose an approach based on VNS that explores systematically the neighborhoods obtained through the general movements described above and by setting the above parameters to some specific values.


## 5.2. Movements and Neighborhood Structures

We begin by describing in detail the procedures that define each one of the four movements referred to above. These movements will be denoted byM1, M2, M3, and M4, respectively.(A) MovementM1
(1)
Select the piecep:
Letk1=argminl∈{1,…,|S|}{ul:ul≥umin,ul∈U} and k2=argmaxl∈{1,…,|S|}{ul:ul≤umax,ul∈U};LetP be the set of the q pieces from the subsequence (sk1,…,sk2) with the smallest fitness in F;Choose a piecep from P;(2)
Select the piecep′:
LetC be the set of pieces that are not in the sequence S;LetP′ be the set of the r pieces of C with the best fitness when placed on the hide right after sk1-1 following the steps (c) and (d) of the heuristic;Choose a piecep′ from P′;(3)
Update the sequenceS:
LetGj be the group of the piece p and i the index of p in Gj, and let k3 be the index of (j,i) in S corresponding to the chosen piece p;LetGj′ be the group of the piece p′ and i′ the index of p′ in Gj′;Remove the subsequence(sk3,…,s|S|) from S;(4)
Place the pieces of the sequence(s1,…,sk3-1,(j′,i′)) on the hide following the steps (c) and (d) of the constructive heuristic (if a piece of the sequence cannot be placed on the hide, update S by removing this piece from the sequence);(5)
Fill the hide (and complete the sequenceS) using the constructive heuristic.
Note that if k3=1, then the subsequence (s1,…,sk3-1) is an empty vector.The movement M2 differs from M1 only on the steps (3) and (4). As happens in M1, the piece p is replaced in the current sequence S by another (p′) with a better fitness and that is not in S, while the rest of the sequence from p forward remains unchanged. The pieces of the new sequence are placed on the hide using the steps (c) and (d) of the constructive heuristic. When all these pieces have been placed (or discarded eventually if they do not fit on the hide), the complete heuristic is used (eventually) to fill the empty spaces that may remain.(B) MovementM2
(1)
Select the piecep: similar to step (1) of M1;(2)
Select the piecep′: similar to step (2) of M1;(3)
Update the sequenceS:
LetGj be the group of the piece p and i the index of p in Gj, and let k3 be the index of (j,i) in S corresponding to the chosen piece p;LetGj′ be the group of the piece p′ and i′ the index of p′ in Gj′;Replace(j,i) in the position k3 of the sequence by (j′,i′), that is,(5.5)S=(s1,…,sk3-1,(j′,i′),sk3+1,…,s|S|);(4)
Place the pieces of the new sequenceS on the hide following the steps (c) and (d) of the constructive heuristic (if a piece of the sequence cannot be placed on the hide, update S by removing this piece from the sequence);(5)
Fill the hide (and complete the sequenceS) using the constructive heuristic.In the movement M3, the piece p′ is selected from the subsequence of S starting from p and up to the end of the sequence. The pieces p and p′ are swapped in the sequence S, and the pieces of the resulting sequence are placed using the steps (c) and (d) of the heuristic. Again, the constructive heuristic is used at the end of the process to fill the empty spaces.(C) MovementM3
(1)
Select the piecep: similar to step (1) of M1;(2)
Select the piecep′:
LetP′ be the set of the r pieces of S from the chosen piece p up to the end of S with the best fitness when placed on the hide right after sk1-1 following the steps(c) and (d) of the heuristic;Choose a piecep′ from P′;(3)
Update the sequenceS:
LetGj  be the group of the piece p and i the index of p in Gj, and let k3 be the index of (j,i) in S corresponding to the chosen piece p;LetGj′ be the group of the piece p′ and i′ the index of p′ in Gj′, and let k4 be the index of (j′,i′) in S corresponding to the chosen piece p′;Swapsk3 and sk4 in S, that is,(5.6)S=(s1,…,sk3-1,sk4,sk3+1,…,sk4-1,sk3,sk4+1,s|S|);(4)
Place the pieces of the new sequenceS on the hide following the steps (c) and (d) of the constructive heuristic (if a piece of the sequence cannot be placed on the hide, update S by removing this piece from the sequence);(5)
Fill the hide (and complete the sequenceS) using the constructive heuristic.
Here, we assume that k3<|S|, otherwise it is clear that p′ will not exist.The fourth movement consists in removing the piece p from the sequence S and placing the remaining pieces from this piece forward using the constructive heuristic.(D) MovementM4
(1)
Select the piecep: similar to step (1) of M1;(2)
Update the sequenceS:
LetGj be the group of the piece p and i the index of p in Gj, and let k3 be the index of (j,i) in S corresponding to the chosen piece p;Removesk3 from S, that is, S=(s1,…,sk3-1,sk3+1,…,s|S|);(3)
Place the pieces of the new sequenceS on the hide following the steps (c) and (d) of the constructive heuristic (if a piece of the sequence cannot be placed on the hide, update S by removing this piece from the sequence);(4)
Fill the hide (and complete the sequenceS) using the constructive heuristic.The objective of these movements is to explore different neighborhoods of the current solutionL that are all composed by solutions obtained from L by removing one of its pieces with a bad fitness, and replacing it (eventually) by another piece with a better fitness. They differ essentially from each other in the way the piece p is treated. Note that while in M1, M2, and M3, the piece p is replaced by another that leads to a better fitness (by definition), there is no guarantee that the piece sk3+1 in M4 will improve the fitness of the piece p.The movementM1 is the most computationally expensive among the four movements, since it forces to repeat the complete heuristic right after p has been exchanged. In the other movements, the step (b) of the heuristic consisting in the selection of the next piece to place is not applied, while the pieces of the new sequence S are being placed. The heuristic is applied in its entirety only after all these pieces have been placed on the hide. Typically, the number of iterations at this stage is small. The movements M2 and M3 vary essentially on the source from which p′ is selected, either from the sequence or not. The movement M4 is the simplest movement. The neighborhoods of a solution L defined through M4 are composed by |P| solutions. This movement is proposed as a fast strategy that aims at removing a piece with a bad fitness, letting the heuristic complete the layout starting from its immediate successor sk3+1 in S.Each movement will be associated to a specific neighborhood. We will denote the neighborhoods of a solutionL obtained through Mi by Ni(L), i=1,…,4. The neighborhoods N1(L), N2(L), and N3(L) of a solution L consists in the solutions generated by taking every piece p∈P, and for each one these pieces by replacing (or swapping) it by every piece p′∈P′, and then by applying the steps (3) to (5) of M1, M2 and M3, respectively. The neighborhood N4(L) of a solution L is composed by all the solutions obtained from L by removing each one of the pieces of P, and by applying the steps (2) to (4) of M4. These neighborhoods depend on different parameters, namely, umin and umax that determine the subpart of the sequence from which the pieces of P are selected, and the parameters q and r that determine the size of the sets P and P′, respectively. Specific neighborhoods can be obtained from these general definitions by setting these parameters to given values. To explore in a systematic way the neighborhoods induced by these general definitions, we developed an algorithm based on the VNS framework described in [8]. The details of this approach are given in the following section.


## 5.3. Variable Neighborhood Search

The VNS metaheuristic defines a general framework for optimization based on the systematic exploration of different neighborhoods. It is a local search metaheuristic that allows for the escape from local optima by switching among the neighborhoods. It relies on the simple observation that a local optimum in a given neighborhood may not remain optimal in another neighborhood. Different variants are defined from this general framework, such as the variable neighborhood descent algorithm and the variable neighborhood decomposition search procedure. In [16], Hansen et al. reviewed different possible implementations of the VNS metaheuristic. These schemes are general enough to allow for different practical implementations. In this paper, we describe an implementation of the VNS metaheuristic based on the basic approach. To improve the efficiency of our approach, we adapted some components of the basic scheme, essentially in the local search phase. A computational study was performed to tune the resulting algorithm, to identify promising sets of parameters and to evaluate the impact of each neighborhood in the quality of the solutions. The results of this study are provided in Section 6.Letv(x) denote the value of a solution x. The general steps of the basic VNS are described in Algorithm 1 for a minimization problem.Algorithm 1
Input:tmax neighborhood structures Nt, t=1,…,tmax;A stopping criterion;(1) Initialization:x:=findInitialSolution ();(2) Repeat the following steps until the stopping criterion is met:(a)t:=1;(b) Repeat the following steps untilt=tmax:x′:=shaking(x, t);x′′:=localSearch(x′,t);if v(x′′)<v(x) thenx:=x′′;t:=1;elset:=t+1;The output of this algorithm is the incumbent solutionx. The procedure findInitialSolution generates an initial solution for the problem which becomes also the first incumbent solution. At each iteration, a solution is generated randomly from the tth neighborhood of x through the shaking procedure. A local optimum is then sought in this tth neighborhood space through the local search procedure localSearch. If the value of this local optimum is better than the value of the incumbent solution, the incumbent is updated and the search is resumed starting from the first neighborhood structure and with this new incumbent. If it is worse or equal than the value of the incumbent solution, the local search procedure is then applied on the neighborhood Nt+1. The process repeats until the stopping criterion is finally met. Note that this general definition allows for different implementations. For instance, the strategy used to switch between two neighborhood structures may be different from the sequential scheme followed in the basic VNS described above. Similarly, the criterion used to accept a local optimum and move to the corresponding solution may not be based (only) on the value of this local optimum.Our implementation of the basic VNS for the general LNP is described next. The neighborhood structuresNi refer to the structures introduced in the previous section. Furthermore, we denote by (umin,ij,umax,ij) the jth pair of lower and upper bounds (umin,umax) for the value of the material usage associated to the neighborhood Ni, which define the subpart of the sequence from which the pieces of P are selected. The parameters qij and rij will be used to denote the general parameters q and r introduced in Section 5.1 and associated to the jth neighborhood defined from Ni. For each Ni, i=1,…,4, let tNi denote the number of parameter sets that are considered, each one consisting on given values for the parameters (umin,ij,umax,ij), qij, and rij, j=1,…,tNi. Each one of these parameter sets defines a specific neighborhood structure within one of the general neighborhoods Ni, i=1,…,4 (whose precise definition depends on this set of parameters). In practice, ∑i=14tNi neighborhood structures are effectively considered in our algorithm. Let tmax=∑i=14tNi. For the sake of clarity, in our description of our VNS algorithm given in Algorithm 2, we will index these neighborhoods sequentially using an index t such that t=1,…,tmax.Algorithm 2
Input:For eachNi, i=1,…,4, tNi sets of parameters (umin,ij,umax,ij), qij and rij, j=1,…,tNi,such thattmax=∑i=14tNi (the resulting neighborhood structures will be indexed with theindext, with t=1,…,tmax);A limittlimit on the total computing time;(1) Initialization:L:=findInitialSolution();(2) Repeat the following steps untilcpuTime()≥tlimit:(a)t:=1;(b) Repeat the following steps untilt=tmax:L′:=shaking(L, t);L′′:= first Improvement (L′,t);if v(L′′)<v(L) thenL:=L′′;t:=1;elset:=t+1;The initial layoutL is generated using the constructive heuristic described in Section 4. The neighborhood structures used in the shaking phase and in the local search procedure are the same. In our implementation, we used a first improvement local search procedure. To further accelerate this procedure, we restrict the search to a subpart of the neighborhood of the solution L′. Indeed, whenever q (the size of the set P of pieces to exchange, swap with others, or remove) is greater than 1, we explore only the neighbors obtained by choosing randomly one piece p of P, and by taking all the pieces p′ of P′ in the case of N1, N2, and N3. Note that to generate a neighboring solution, we have to use the constructive heuristic. The heuristic is computationally expensive, namely, because of the computation of the NFPs and IFPs, even if, in practice, the heuristic is applied only on the subpart of the sequence that was changed, since the head of the sequence that was kept unchanged produces exactly the same partial layout. Finally, the execution of the algorithm is stopped after a given time limit has been reached.


## 6. Computational Experiments

Two sets of experiments were conducted: one to compare possible strategies for our VNS algorithm and to tune the parameters of the algorithm and another to evaluate the performance of the best approach that emerged from the tuning experiments on a large set of real instances. In this section, we report on the results of these experiments. The instances (the hides and the pieces) came from the company that is used as a case study in this paper, and in particular from two car models whose seats are produced by this company. We used the data corresponding to one of the seats for each car model. The total number of different pieces of the first car model was equal to 23, while 22 different pieces were used for the second car model. The pieces can be rotated, but since each rotation implies the computation of a new set of NFPs and IFPs, we restricted the rotations to multiples of 45 degrees.The experiments were conducted on a PC with an Intel Core i3 CPU with 2.27 GHz and 4 GB of RAM. The algorithms were coded in C++, and the computational geometry routines were implemented using CGAL 3.7 (Computational Geometry Algorithms Library).


### 6.1. Tuning the VNS Algorithm

The tuning experiments focus on the different aspects and parameters of our VNS algorithm. The objectives of these experiments are summarized next:(a)
evaluating the impact of each neighborhood on the quality of the layouts that are generated;(b)
comparing different strategies for setting the intervals of material usage(umin,ij,umax,ij) from which the pieces of P are selected;(c)
evaluating alternative values for the parametersqij, that is, the size of the sets P from which the pieces that are exchanged, swapped with another, or removed are selected;(d)
evaluating alternative values for the parametersrij, that is, the size of the set P′ of pieces that will be inserted in the sequence;(e)
comparing the quality of the layout when the neighborhoods are explored by different orders.For this purpose, we used 24 instances from the two car models referred to above. From the first car model, we generated 4 production orders with different subsets of pieces from the global set of 23 pieces. The numberm of different pieces for each order was, respectively, equal to 8, 12, 15, and 23. The demand for each piece was set equal to 100. For each order, we repeated the algorithm on 3 different leather hides. In practice, that led to 12 different instances of the LNP. From the second car model, we generated 12 different orders in the same way. The number of different pieces varied from 5 to 22 (m∈{5,7,8,9,12,14,20,22}). Again, the demand for each piece was equal to 100. We used the same hide for each production order. In all the cases, the production orders were larger than the hide. The pieces of the production orders completely filled the hide, and there were always pieces that remained to be cut. Our goal was to evaluate the capacity of the VNS algorithm to find good quality layouts, that is, with a high material usage on each single hide. The limit on the total computing time was set to 600 s. In the company, the pieces of a production order are placed on the hide by two operators. The average time used by these human nesters is typically around 600 s. In the subsequent tables, the instances related to the first car model are identified by the index of the corresponding production order x and the index y of the hide as follows: x;y. The instances associated to the second car model are identified by the index of the corresponding production order. The column Inst. in these tables identifies the problem instance.In Table1, we give the results obtained when different neighborhood structures are used in the VNS algorithm. The objective is to evaluate whether the best layouts tend to be found by exploring a particular neighborhood, or if all the neighborhoods contribute in the same way to the quality of the final layouts. Nine strategies were explored: using all the neighborhood structures Ni with tNi=2, qi1=1 and qi2=3, i=1,…,4; using the neighborhood structure N1 with tN1=1 and q11=1 (that consists in exchanging, swapping, or removing the piece with the worst fitness within a given interval defined by the parameters umin,11 and umax,11), and similarly using only one of the neighborhoods N1 with q11=3, N2 with q21=1, N2 with q21=3, N3 with q31=1 or N3 with q31=3, N4 with q41=1 or N4 with q41=3. For all the cases except the first, we assume that tNi=1, i=1,…,4, that is, only one specific neighborhood structure was used for each one of these cases. In all these configurations, the other parameters of the neighborhoods were set as follows: rij=3 and (umin,ij,umax,ij)=(10%,0.95×MU%), j=1,…,tNi,i=1,…,4, with MU being the percentage of material usage achieved in the initial layout. In the case where all the neighborhoods were used, we explored them by increasing value of their indexes. Note that we considered explicitly the neighborhood structures Ni with qij=1, i=1,…,4, because we observed that the best results were usually obtained when this neighborhood was included in the search.Table 1
Evaluating the impact of the neighborhood structures (number of times the best layout is found with the corresponding strategy).
NeighborhoodInst.AllN1N1N2N2N3N3N4N4q11=1q11=3q21=1q21=3q31=1q31=3q41=1q41=3Car model 11; 131; 2211; 3212; 1122; 21112; 31113; 11113; 2213; 31114; 1214; 2214; 321Total1624341303Car model 2132332142151116127128111912102111211221Total1455041331The tests were repeated three times for each instance and configuration. A total of 648 runs were performed (4.5 days of total computing time). In Table1, we indicate the number of times each configuration provided the best layouts for the corresponding instance. These results show that the best layouts are more often generated when all the neighborhoods are used. Indeed, 30 of the 72 best layouts are found with this configuration, while the second-best strategy (N1 with q11=3) reaches the best layout only in 9 cases.The best strategies identified at some step of our tuning experiments are always used in the following tests. For instance, the strategy that consists in using all the neighborhoods were used in the next experiments.The second set of tuning experiments was conducted to compare some alternative strategies for setting the values of the lower and upper bounds(umin,ij,umax,ij) that are used on the material usage to define the subsequences from which the pieces of P are selected. We analyzed five strategies. Broadly speaking, we analyzed whether the best results are achieved by using a single or more than one interval for each general neighborhood structure Ni, i=1,…,4, and we tried to identify where this interval should be located. The parameters that characterize the five approaches are given next:(1)
tNi=2,i=1,…,4:
qi1=1, ri1=3, (umin,i1,umax,i1)=(50%,0.95×MU%);qi2=3, ri2=3, (umin,i2,umax,i2)=(50%,0.95×MU%);(2)
tNi=2,i=1,…,4:
qi1=1, ri1=3, (umin,i1,umax,i1)=(10%,50%);qi2=3, ri2=3, (umin,i2,umax,i2)=(10%,50%);(3)
tNi=2,i=1,…,4:
qi1=1, ri1=3, (umin,i1,umax,i1)=(10%,0.95×MU%);qi2=3, ri1=3, (umin,i2,umax,i2)=(10%,0.95×MU%);(4)
tNi=4,i=1,…,4:
qi1=1, ri1=3, (umin,i1,umax,i1)=(10%,50%);qi2=1, ri2=3, (umin,i2,umax,i2)=(50%,0.95×MU%);qi3=3, ri3=3, (umin,i3,umax,i3)=(10%,50%);qi4=3, ri4=3, (umin,i4,umax,i4)=(50%,0.95×MU%);(5)
tNi=4, i=1,…,4:
qi1=1, ri1=3, (umin,i1,umax,i1)=(25%,50%);qi2=1, ri2=3, (umin,i2,umax,i2)=(50%,0.95×MU%);qi3=3, ri3=3, (umin,i3,umax,i3)=(25%,50%);qi4=3, ri4=3, (umin,i4,umax,i4)=(50%,0.95×MU%).The first strategy consists in using a single neighborhood for each general structureNi, i=1,…,4, and in selecting the pieces of the set P preferentially from the tail of the sequence, while in the second strategy, the pieces of P are chosen from the other part of the sequence. The third strategy encompasses both the two previous strategies. It consists in selecting the pieces of P from almost all the sequence except its very beginning. In the fourth and fifth strategies, we explore the use of two neighborhoods for each general neighborhood structure Ni, Ni, i=1,…,4, based on different intervals (umin,ij,umax,ij). The fourth strategy combines the intervals used in the first and second strategy. In the fifth strategy, we try to explore neighborhoods where the head of the sequences is kept unchanged. Indeed, the pieces that are at the head of the sequence are placed first, and they lead usually to a good fitness when compared to the other pieces of the sequence.The tests were executed only once for each instance and configuration. A total of 120 runs were performed (0.83 days of total computing time). The results of these experiments are given in Table2. Again, we report on the number of times that a given strategy led to the best solution for each instance. For the first car model, the results are nearly the same for all the strategies, while for the second car model, the second strategy clearly dominates the other. When the pieces of P are allowed to be selected from the first part of the sequence (as happens in the second strategy), the layouts that are in the neighborhood of the current solution L may be quite different from L, since a large part of the layout may have to be rebuilt using the constructive heuristic if the piece p that is selected is at the very beginning of the sequence. That allows for the exploration of more diverse solutions, and thus it increases the possibilities of finding a layout with an improved material usage.Table 2
Evaluating the impact of the parameters(umin,ij,umax,ij) (number of times the best layout is found with the corresponding strategy).
Inst.Definition of(umin,ij,umax,ij)12345Car model 11; 111; 211; 312; 112; 212; 313; 113; 213; 314; 114; 214; 31Total22323Car model 2112131415161718191101111121Total36210The third set of tuning experiments focus on the parametersqij of the neighborhood structures. The corresponding results are reported in Table 3. For each general neighborhood structure, we defined two specific structures, that is, tNi=2, i=1,…,4. The structures differ in the value of the parameter qij. We used qi1=1 and qi2=3 in one case, and qi1=1 and qi2=5 in the other, for i=1,…,4. The parameters ri1 and ri2 were set equal to 3, while the intervals (umin,ij,umax,ij), j∈{1,2}, were selected according to the second strategy described above. In summary, we used two different values for the parameter qi2, namely, qi2=3 and qi2=5, i=1,…,4. The objective was to analyze whether an increase in the value of this parameter could lead to better layouts. The tests were repeated three times for each instance and configuration. A total of 144 runs were performed (one day of computing time). We can observe from Table 3 that the quality of layouts decreases as we increase the value of this parameter for both the car models.Table 3
Evaluating the impact of the parametersqij (number of times the best layout is found with the corresponding strategy).
Inst.qi2=3qi2=5Car model 11; 1121; 2121; 3212; 1032; 2212; 3303; 1303; 2123; 3304; 1124; 2304; 321Total2214Car model 2121212312421521612730821921101211211221Total2115To evaluate the impact of therij parameter, we conducted different experiments using the neighborhood structures corresponding to the following configurations:(1)
tNi=2,i=1,…,4:
qi1=1, ri1=1, (umin,i1,umax,i1)=(10%,50%);qi2=3, ri2=1, (umin,i2,umax,i2)=(10%,50%);(2)
tNi=2, i=1,…,4:
qi1=1, ri1=3, (umin,i1,umax,i1)=(10%,50%);qi2=3, ri2=3, (umin,i2,umax,i2)=(10%,50%);(3)
tNi=2, i=1,…,4:
qi1=1, ri1=5, (umin,i1,umax,i1)=(10%,50%);qi2=3, ri2=5, (umin,i2,umax,i2)=(10%,50%).The three configurations differ exclusively on the value of therij parameters. Here, our objective was to analyze the impact on the quality of the layouts when one increases or decreases the value of this parameter. The results are reported in Table 4. A total of 216 runs were performed (1.5 days of computing time). From these experiments, we can conclude that the best layouts are achieved when rij=3. The quality of the solutions gets worse whether we increase or decrease the value of this parameter for both the car models used in the experiments. Increasing the value of the parameters rij increases the number of neighboring solutions. However, from our experiments this larger variety of solutions does not reflect upon the quality of the final layouts.Table 4
Evaluating the impact of the parametersrij (number of times the best layout is found with the corresponding strategy).
Inst.rij=1rij=3rij=5Car model 11; 131; 2121; 332; 132; 2212; 333; 133; 2123; 334; 134; 2214; 33Total71712Car model 21122213214215216127381293102111312111Total6228Our last set of tuning experiments were conducted to evaluate the impact of the order by which the neighborhoods are explored on the quality of the final layouts. For this purpose, we used the best set of parameters identified in the previous experiments, and we tried 12 different sequences for the search, namely,(1)
N1, N2, N3, and N4;(2)
N2, N1, N3, and N4;(3)
N1, N3, N2, and N4;(4)
N2, N3, N1, and N4;(5)
N3, N1, N2, and N4;(6)
N3, N2, N1, and N4;(7)
N4, N1, N2, and N3;(8)
N4, N2, N1, and N3;(9)
N4, N1, N3, and N2;(10)
N4, N2, N3, and N1;(11)
N4, N3, N1, and N2;(12)
N4, N3, N2, and N1.The tests were performed only once for each instance and each configuration. A total of 288 runs were performed (2 days of computing time). The results are reported in Table5. From these results, we can observe that while some sequences never led to the best layouts (configuration 9 and 11), none of the other sequences clearly dominated all the others. The best results are obtained with the first and seventh sequences, which both generate the best layout for four instances.Table 5
Evaluating the impact of the order by which the neighborhoods are explored (number of times the best layout is found with the corresponding strategy).
Inst.Order of the neighborhoods123456789101112Car model 11; 111; 211; 312; 112; 212; 313; 113; 213; 314; 114; 214; 31Total111131310000Car model 2112131415161718191101111121Total302201100201


### 6.2. Computational Results

In this section, we report on the results obtained with our VNS algorithm on a large set of real instances. For these experiments, we used the best strategies and parameters identified from the previous tuning experiments. These configurations are summarized next:(i)
Use all the neighborhood structuresNi,i=1,…,4;(ii)
Explore the neighborhoods in the following order:N1,N2,N3,andN4;(iii)
tNi=2, i=1,…,4:
(a)
qi1=1, ri1=3, (umin,i1,umax,i1)=(10%,50%);(b)
qi2=3, ri2=3, (umin,i2,umax,i2)=(10%,50%).We generated 22 production orders using the set of pieces associated to the first car model in the same way as in the tuning experiments. The numberm of different pieces varies from 5 to 23. Each production order is cut from three different hides, and hence, we have 66 instances defined from this car model. Forty-one production orders were generated using the pieces of the second car model. Since only one hide is used for each production order, in this case, we have 41 different instances derived from the second car model. In Table 6, we describe the characteristics of the production orders. In summary, our set of instances is composed of 107 different problem instances. As in the tuning experiments, we used a time limit of 600 s. For each instance, the tests were repeated four times. Hence, 428 runs were performed which took almost 3 days of computing time.Table 6
Instances.
Car modelOrderm11,…,556,…,10811,…,151016,…,181219,…,2115222321,…,10511,…,20821,…,301031,…,351236,…,40154122The results for the first car model are reported in Tables7 and 8. Those for the second car model are given in Table 9. The column Inst. in these tables identifies the problem instance. For the first car model, we use the same notation to identify the instances as in the tables for the tuning experiments, namely, x;y, where x is the index of the production order and y the index of the hide. The tables present the results obtained with the constructive heuristic used to generate the first layout, and the results achieved by the VNS algorithm after 200 s, 400 s, and 600 s of computing time. The column Pieces indicates the number of pieces placed on the hide. Column Usage gives the percentage of material usage achieved by the corresponding layout. Column t is used in the part associated to the constructive heuristic to indicate the time (in seconds) needed by the heuristic to generate the initial solution. The line avg. gives the average values for the group of instances that is above.Table 7
Evaluating the performance of the VNS algorithm: car model 1 (part I).
Initial solutionVNSInst.After 200 sAfter 400 sAfter 600 sPiecesUsagetPiecesUsagePiecesUsagePiecesUsage1; 12259,5312,8622,5059,6125,0060,0127,5061,091; 22357,9315,0427,5059,3129,7559,9331,0060,141; 32561,5719,1225,0062,3425,7562,9526,7563,122; 11656,1113,0116,5057,6318,0057,9020,7558,972; 21754,4314,4319,0055,6724,2558,2725,2558,952; 32055,7718,2520,5057,1823,0059,0425,0060,243; 1946,029,0014,7554,6015,5055,2617,2555,193; 21451,9211,9815,7552,8418,0054,7818,0054,913; 31854,7714,8918,5056,0422,0057,4123,5059,764; 11251,6811,0115,7555,3116,0056,1016,0056,104; 21350,1312,4516,0052,5818,2554,6819,0055,514; 31551,8716,3115,7552,8218,7556,9621,0058,815; 11351,519,0621,0060,6725,2560,8124,5061,775; 21855,3811,8721,2558,0024,2559,2427,2560,305; 32660,9916,8626,0060,9934,5061,5334,7561,56avg.17,4054,6413,7419,7257,0422,5558,3223,8359,106; 12059,1216,4920,5059,6723,5061,2825,7562,276; 22461,5618,7224,7561,8225,0062,2625,0062,266; 32360,3622,3924,5060,9925,5061,7525,7562,537; 11757,5018,4318,2559,0719,2561,7719,7562,227; 21957,5820,8520,0059,1022,7559,3424,7560,777; 32258,6126,4624,0061,2724,2561,5524,2561,558; 12058,9215,5321,0059,9022,7561,6624,2562,468; 22260,0619,5322,7560,3223,0061,0325,5061,578; 32460,5123,0624,0060,5125,2560,9327,7563,109; 11250,7816,5813,7554,0414,7554,4715,2554,909; 21350,1319,3313,0050,1317,2557,0118,5058,059; 31450,4023,8114,5051,1318,0054,8821,0058,7810; 12058,9215,2621,0060,5522,5061,9027,7562,5210; 22360,6519,4024,5063,0625,2564,0125,2564,0110; 32561,3723,4827,2562,4128,7563,4729,0063,69avg.19,8757,7619,9520,9258,9322,5260,4923,9761,38Table 8
Evaluating the performance of the VNS algorithm: car model 1 (part II).
Initial solutionVNSInst.After 200 sAfter 400 sAfter 600 sPiecesUsagetPiecesUsagePiecesUsagePiecesUsage11; 12058,5119,5020,0059,9923,0061,0629,0061,2711; 22460,4823,7624,0060,4824,0060,4824,0060,4811; 32259,4528,6722,0059,4525,0061,0327,5062,6212; 11960,1821,6320,2561,6122,0061,7928,5062,5412; 22260,5224,6922,0060,9424,0062,2425,7562,5312; 32561,3831,0225,0061,3825,0061,3830,7564,3313; 11958,1918,2820,5060,2821,2561,9826,0064,4213; 22158,2721,6421,0058,2723,7559,6126,7561,5613; 32359,5325,8623,0059,5325,0062,7528,2563,7314; 12060,1920,7420,0060,1925,2563,7725,2563,7714; 22359,9425,2223,0059,9424,7560,5326,5061,1114; 32359,6229,8923,0059,6225,5061,5327,7563,0715; 11958,1217,7520,0059,1724,7562,7325,5063,7815; 22461,5522,0524,0061,5526,0062,4126,0062,4115; 32359,8125,2123,0059,8126,2563,9929,2564,42avg.21,8059,7223,7322,0560,1524,3761,8227,1262,8016; 11958,1924,5719,7559,4420,5060,7122,2562,7616; 22158,2729,6921,0058,2724,0059,8226,0060,6716; 32359,5337,4223,0059,5324,5059,7527,2563,6517; 11959,1523,9119,2559,6023,0061,8125,0061,9417; 22159,0928,6721,0059,0923,5061,7624,7562,5517; 32359,9635,1223,0059,9625,0064,1926,7564,2118; 11958,1222,1520,0059,6521,0060,4024,5062,6318; 22461,5527,9924,0061,5525,7563,2326,0063,2418; 32360,3333,5823,0060,3324,5062,9726,2562,17avg.21,3359,3529,2321,5659,7123,5361,6325,4262,6519; 14969,6838,4849,0069,6849,2569,9450,0071,4419; 24567,2741,8245,0067,2746,5067,4846,2567,5419; 34766,5751,3047,0066,5747,0066,5745,2568,7120; 17673,1751,4276,0073,1778,0073,5580,5074,2120; 26972,2952,9669,0072,2969,0072,2966,7572,3420; 38172,4264,9381,0072,4281,0072,4295,7572,6621; 14869,0538,0448,0069,0546,2569,5644,0070,8421; 24367,5740,6843,0067,5743,0067,5743,0067,5721; 34666,7848,1546,0066,7845,7566,9550,5068,05avg.56,0069,4247,5356,0069,4256,1969,5958,0070,3722; 18473,8899,3084,0073,8884,0073,8884,6774,0822; 28174,51100,3781,0074,5181,0074,5181,0074,5222; 39073,78116,7690,0073,7890,0073,7890,0073,86avg.85,0074,06105,4885,0074,0685,0074,0685,2274,15Table 9
Evaluating the performance of the VNS algorithm: car model 2.
Initial solutionVNSInst.After 200 sAfter 400 sAfter 600 sPiecesUsagetPiecesUsagePiecesUsagePiecesUsage12554,8121,9626,5056,2628,5057,5629,7558,1723153,1832,0533,0055,6934,0057,2935,0058,6332655,2022,6927,0056,0729,2557,8631,5058,9442955,7224,8430,2556,5330,7557,6033,7559,0653655,8434,1135,7555,9435,7555,9436,5056,5063461,8233,1137,0063,8637,2564,2937,2564,4072960,8023,0029,7561,4131,5062,6430,2563,6185158,2258,7851,0058,2253,0060,0854,0060,6095457,0765,5654,0057,0755,2559,5157,2560,84103361,5629,5134,7562,5834,7563,6234,5064,01avg.34,8057,4234,5635,9058,3637,0059,6437,9860,48112254,7024,3224,5057,7824,5058,3624,5058,53123954,9952,3839,0054,9940,5055,8940,7557,94134154,8652,2141,0054,8641,7555,3743,7557,58143960,9853,8939,0060,9841,0062,1141,0062,11153952,8658,4839,0053,0639,0053,6739,5053,91163363,4434,3333,0063,4433,0063,9333,2563,94173562,4933,2335,0063,2135,7564,2938,0065,83185258,9356,8252,0058,9354,0060,3154,7560,42195055,9576,1450,0055,9550,5057,2851,2558,41202960,3031,7330,5060,8632,5061,8436,5063,73avg.37,9057,9547,3538,3058,4139,2559,3040,3360,24212557,3833,1925,0057,3828,0060,9627,7561,42223954,9960,1439,0054,9939,2555,3841,2556,86235059,0769,4350,0059,0750,0059,0750,0059,17243164,5337,2331,0064,5331,5064,6731,5064,67253952,8070,5739,0052,8038,5055,2439,5056,01263062,5035,5032,0063,0936,2564,4537,7564,75273364,8639,7833,5065,1435,7566,4136,0066,54285056,6974,6550,0056,9150,0057,0051,0057,71293961,5063,9539,0061,5039,7561,7941,5062,84303262,1141,7132,2562,2533,0062,7639,0065,52avg.36,8059,6452,6137,0859,7738,2060,7739,5361,55313161,4143,9831,0061,4135,0063,4236,7563,84323954,3573,2539,0054,3539,0054,3539,5055,97334859,1677,4748,0059,1649,0059,6850,0060,21343165,2145,0931,0065,2131,0065,2131,7565,33355460,7491,8954,0060,7454,0060,7454,0060,74avg.40,6060,1766,3440,6060,1741,6060,6842,4061,22363161,9953,7831,0061,9935,0064,0738,0064,18374859,4491,2048,0059,4448,0059,4449,5060,03384756,75105,1247,0056,7548,5057,4053,0058,91393264,7251,6232,0064,7232,0064,7238,5067,23405460,42106,4754,0060,4254,0060,4254,0060,42avg.42,4060,6681,6442,4060,6643,5061,2146,6062,15413464,8773,8434,0064,8734,0064,8739,0066,89On average, the VNS algorithm is always able to improve the results obtained by the constructive heuristic. In Table7, the best improvement is achieved for the instance 5;1 with an increase of 10,26% in the total material usage. The VNS algorithm improves the initial solution quickly. Indeed, after 200 s of computation, the algorithm was already able to find a layout that is better than the initial solution. Furthermore, the solution is improved both after 400 s and 600 s of computation. These improvements tend to be less significant for the instances whose results are given in Table 8. On average, the results are always better than the initial solution, but the VNS algorithm takes more time to find a solution that is clearly better than this first solution. In this table, the best improvement is achieved for the instance 13;1 with an increase of 6,23%. When the variety of pieces is larger, the constructive heuristic is usually able to find layouts that have already a high material usage. In these cases, the space for improvements is smaller, but the VNS algorithm is still able to improve the initial layout. For the hardest instances, those for which the constructive heuristic cannot find a good quality layout, the VNS algorithm appears to work as an effective improvement procedure. Not surprisingly, the time needed by the constructive heuristic to find an initial layout increases with m, the number of different pieces in the instance. This is due in part to the necessity of recomputing the NFPs and IFPs for each piece right after a piece has been placed on the hide. Note that the material usage achieved in the final layouts are comparable to the results obtained by human nesters. Furthermore, these results are achieved within the same time limit as that needed by two human nesters. One operator would need around 1200 s (twice our time limit) to achieve comparable results.Similar results are obtained for the instances derived from the second car model. The VNS algorithm was always able to improve the initial solution except for two instances (35 and 40). In many cases, a better layout is found right after 200 s of computation. The best improvement is obtained for the instance 2 with an increase of 5,46%. Even in the instance with the largest variety of pieces (instance 41) the VNS algorithm was able to improve by 2,02% the material usage achieved in the first layout.


## 6.1. Tuning the VNS Algorithm

The tuning experiments focus on the different aspects and parameters of our VNS algorithm. The objectives of these experiments are summarized next:(a)
evaluating the impact of each neighborhood on the quality of the layouts that are generated;(b)
comparing different strategies for setting the intervals of material usage(umin,ij,umax,ij) from which the pieces of P are selected;(c)
evaluating alternative values for the parametersqij, that is, the size of the sets P from which the pieces that are exchanged, swapped with another, or removed are selected;(d)
evaluating alternative values for the parametersrij, that is, the size of the set P′ of pieces that will be inserted in the sequence;(e)
comparing the quality of the layout when the neighborhoods are explored by different orders.For this purpose, we used 24 instances from the two car models referred to above. From the first car model, we generated 4 production orders with different subsets of pieces from the global set of 23 pieces. The numberm of different pieces for each order was, respectively, equal to 8, 12, 15, and 23. The demand for each piece was set equal to 100. For each order, we repeated the algorithm on 3 different leather hides. In practice, that led to 12 different instances of the LNP. From the second car model, we generated 12 different orders in the same way. The number of different pieces varied from 5 to 22 (m∈{5,7,8,9,12,14,20,22}). Again, the demand for each piece was equal to 100. We used the same hide for each production order. In all the cases, the production orders were larger than the hide. The pieces of the production orders completely filled the hide, and there were always pieces that remained to be cut. Our goal was to evaluate the capacity of the VNS algorithm to find good quality layouts, that is, with a high material usage on each single hide. The limit on the total computing time was set to 600 s. In the company, the pieces of a production order are placed on the hide by two operators. The average time used by these human nesters is typically around 600 s. In the subsequent tables, the instances related to the first car model are identified by the index of the corresponding production order x and the index y of the hide as follows: x;y. The instances associated to the second car model are identified by the index of the corresponding production order. The column Inst. in these tables identifies the problem instance.In Table1, we give the results obtained when different neighborhood structures are used in the VNS algorithm. The objective is to evaluate whether the best layouts tend to be found by exploring a particular neighborhood, or if all the neighborhoods contribute in the same way to the quality of the final layouts. Nine strategies were explored: using all the neighborhood structures Ni with tNi=2, qi1=1 and qi2=3, i=1,…,4; using the neighborhood structure N1 with tN1=1 and q11=1 (that consists in exchanging, swapping, or removing the piece with the worst fitness within a given interval defined by the parameters umin,11 and umax,11), and similarly using only one of the neighborhoods N1 with q11=3, N2 with q21=1, N2 with q21=3, N3 with q31=1 or N3 with q31=3, N4 with q41=1 or N4 with q41=3. For all the cases except the first, we assume that tNi=1, i=1,…,4, that is, only one specific neighborhood structure was used for each one of these cases. In all these configurations, the other parameters of the neighborhoods were set as follows: rij=3 and (umin,ij,umax,ij)=(10%,0.95×MU%), j=1,…,tNi,i=1,…,4, with MU being the percentage of material usage achieved in the initial layout. In the case where all the neighborhoods were used, we explored them by increasing value of their indexes. Note that we considered explicitly the neighborhood structures Ni with qij=1, i=1,…,4, because we observed that the best results were usually obtained when this neighborhood was included in the search.Table 1
Evaluating the impact of the neighborhood structures (number of times the best layout is found with the corresponding strategy).
NeighborhoodInst.AllN1N1N2N2N3N3N4N4q11=1q11=3q21=1q21=3q31=1q31=3q41=1q41=3Car model 11; 131; 2211; 3212; 1122; 21112; 31113; 11113; 2213; 31114; 1214; 2214; 321Total1624341303Car model 2132332142151116127128111912102111211221Total1455041331The tests were repeated three times for each instance and configuration. A total of 648 runs were performed (4.5 days of total computing time). In Table1, we indicate the number of times each configuration provided the best layouts for the corresponding instance. These results show that the best layouts are more often generated when all the neighborhoods are used. Indeed, 30 of the 72 best layouts are found with this configuration, while the second-best strategy (N1 with q11=3) reaches the best layout only in 9 cases.The best strategies identified at some step of our tuning experiments are always used in the following tests. For instance, the strategy that consists in using all the neighborhoods were used in the next experiments.The second set of tuning experiments was conducted to compare some alternative strategies for setting the values of the lower and upper bounds(umin,ij,umax,ij) that are used on the material usage to define the subsequences from which the pieces of P are selected. We analyzed five strategies. Broadly speaking, we analyzed whether the best results are achieved by using a single or more than one interval for each general neighborhood structure Ni, i=1,…,4, and we tried to identify where this interval should be located. The parameters that characterize the five approaches are given next:(1)
tNi=2,i=1,…,4:
qi1=1, ri1=3, (umin,i1,umax,i1)=(50%,0.95×MU%);qi2=3, ri2=3, (umin,i2,umax,i2)=(50%,0.95×MU%);(2)
tNi=2,i=1,…,4:
qi1=1, ri1=3, (umin,i1,umax,i1)=(10%,50%);qi2=3, ri2=3, (umin,i2,umax,i2)=(10%,50%);(3)
tNi=2,i=1,…,4:
qi1=1, ri1=3, (umin,i1,umax,i1)=(10%,0.95×MU%);qi2=3, ri1=3, (umin,i2,umax,i2)=(10%,0.95×MU%);(4)
tNi=4,i=1,…,4:
qi1=1, ri1=3, (umin,i1,umax,i1)=(10%,50%);qi2=1, ri2=3, (umin,i2,umax,i2)=(50%,0.95×MU%);qi3=3, ri3=3, (umin,i3,umax,i3)=(10%,50%);qi4=3, ri4=3, (umin,i4,umax,i4)=(50%,0.95×MU%);(5)
tNi=4, i=1,…,4:
qi1=1, ri1=3, (umin,i1,umax,i1)=(25%,50%);qi2=1, ri2=3, (umin,i2,umax,i2)=(50%,0.95×MU%);qi3=3, ri3=3, (umin,i3,umax,i3)=(25%,50%);qi4=3, ri4=3, (umin,i4,umax,i4)=(50%,0.95×MU%).The first strategy consists in using a single neighborhood for each general structureNi, i=1,…,4, and in selecting the pieces of the set P preferentially from the tail of the sequence, while in the second strategy, the pieces of P are chosen from the other part of the sequence. The third strategy encompasses both the two previous strategies. It consists in selecting the pieces of P from almost all the sequence except its very beginning. In the fourth and fifth strategies, we explore the use of two neighborhoods for each general neighborhood structure Ni, Ni, i=1,…,4, based on different intervals (umin,ij,umax,ij). The fourth strategy combines the intervals used in the first and second strategy. In the fifth strategy, we try to explore neighborhoods where the head of the sequences is kept unchanged. Indeed, the pieces that are at the head of the sequence are placed first, and they lead usually to a good fitness when compared to the other pieces of the sequence.The tests were executed only once for each instance and configuration. A total of 120 runs were performed (0.83 days of total computing time). The results of these experiments are given in Table2. Again, we report on the number of times that a given strategy led to the best solution for each instance. For the first car model, the results are nearly the same for all the strategies, while for the second car model, the second strategy clearly dominates the other. When the pieces of P are allowed to be selected from the first part of the sequence (as happens in the second strategy), the layouts that are in the neighborhood of the current solution L may be quite different from L, since a large part of the layout may have to be rebuilt using the constructive heuristic if the piece p that is selected is at the very beginning of the sequence. That allows for the exploration of more diverse solutions, and thus it increases the possibilities of finding a layout with an improved material usage.Table 2
Evaluating the impact of the parameters(umin,ij,umax,ij) (number of times the best layout is found with the corresponding strategy).
Inst.Definition of(umin,ij,umax,ij)12345Car model 11; 111; 211; 312; 112; 212; 313; 113; 213; 314; 114; 214; 31Total22323Car model 2112131415161718191101111121Total36210The third set of tuning experiments focus on the parametersqij of the neighborhood structures. The corresponding results are reported in Table 3. For each general neighborhood structure, we defined two specific structures, that is, tNi=2, i=1,…,4. The structures differ in the value of the parameter qij. We used qi1=1 and qi2=3 in one case, and qi1=1 and qi2=5 in the other, for i=1,…,4. The parameters ri1 and ri2 were set equal to 3, while the intervals (umin,ij,umax,ij), j∈{1,2}, were selected according to the second strategy described above. In summary, we used two different values for the parameter qi2, namely, qi2=3 and qi2=5, i=1,…,4. The objective was to analyze whether an increase in the value of this parameter could lead to better layouts. The tests were repeated three times for each instance and configuration. A total of 144 runs were performed (one day of computing time). We can observe from Table 3 that the quality of layouts decreases as we increase the value of this parameter for both the car models.Table 3
Evaluating the impact of the parametersqij (number of times the best layout is found with the corresponding strategy).
Inst.qi2=3qi2=5Car model 11; 1121; 2121; 3212; 1032; 2212; 3303; 1303; 2123; 3304; 1124; 2304; 321Total2214Car model 2121212312421521612730821921101211211221Total2115To evaluate the impact of therij parameter, we conducted different experiments using the neighborhood structures corresponding to the following configurations:(1)
tNi=2,i=1,…,4:
qi1=1, ri1=1, (umin,i1,umax,i1)=(10%,50%);qi2=3, ri2=1, (umin,i2,umax,i2)=(10%,50%);(2)
tNi=2, i=1,…,4:
qi1=1, ri1=3, (umin,i1,umax,i1)=(10%,50%);qi2=3, ri2=3, (umin,i2,umax,i2)=(10%,50%);(3)
tNi=2, i=1,…,4:
qi1=1, ri1=5, (umin,i1,umax,i1)=(10%,50%);qi2=3, ri2=5, (umin,i2,umax,i2)=(10%,50%).The three configurations differ exclusively on the value of therij parameters. Here, our objective was to analyze the impact on the quality of the layouts when one increases or decreases the value of this parameter. The results are reported in Table 4. A total of 216 runs were performed (1.5 days of computing time). From these experiments, we can conclude that the best layouts are achieved when rij=3. The quality of the solutions gets worse whether we increase or decrease the value of this parameter for both the car models used in the experiments. Increasing the value of the parameters rij increases the number of neighboring solutions. However, from our experiments this larger variety of solutions does not reflect upon the quality of the final layouts.Table 4
Evaluating the impact of the parametersrij (number of times the best layout is found with the corresponding strategy).
Inst.rij=1rij=3rij=5Car model 11; 131; 2121; 332; 132; 2212; 333; 133; 2123; 334; 134; 2214; 33Total71712Car model 21122213214215216127381293102111312111Total6228Our last set of tuning experiments were conducted to evaluate the impact of the order by which the neighborhoods are explored on the quality of the final layouts. For this purpose, we used the best set of parameters identified in the previous experiments, and we tried 12 different sequences for the search, namely,(1)
N1, N2, N3, and N4;(2)
N2, N1, N3, and N4;(3)
N1, N3, N2, and N4;(4)
N2, N3, N1, and N4;(5)
N3, N1, N2, and N4;(6)
N3, N2, N1, and N4;(7)
N4, N1, N2, and N3;(8)
N4, N2, N1, and N3;(9)
N4, N1, N3, and N2;(10)
N4, N2, N3, and N1;(11)
N4, N3, N1, and N2;(12)
N4, N3, N2, and N1.The tests were performed only once for each instance and each configuration. A total of 288 runs were performed (2 days of computing time). The results are reported in Table5. From these results, we can observe that while some sequences never led to the best layouts (configuration 9 and 11), none of the other sequences clearly dominated all the others. The best results are obtained with the first and seventh sequences, which both generate the best layout for four instances.Table 5
Evaluating the impact of the order by which the neighborhoods are explored (number of times the best layout is found with the corresponding strategy).
Inst.Order of the neighborhoods123456789101112Car model 11; 111; 211; 312; 112; 212; 313; 113; 213; 314; 114; 214; 31Total111131310000Car model 2112131415161718191101111121Total302201100201


## 6.2. Computational Results

In this section, we report on the results obtained with our VNS algorithm on a large set of real instances. For these experiments, we used the best strategies and parameters identified from the previous tuning experiments. These configurations are summarized next:(i)
Use all the neighborhood structuresNi,i=1,…,4;(ii)
Explore the neighborhoods in the following order:N1,N2,N3,andN4;(iii)
tNi=2, i=1,…,4:
(a)
qi1=1, ri1=3, (umin,i1,umax,i1)=(10%,50%);(b)
qi2=3, ri2=3, (umin,i2,umax,i2)=(10%,50%).We generated 22 production orders using the set of pieces associated to the first car model in the same way as in the tuning experiments. The numberm of different pieces varies from 5 to 23. Each production order is cut from three different hides, and hence, we have 66 instances defined from this car model. Forty-one production orders were generated using the pieces of the second car model. Since only one hide is used for each production order, in this case, we have 41 different instances derived from the second car model. In Table 6, we describe the characteristics of the production orders. In summary, our set of instances is composed of 107 different problem instances. As in the tuning experiments, we used a time limit of 600 s. For each instance, the tests were repeated four times. Hence, 428 runs were performed which took almost 3 days of computing time.Table 6
Instances.
Car modelOrderm11,…,556,…,10811,…,151016,…,181219,…,2115222321,…,10511,…,20821,…,301031,…,351236,…,40154122The results for the first car model are reported in Tables7 and 8. Those for the second car model are given in Table 9. The column Inst. in these tables identifies the problem instance. For the first car model, we use the same notation to identify the instances as in the tables for the tuning experiments, namely, x;y, where x is the index of the production order and y the index of the hide. The tables present the results obtained with the constructive heuristic used to generate the first layout, and the results achieved by the VNS algorithm after 200 s, 400 s, and 600 s of computing time. The column Pieces indicates the number of pieces placed on the hide. Column Usage gives the percentage of material usage achieved by the corresponding layout. Column t is used in the part associated to the constructive heuristic to indicate the time (in seconds) needed by the heuristic to generate the initial solution. The line avg. gives the average values for the group of instances that is above.Table 7
Evaluating the performance of the VNS algorithm: car model 1 (part I).
Initial solutionVNSInst.After 200 sAfter 400 sAfter 600 sPiecesUsagetPiecesUsagePiecesUsagePiecesUsage1; 12259,5312,8622,5059,6125,0060,0127,5061,091; 22357,9315,0427,5059,3129,7559,9331,0060,141; 32561,5719,1225,0062,3425,7562,9526,7563,122; 11656,1113,0116,5057,6318,0057,9020,7558,972; 21754,4314,4319,0055,6724,2558,2725,2558,952; 32055,7718,2520,5057,1823,0059,0425,0060,243; 1946,029,0014,7554,6015,5055,2617,2555,193; 21451,9211,9815,7552,8418,0054,7818,0054,913; 31854,7714,8918,5056,0422,0057,4123,5059,764; 11251,6811,0115,7555,3116,0056,1016,0056,104; 21350,1312,4516,0052,5818,2554,6819,0055,514; 31551,8716,3115,7552,8218,7556,9621,0058,815; 11351,519,0621,0060,6725,2560,8124,5061,775; 21855,3811,8721,2558,0024,2559,2427,2560,305; 32660,9916,8626,0060,9934,5061,5334,7561,56avg.17,4054,6413,7419,7257,0422,5558,3223,8359,106; 12059,1216,4920,5059,6723,5061,2825,7562,276; 22461,5618,7224,7561,8225,0062,2625,0062,266; 32360,3622,3924,5060,9925,5061,7525,7562,537; 11757,5018,4318,2559,0719,2561,7719,7562,227; 21957,5820,8520,0059,1022,7559,3424,7560,777; 32258,6126,4624,0061,2724,2561,5524,2561,558; 12058,9215,5321,0059,9022,7561,6624,2562,468; 22260,0619,5322,7560,3223,0061,0325,5061,578; 32460,5123,0624,0060,5125,2560,9327,7563,109; 11250,7816,5813,7554,0414,7554,4715,2554,909; 21350,1319,3313,0050,1317,2557,0118,5058,059; 31450,4023,8114,5051,1318,0054,8821,0058,7810; 12058,9215,2621,0060,5522,5061,9027,7562,5210; 22360,6519,4024,5063,0625,2564,0125,2564,0110; 32561,3723,4827,2562,4128,7563,4729,0063,69avg.19,8757,7619,9520,9258,9322,5260,4923,9761,38Table 8
Evaluating the performance of the VNS algorithm: car model 1 (part II).
Initial solutionVNSInst.After 200 sAfter 400 sAfter 600 sPiecesUsagetPiecesUsagePiecesUsagePiecesUsage11; 12058,5119,5020,0059,9923,0061,0629,0061,2711; 22460,4823,7624,0060,4824,0060,4824,0060,4811; 32259,4528,6722,0059,4525,0061,0327,5062,6212; 11960,1821,6320,2561,6122,0061,7928,5062,5412; 22260,5224,6922,0060,9424,0062,2425,7562,5312; 32561,3831,0225,0061,3825,0061,3830,7564,3313; 11958,1918,2820,5060,2821,2561,9826,0064,4213; 22158,2721,6421,0058,2723,7559,6126,7561,5613; 32359,5325,8623,0059,5325,0062,7528,2563,7314; 12060,1920,7420,0060,1925,2563,7725,2563,7714; 22359,9425,2223,0059,9424,7560,5326,5061,1114; 32359,6229,8923,0059,6225,5061,5327,7563,0715; 11958,1217,7520,0059,1724,7562,7325,5063,7815; 22461,5522,0524,0061,5526,0062,4126,0062,4115; 32359,8125,2123,0059,8126,2563,9929,2564,42avg.21,8059,7223,7322,0560,1524,3761,8227,1262,8016; 11958,1924,5719,7559,4420,5060,7122,2562,7616; 22158,2729,6921,0058,2724,0059,8226,0060,6716; 32359,5337,4223,0059,5324,5059,7527,2563,6517; 11959,1523,9119,2559,6023,0061,8125,0061,9417; 22159,0928,6721,0059,0923,5061,7624,7562,5517; 32359,9635,1223,0059,9625,0064,1926,7564,2118; 11958,1222,1520,0059,6521,0060,4024,5062,6318; 22461,5527,9924,0061,5525,7563,2326,0063,2418; 32360,3333,5823,0060,3324,5062,9726,2562,17avg.21,3359,3529,2321,5659,7123,5361,6325,4262,6519; 14969,6838,4849,0069,6849,2569,9450,0071,4419; 24567,2741,8245,0067,2746,5067,4846,2567,5419; 34766,5751,3047,0066,5747,0066,5745,2568,7120; 17673,1751,4276,0073,1778,0073,5580,5074,2120; 26972,2952,9669,0072,2969,0072,2966,7572,3420; 38172,4264,9381,0072,4281,0072,4295,7572,6621; 14869,0538,0448,0069,0546,2569,5644,0070,8421; 24367,5740,6843,0067,5743,0067,5743,0067,5721; 34666,7848,1546,0066,7845,7566,9550,5068,05avg.56,0069,4247,5356,0069,4256,1969,5958,0070,3722; 18473,8899,3084,0073,8884,0073,8884,6774,0822; 28174,51100,3781,0074,5181,0074,5181,0074,5222; 39073,78116,7690,0073,7890,0073,7890,0073,86avg.85,0074,06105,4885,0074,0685,0074,0685,2274,15Table 9
Evaluating the performance of the VNS algorithm: car model 2.
Initial solutionVNSInst.After 200 sAfter 400 sAfter 600 sPiecesUsagetPiecesUsagePiecesUsagePiecesUsage12554,8121,9626,5056,2628,5057,5629,7558,1723153,1832,0533,0055,6934,0057,2935,0058,6332655,2022,6927,0056,0729,2557,8631,5058,9442955,7224,8430,2556,5330,7557,6033,7559,0653655,8434,1135,7555,9435,7555,9436,5056,5063461,8233,1137,0063,8637,2564,2937,2564,4072960,8023,0029,7561,4131,5062,6430,2563,6185158,2258,7851,0058,2253,0060,0854,0060,6095457,0765,5654,0057,0755,2559,5157,2560,84103361,5629,5134,7562,5834,7563,6234,5064,01avg.34,8057,4234,5635,9058,3637,0059,6437,9860,48112254,7024,3224,5057,7824,5058,3624,5058,53123954,9952,3839,0054,9940,5055,8940,7557,94134154,8652,2141,0054,8641,7555,3743,7557,58143960,9853,8939,0060,9841,0062,1141,0062,11153952,8658,4839,0053,0639,0053,6739,5053,91163363,4434,3333,0063,4433,0063,9333,2563,94173562,4933,2335,0063,2135,7564,2938,0065,83185258,9356,8252,0058,9354,0060,3154,7560,42195055,9576,1450,0055,9550,5057,2851,2558,41202960,3031,7330,5060,8632,5061,8436,5063,73avg.37,9057,9547,3538,3058,4139,2559,3040,3360,24212557,3833,1925,0057,3828,0060,9627,7561,42223954,9960,1439,0054,9939,2555,3841,2556,86235059,0769,4350,0059,0750,0059,0750,0059,17243164,5337,2331,0064,5331,5064,6731,5064,67253952,8070,5739,0052,8038,5055,2439,5056,01263062,5035,5032,0063,0936,2564,4537,7564,75273364,8639,7833,5065,1435,7566,4136,0066,54285056,6974,6550,0056,9150,0057,0051,0057,71293961,5063,9539,0061,5039,7561,7941,5062,84303262,1141,7132,2562,2533,0062,7639,0065,52avg.36,8059,6452,6137,0859,7738,2060,7739,5361,55313161,4143,9831,0061,4135,0063,4236,7563,84323954,3573,2539,0054,3539,0054,3539,5055,97334859,1677,4748,0059,1649,0059,6850,0060,21343165,2145,0931,0065,2131,0065,2131,7565,33355460,7491,8954,0060,7454,0060,7454,0060,74avg.40,6060,1766,3440,6060,1741,6060,6842,4061,22363161,9953,7831,0061,9935,0064,0738,0064,18374859,4491,2048,0059,4448,0059,4449,5060,03384756,75105,1247,0056,7548,5057,4053,0058,91393264,7251,6232,0064,7232,0064,7238,5067,23405460,42106,4754,0060,4254,0060,4254,0060,42avg.42,4060,6681,6442,4060,6643,5061,2146,6062,15413464,8773,8434,0064,8734,0064,8739,0066,89On average, the VNS algorithm is always able to improve the results obtained by the constructive heuristic. In Table7, the best improvement is achieved for the instance 5;1 with an increase of 10,26% in the total material usage. The VNS algorithm improves the initial solution quickly. Indeed, after 200 s of computation, the algorithm was already able to find a layout that is better than the initial solution. Furthermore, the solution is improved both after 400 s and 600 s of computation. These improvements tend to be less significant for the instances whose results are given in Table 8. On average, the results are always better than the initial solution, but the VNS algorithm takes more time to find a solution that is clearly better than this first solution. In this table, the best improvement is achieved for the instance 13;1 with an increase of 6,23%. When the variety of pieces is larger, the constructive heuristic is usually able to find layouts that have already a high material usage. In these cases, the space for improvements is smaller, but the VNS algorithm is still able to improve the initial layout. For the hardest instances, those for which the constructive heuristic cannot find a good quality layout, the VNS algorithm appears to work as an effective improvement procedure. Not surprisingly, the time needed by the constructive heuristic to find an initial layout increases with m, the number of different pieces in the instance. This is due in part to the necessity of recomputing the NFPs and IFPs for each piece right after a piece has been placed on the hide. Note that the material usage achieved in the final layouts are comparable to the results obtained by human nesters. Furthermore, these results are achieved within the same time limit as that needed by two human nesters. One operator would need around 1200 s (twice our time limit) to achieve comparable results.Similar results are obtained for the instances derived from the second car model. The VNS algorithm was always able to improve the initial solution except for two instances (35 and 40). In many cases, a better layout is found right after 200 s of computation. The best improvement is obtained for the instance 2 with an increase of 5,46%. Even in the instance with the largest variety of pieces (instance 41) the VNS algorithm was able to improve by 2,02% the material usage achieved in the first layout.


## 7. Conclusions

In this paper, we proposed the first local search metaheuristic for the general LNP using the real case study of a company that operates in the automotive sector. We described a constructive heuristic to generate feasible layouts, and we introduced the details of the different neighborhood structures that were explored. These structures rely on the sequence by which the pieces are placed on the hide and on the quality of the fitness of each piece. The fitness of a piece is measured by computing the intersection of an offset of the piece with the border of the hide and the border of the layout. To explore the different neighborhood spaces, we developed a VNS algorithm that searches for local optima in a systematic way on each one of these spaces. Our approaches were tested on a large set of real instances. The experiments show that the VNS algorithm improves the solutions provided by the constructive heuristic. Furthermore, the quality of the final layouts that are generated by this algorithm is competitive with the results achieved by human nesters.



---

*Source: 254346-2012-01-19.xml*