Next Article in Journal
The Symmetry of Fatigue of Lower Limb Muscles in 400 m Run Based on Electromyography Signals
Previous Article in Journal
Additional Solar System Gravitational Anomalies
 
 
Font Type:
Arial Georgia Verdana
Font Size:
Aa Aa Aa
Line Spacing:
Column Width:
Background:
Article

A Multi-Start Algorithm for Solving the Capacitated Vehicle Routing Problem with Two-Dimensional Loading Constraints

by
Leandro Pinto Fava
1,
João Carlos Furtado
1,*,
Gilson Augusto Helfer
2,
Jorge Luis Victória Barbosa
2,
Marko Beko
3,4,
Sérgio Duarte Correia
4,5 and
Valderi Reis Quietinho Leithardt
4,5
1
Industrial Systems and Processes Graduate Program, University of Santa Cruz do Sul, Av. Independencia 2293, Santa Cruz do Sul 96815-900, RS, Brazil
2
Applied Computing Graduate Program, University of Vale do Rio dos Sinos, Av. Unisinos 950, São Leopoldo 93022-750, RS, Brazil
3
Instituto de Telecomunicações, Instituto Superior Técnico, Universidade de Lisboa, 1049-001 Lisbon, Portugal
4
COPELABS, University Lusófona—ULHT, 1749-024 Lisbon, Portugal
5
VALORIZA—Research Centre for Endogenous Resource Valorization, Polytechnic Institute of Portalegre, 7300-555 Portalegre, Portugal
*
Author to whom correspondence should be addressed.
Symmetry 2021, 13(9), 1697; https://doi.org/10.3390/sym13091697
Submission received: 21 August 2021 / Revised: 6 September 2021 / Accepted: 10 September 2021 / Published: 14 September 2021

Abstract

:
This work presents a multistart algorithm for solving the capacitated vehicle routing problem with 2D loading constraints (2L-CVRP) allowing for the rotation of goods. Research dedicated to graph theory and symmetry considered the vehicle routing problem as a classical application. This problem has complex aspects that stimulate the use of advanced algorithms and symmetry in graphs. The use of graph modeling of the 2L-CVRP problem by undirected graph allowed the high performance of the algorithm. The developed algorithm is based on metaheuristics, such as the Constructive Genetic Algorithm (CGA) to construct promising initial solutions; a Tabu Search (TS) to improve the initial solutions on the routing problem, and a Large Neighborhood Search (LNS) for the loading subproblem. Although each one of these algorithms allowed to solve parts of the 2L-CVRP, the combination of these three algorithms to solve this problem was unprecedented in the scientific literature. In our approach, a parallel mechanism for checking the loading feasibility of routes was implemented using multithreading programming to improve the performance. Additionally, memory structures such as hash-tables were implemented to save time by storing and querying previously evaluated results for the loading feasibility of routes. For benchmarks, tests were done on well-known instances available in the literature. The results proved that the framework matched or outperformed most of the previous approaches. As the main contribution, this work brings higher quality solutions for large-size instances of the pure CVRP. This paper involves themes related to the symmetry journal, mainly complex algorithms, graphs, search strategies, complexity, graph modeling, and genetic algorithms. In addition, the paper especially focuses on topic-related aspects of special interest to the community involved in symmetry studies, such as graph algorithms and graph theory.

1. Introduction

The vehicle routing problem (VRP) is a class of computational optimization problem that involves designing delivery routes and lower logistic cost collection to satisfy the demands of a set of customers or a group of geographically dispersed cities [1,2]. The VRP generalizes the traveling salesman problem (TSP) [3]. Although the TSP is an old problem whose origin is not well known, many studies on it are still carried out, as is the case with [4]. The VRP is addressed in studies dedicated to graph theory and algorithms [5] and, especially, several research works related to different problems involving vehicles and routes were published considering symmetry aspects [6,7,8,9,10]. As global trade expanded and led to a significant growth in the demand for transport, the resolution of VRPs, introduced by Dantzig and Ramser [11], became increasingly essential for enterprises looking to efficiently manage their transport and coordinate their supply chain. The purpose of addressing this problem is to minimize transport costs, typically by reducing the total distance driven and the number of vehicles used.
The VRP was studied for years and, due to computational advances, several constraints were added to the problem. For example, when the weight of the cargo is considered because of the capacity of each vehicle in a fleet, we have a variant of the VRP called the capacitated vehicle routing problem (CVRP). In another example, Vidal et al. in 2013 presented a hybrid genetic search with advanced diversity control for a large class of time-constrained VRP [12].
Another combinatorial problem that was addressed for a long time is the 2D bin packing problem (2BPP). In 2BPP, we need to allocate without overlapping several rectangular items into a minimum number of rectangular bins, and the edges of the items must be parallel to the bins [13].
The 2BPP and CVRP are considered when the customer demands a set of items that are represented by 2D, rectangular forms. In this case, we have the 2L-CVRP. Also, solving the BPPs was crucial to improving the logistics of moving, storing, and transporting products. For this reason, the purpose of addressing CVRP and BPP is to minimize logistics costs by maximizing the area or the volume of items packed within a transport vehicle.
The problem introduced in this study belongs to this class of integrated vehicle routing and loading problems. This study examines logistics activities with the following key characteristics: vehicles with a limited capacity based on a depot point that serves geographically dispersed customers who demand a heterogeneous product. The products transported are 2D items that are considered nonstackable. Thus, effective 2D arrangements for loading the transported items into vehicles must be identified.
This paper presents a metaheuristic approach for solving the CVRP with 2D loading constraints (2L-CVRP). The use of graph modeling of the 2L-CVRP problem by undirected graph allowed the high performance of the algorithm. The proposal considers a combination of three techniques. For the CVRP we used a Constructive Genetic Algorithm (CGA) approach, which is a successful technique for solving related problems. We applied a Tabu Search (TS) approach to improve effectiveness. For the 2BPP, we used a Large Neighborhood Search (LNS)-based algorithm to determine the 2D loading feasibility when the rotation of goods is permitted.
Neither the CVRP nor the 2L-CVRP was previously studied with a CGA approach, although they were reviewed with a TS or with another genetic algorithm approach. The main premise of this work is that it is both possible and advantageous to employ new optimization methods to model and solve the VRP and the 2BPP.
The contributions of this paper may be summarized as follows: (a) the construction of a new metaheuristic CGA improved by the TS for the routing problem in conjunction with the LNS for the 2D packing problem which allows for rotation; (b) as far as we know, there are only four previous works that considered allowing for the rotation of items in the 2L-CVRP. This paper can contribute significant results by (c) exploring the parallelism when processing the vehicle loading phase by using multithreading in a multicore system, and also through (d) collecting the best results in the literature.
This work approaches several themes of interest for symmetry journal, such as complex algorithms, graphs, search strategies, complexity, graph modeling, and genetic algorithms; especially, this work explores graph algorithms and graph theory by applying these themes in the vehicle routing problem.
The paper is organized as follows. Section 2 introduces a literature review about the VRP, focusing mainly on the CVRP and the 2L-CVRP. Section 3 describes the problems and introduces the necessary notation. Section 4 presents our proposed framework: the CGA-TS approach for the CVRP, and the LNS for the 2L-CVRP. Section 5 presents the results of the testing and a comparison with other approaches found in the literature, as well as a statistical validation for the comparison. Finally, Section 6 shows conclusions based on the study and suggestions for future works.

2. Literature Review

In the field of the VRP, we can find a combination of the CVRP with 2D loading constraints, which is denoted as the 2L-CVRP. The first work on the 2L-CVRP was presented by Iori et al. [14]. They proposed an exact method based on the branch-and-cut algorithm to minimize the routing costs, and a nested branch-and-bound algorithm to solve the 2D sequential oriented loading subproblem (2|SO|L). Later, Gendreau et al. presented an approach using a metaheuristic to solve the 2L-CVRP [15]. They proposed a solution based on the tabu search algorithm. They applied heuristics, lower bounds, and a branch-and-bound algorithm for the loading feasibility checks, considering both sequential- and unrestricted-oriented loading, 2|SO|L and 2|UO|L, respectively.
Fuellerer et al. [16] developed a metaheuristic approach based on ant colony optimization to solve the routing problem combined with heuristics for the loading subproblem. For the first time, the results allowed for the rotation of goods by 90° (nonoriented) when considering the 2L-CVRP. Thus, two new variants of loading constraints were studied considering the nonoriented version with sequential and unrestricted loading, 2|SR|L and 2|UR|L, respectively. Zachariadis et al. [17] proposed a metaheuristic algorithm based on the combination of the tabu search with a guided local search and a collection of packing heuristics for the loading subproblem. Strodl et al. [18] developed a solution for the routing problem using a variable neighborhood search and an exact branch-and-bound algorithm for the loading. A simulated annealing algorithm with a collection of packing heuristics to solve the 2L-CVRP was presented by Leung et al. in 2010 [19]. Later, Leung et al. [20] in 2011 also proposed an approach based on the tabu search combined with an extended guided local search and a collection of packing heuristics. Duhamel et al. [21] presented a study with greedy randomized adaptive search and evolutionary local search algorithms. Zachariadis et al. [22] presented a work with an algorithm referred to as Promise Routing-Memory Packing (PRMP) to solve 2|UO|L and 2|SO|L versions of the 2L-CVRP. Dominguez et al. [23] published a paper with a multistart biased randomized algorithm (MS-BR) to solve the 2L-CVRP with two unrestricted loading configurations (2|UO|L and 2|UR|L). This was the second paper proposed in the literature to solve the 2D loading constraint allowing for the rotation of items. Wei et al. proposed a variable neighborhood search algorithm combined with a skyline heuristic to solve 2|UO|L and 2|SO|L versions of the 2L-CVRP [24]. Recently, Wei et al. [25] proposed a simulated annealing algorithm with an open space based heuristic to check the loading feasibility, which outperformed all the previous approaches on 2|SO|L, 2|UO|L, 2|SR|L, and 2|UR|L. Related to the previous 2L-CVRP work cited, the open space based heuristic for the 2D strip packing problem was presented also by Wei et al. [26].
Many other constraints related to the real-world problems of the logistics industry were studied with the 2L-CVRP. Zachariadis et al. [27] proposed an algorithm based on an extended version of their previous approach [22] to solve the 2L-CVRP with simultaneous pickups and deliveries. They also considered the results for the 2|UR|L version and obtained good results. In this paper, their algorithm is referred to as the xPRMP. Pinto et al. presented a study using variable neighborhood search algorithms to solve the 2L-CVRP with mixed linehauls and backhauls [28].
The CVRP with 3D loading constraints (3L-CVRP) is a related problem that was studied extensively in recent years. The 3L-CVRP was studied by many authors who proposed metaheuristics like a tabu search [29], a guided tabu search [30], the ant colony algorithm [31], and a GRASPxELS [32]. Bortfeldt [33] presented a hybrid algorithm for the 3L-CVRP. Koch, Bortfeldt, and Wäscher [34] presented a hybrid algorithm to solve the 3L-CVRP with backhauls and time windows. Recently, Bortfeldt and Yi [35] proposed a hybrid algorithm to solve the split delivery VRP (SDVRP) with the 3L-CVRP. We can cite some surveys on this subject area from Iori and Martello [36] and from Polaris et al. [37].
Finally, we can cite some other TSP- and VRP-related studies, such as the orienteering problem presented for the first time in [38,39], who proposed a memetic approach to solve it. The green vehicle routing problem (GVRP) is an emerging research field, and a recent systematic literature review on this field can be seen in [40].

3. Problem Description

Zachariadis et al. [17] describe the 2L-CVRP as follows. Let G = ( V , E ) be an undirected graph, where V = { 0 , , n } is the vertices set, in which vertex 0 represents the single depot and the other n vertices correspond to the customers, and  E = { ( i 0 , j 0 ) , , ( i n , j n ) : i , j V , i j } is the set of edges. Each edge ( i , j ) E has an associated cost c i j that corresponds to the cost for the transport from i to j.
There are v identical vehicles, each with a weight capacity equal to Q and a rectangular loading surface of width W and length L (related ( x , y ) coordinates). Let A = W × L denote the loading area. The demand of customer i ( i = 1 , , n ) consists a set of m i items, denoted as I T i , of total weight q i : item I i k I T i ( k = 1 , , m i ) has width w i k and length l i k . Let a i = k = 1 m i w i k l i k denotes the total area of the items demanded by customer i.
The objective of the 2L-CVRP is to determine the minimum cost set of routes that satisfy the following constraints: (a) the quantity of generated routes does not exceed the number of available vehicles; (b) all routes must start and end at the central depot; (c) each customer i can be visited only once; (d) each customer i must be served by only one vehicle; (e) the total weight of items demanded for a route does not exceed Q, and (f) all loading must be nonstackable by the set of customers covered by a route into the W × L loading surface of the vehicles.
Usually, a practical constraint can be imposed, considering the convenience of unloading: each time a customer i is visited, all items I i k must be unloaded so that no items of other customers are moved, when k represents the items of a particular customer. This version is called sequential loading (also referred to as LIFO), and it can be denoted as 2|SO|L when the rotation of items is not allowed. Figure 1 depicts an example of the 2|SO|L 2L-CVRP. The version of loading without the LIFO constraint is called unrestricted. According to Fuellerer et al. [16], four combinations can be listed as follows: 2|UO|L: unrestricted, oriented loading; 2|UR|L: unrestricted, rotation allowed loading; 2|SO|L: sequential, oriented loading; and 2|SR|L: sequential, rotation allowed loading.
The following describes the employed solution approach to solve the 2|UR|L 2L-CVRP. Firstly, the routing component is determined in a multistart approach. It consists of a constructive procedure to generate an initial solution. It then continues to search to find a trajectory in the search space that is the core of the optimization method to produce a final solution. This master routing algorithm utilizes a loading feasibility method that generates feasible loading patterns.

4. The Multistart CGA-TS-LNS Algorithm

The proposed algorithm to solve the 2|UR|L version of the 2L-CVRP in this work makes use of the combination of heuristics derived from the genetic algorithm (GA) [41], the tabu search (TS) [42], and the Large Neighborhood Search (LNS) [43].
The CGA-TS-LNS algorithm was developed with a multistart approach, wherein each global iteration a new initial solution is generated from a small sequence of iterations of the CGA-based subalgorithm Immediately after the initial solution, the TS-based subalgorithm is used intensively to improve the solutions for the CVRP. The last phase of each global iteration, the constraints for the loading subproblem, are evaluated by applying the LNS heuristic-based subalgorithm for packing the items in the routes of the best solution found by the TS. At the end of each loop, the algorithm records the feasible and unfeasible routes in terms of loading in two hashtables, respectively. Thus, with these records it avoids generating solutions with unfeasible routes found in previous loops. It also avoids reprocessing routes already evaluated as feasible that are found again in the current best solution. The three-step process is repeated until a time limit is reached or if no feasible global solution is found. Figure 2 shows a macro flow of the proposed algorithm. The details of each subalgorithm are explained in the Section 4.2.2, Section 4.3 and Section 4.4.2.

4.1. The Algorithm Initialization

It is necessary to define parameters when beginning the execution of the algorithm. Some of them are fixed with previously established values and others are calculated from the data of the tested instances, as detailed below. The parameters are linked to the strategies and to the techniques used in the developed method. The improvement strategies used in the routing phase and the initial parameters of the algorithm are detailed in the following.

4.1.1. Improvement Strategies and Their Parameters

To intensify and diversify the local search in the tabu search algorithm, two strategies were employed to obtain better results to solve the routing problem. The first is a list of better solutions, called elite solutions, which is built during the execution of the algorithm [44,45].
The list of elite solutions serves to make random choices, with a certain degree of probability. At certain times during the execution of the TS, one of the best solutions found until that point becomes the current solution. In this way, the generation of new neighbors is promoted through an elite solution. This intensifies the search in regions that can be considered promising. Elite solutions can also be evaluated for loading feasibility in the final stage of the algorithm, but only if the best solution found in the current global iteration is not feasible. The size of the list of elite solutions is identified by the sizeEL parameter.
The second strategy for improving the routing problem deals with a dynamic variation in the number of neighbors generated from the current solution. The numNeighbors variable is calculated at the beginning of the algorithm’s execution, right after obtaining customer data. Stochastically, during the iterations of the TS, this variable can have its value changed within a range of values close to the value initially calculated. This strategy is pseudocoded at line 15 of Algorithm 2 in Section 4.3.
A simple strategy to facilitate loading is applied during the routing phase. The first global iteration of the algorithm considers 100% of the vehicle’s loading surface area. After each global iteration, with a 50% probability, the vehicle area considered for loading can be reduced by 0.05%; note that the minimum limit is 93%. The variable used to control this restriction is called percAreaVehicle. This strategy, applied during the steps of generating the initial solution and during the routing phase, tends to facilitate the feasibility of loading in the last stage of each global iteration of the algorithm.
All percentages used in the strategies described above were chosen after an amount of tests and observations, that is, the best results were found using these values.

4.1.2. Other Control Parameters

The m a x G e n parameter indicates the maximum number of generations, that is, the maximum iterations to be performed by the genetic algorithm to build the initial solution (input data—Algorithm 1). The size of the tabu list is fixed and is identified as sizeTL. The  maxNoImproveCnt parameter signals the TS algorithm when it is time to try one of the strategies (intensification/diversification) previously mentioned in SubSection 4.1.1. The maxNoImproveCnt2End parameter establishes one of the exit conditions for the TS during the routing phase, indicating the maximum number of consecutive iterations without improvement to end the TS and start the next phase. MaxLNSTime, on the other hand, indicates the maximum time, in seconds, for executing the LNS algorithm in the feasibility assessment phase of loading the routes of the best solutions. Finally, maxGTime defines the maximum time, in seconds, for the execution of the main algorithm in the search for the best solution.

4.2. Solution Structures and the Initial Solution

The initial solution is generated from a variant of the genetic algorithm, called the constructive genetic algorithm (CGA) proposed by [46]. Some researchers already used genetic algorithms to generate an initial population of solutions, such as [47], who used the GA and Push-Forward Insertion Heuristic (PFIH) [48] for this purpose. We decided to use the CGA due to its constructive nature and because we did not find its use in the VRP in the literature. Before detailing the construction of the initial solution, Section 4.2.1 shows, in detail, the structures used to represent and manipulate the solutions.

4.2.1. Solution Structures

A matrix structure allowed to represent and manipulate the solutions in the memory during the execution of the algorithm. This matrix structure focused on the improvement of performance, mainly in stage two of the algorithm where the tabu search is performed. Figure 3 shows a sample of the solution matrix ( S ) for the instance 0902 from [15]. In this instance, 8 vehicles are available, and their trips are represented in rows 1 to 8 of the matrix S. The first column, identified by 0, represents the trip id in rows 1 to 8, and the first row (row id = 0) is the row of the summarized data of the solution. In the first row of S, there are 25 customers to be visited, as shown in column 1. Column 2 represents the total cost of the solution. Column 3 shows that each vehicle has 48 unit of measurement capacity, and column 4 shows that the surface area for loading is 800. As row 0 represents the summarized data of the solution, columns 5 to c m a x ( c m a x = 80 ) are marked as empty, i.e., with value −1.
Considering this example, rows 1 to 8 have the trip data. These rows contain columns 1 to 4, which have the summarized data of each trip, representing the number of customers, the trip cost, the total weight, and the total area, respectively. For the trips, the customers’ IDs are stored in columns 5 to c m a x of the S matrix, and the order in which they are stored represents the sequence of visits to the customers. Note, the depot is excluded, which is by default the start- and end-point in this study.

4.2.2. Generating the Initial Solution Using Constructive Genetic Algorithm

The CGA is efficient in finding optimal or near-optimal solutions when employed in a variety of problems. Some researchers already used CGA in their works and obtained excellent results. Among them we can mention [49,50]. One of the main differences of the CGA, when compared to that of a classical genetic algorithm, is its fitness process [46].
To construct the initial solution according to the 2L-CVRP definition, the CGA’s principles must be employed. This clustering problem in graphs is stated as the search for partitions on the vertex set V in a predefined number of clusters normally indicated by the quantity of available vehicles. A general overview of the CGA framework is provided by the pseudocode in the Algorithm 1.
Algorithm 1 Constructive genetic algorithm (CGA)
Input: m a x G e n           //maximum number of generations (max iterarions)
Output: initial solution
1:
let c u r r G e n = 0;      //initialize the current generation number
2:
define i n i t P S i z e ;
3:
Generate an initial population P 0 with size i n i t P S i z e ;
4:
Evaluate the population P 0 ;  
5:
while c u r r G e n < m a x G e n  do
6:
    Select P;               //P is the population of routes
7:
    Recombination P;
8:
    Evaluate P;
9:
    Evaluate the loading feasibility of P in terms of weight and area;
10:
    let c u r r G e n = c u r r G e n + 1;
11:
end while 
12:
return the best feasible solution found;
The size of the initial population P 0 is defined as parameter i n i t P S i z e and c u r r G e n counts the number of generations (line 1 and 2 of Algorithm 1). To define the P 0 of individuals, all the arcs ( i , j ) comprised by the set of edges have their associated costs c i , j , and are sorted by the increasing value of cost c i , j to be electable as the new routes (one for each available vehicle) (i.e., the initial edge of clusters that in some way attract the other edges which participate in the representation). Figure 4 shows an example of the ranking matrix of Euclidean distances between the customers.
Using the ranking of distances, the closest customers are combined to form the initial population P 0 (line 3 of Algorithm 1) (Figure 5).
This initial population creates new generations through an iterative process of evaluation until convergence criteria are met to reach an optimal solution. For each p P 0 , the fitness is calculated based on the distance between the customers. Equation (1) calculates the fitness (line 4 of Algorithm 1).
F i t n e s s = distance in the route number of customers
From that point, until the stop condition is reached and a valid solution is found, the steps of selection, recombination (crossover operation), and evaluation are performed. This ensures that other customers are selected successively to be inserted into the routes, respecting the genetic operators necessary to maintain the adaptation characteristics acquired by previous generations.
The selections (line 6 of Algorithm 1) are performed according to the number of vehicles, which establishes the number of routes. Figure 6 shows the selection process of the CGA framework. Recombination is performed for each route, inserting the closest customers outside of the route. Figure 7 shows the recombination process of the CGA algorithm (line 7 of Algorithm 1). Then, the population is evaluated once again using the fitness Equation (1) (line 8 of Algorithm 1).
Since the feasibility of a solution is determined mainly by the load constraints of the problem, the proposed constructive algorithm checks the items of all the customers in each route that can be loaded into the vehicle when considering loading constraints, such as the maximum load surface and the maximum vehicle weight (line 9 of Algorithm 1). This strategy managed to successfully construct feasible initial solutions for all of the CVRP instances (Figure 8).
The stop condition is triggered at a predefined number of generations. The population increases after the initial generations, continues growing until reaching an upper limit, and decreases for higher values of the evolution parameter. The structure corresponding to the best problem solution must be kept in the process.
Figure 9 depicts an example of the CGA framework steps, where the filled rectangle represents the central depot (vertex 0), the empty circles correspond to the customers, the arrows represent the routes ( i , j ) , the dashed circles represent the vertices selected for insertion, and the dotted arrows show possible insertion edges. The vehicle loading constraint check is integrated into the insertion process.

4.3. Tabu Search Algorithm for Routing Problem

The TS is a well-known metaheuristic that is widely used to solve combinatorial analysis problems. The TS method stands out for being reasonably easy implement and for producing very satisfactory results. Several researchers [15,17,33,51,52,53,54] successfully used this technique, either alone or combined with another method to solve some variant of the VRP.
According to Glover [42], the TS consists of a local search in the neighborhood of the current solution that was generated from movements carried out from that solution. To escape from local optima, some movements are considered prohibited. These movements are recorded in the memory. The structure that stores these movements is a finite-sized list called the tabu list. These movements are prohibited from being carried out until they cease to exist in the list. This takes place as iterations occur and the list is updated. The process is done iteratively; with each iteration, the best neighbor must be selected to become the current solution and generate a new neighborhood. This is true even if that neighbor is worse than the best solution found until that point. The process is repeated until a stop condition is reached.
In this work, the CGA and TS heuristics are applied to find better solutions to the CVRP. Algorithm 2 shows TabuSearch method that starts right after the CGA builds an initial solution for the CVRP. The initial solution becomes the first current solution of the tabu search and the best local solution as well.
Algorithm 2 Tabu search algorithm for CVRP
Input: i n i t i a l S o l u t i o n
Output: b e s t S o l u t i o n
1:
//Global variables maxNoImproveCnt, maxNoImproveCnt2End, sizeTL, sizeEL
2:
//numNeighbors, maxLNSTime, and maxGTime are set at the beginning of the algorithm  
3:
c u r r S o l u t i o n = i n i t i a l S o l u t i o n ;
4:
b e s t S o l u t i o n = i n i t i a l S o l u t i o n ;
5:
n o I m p r o v e C n t = 0;
6:
n o I m p r o v e C n t 2 E n d = 0;
7:
n u m C a n d i d a t e s = n u m N e i g h b o r s ;
8:
m a x T i m e = m a x G T i m e m a x L N S T i m e ;
9:
Define arrays t a b u L i s t [ s i z e T L ] and e l i t e L i s t [ s i z e E L ] ;  
10:
while n o I m p r o v e C n t 2 E n d < m a x N o I m p r o v e C n t 2 E n d and c u r r T i m e < m a x T i m e  do
11:
    Put currSolution in t a b u L i s t [ ] , considering FIFO method when t a b u L i s t [ ] is full;  
12:
    if  n o I m p r o v e C n t >= m a x N o I m p r o v e C n t  then
13:
         n o I m p r o v e C n t = 0;
14:
        With a probability of 40% set c u r r S o l u t i o n = b e s t S o l u t i o n , or with a probability of 30% set c u r r S o l u t i o n = one of the e l i t e L i s t [ ] randomly or with a probability of 30% stay the same;
15:
        With a probability of 25% set r = random number between -n and +n, where n=( n u m N e i g h b o r s /2) and set n u m C a n d i d a t e s = n u m N e i g h b o r s + r or with a probability of 75% stay the same;
16:
    end if 
17:
    Select a neighborhood structure N S randomly;
18:
    Generate c a n d i d a t e L i s t [ n u m C a n d i d a t e s ] from c u r r S o l u t i o n using N S ;
19:
    //Each candidate in candidateList[] must be feasible in terms of area and weight
20:
    //For loading feasibility, hash tables irHT and frHT are checked
21:
    //Each candidate in candidateList[] must not be in the tabuList[]
22:
     c u r r S o l u t i o n = best candidate of c a n d i d a t e L i s t [ ] ;  
23:
    if  c o s t ( c u r r S o l u t i o n ) < c o s t ( b e s t S o l u t i o n ) then  ▹function c o s t ( ) gets the total distance of all routes in a solution structure
24:
         b e s t S o l u t i o n = c u r r S o l u t i o n ;
25:
         n o I m p r o v e C n t = 0;
26:
         n o I m p r o v e C n t 2 E n d = 0;
27:
    else
28:
        Increase n o I m p r o v e C n t and n o I m p r o v e C n t 2 E n d by 1;
29:
    end if 
30:
    if  e l i t e L i s t [ ] has empty entry or c o s t ( c u r r S o l u t i o n ) < worst c o s t ( e l i t e L i s t [ ] )  then
31:
        Put c u r r S o l u t i o n into the e l i t e L i s t [ ] at empty entry or replace the worst entry;
32:
    end if 
33:
end while
A tabu list (tabuList) and a list of elite solutions (eliteList) are initialized to their predefined sizes at the beginning of the algorithm, as described in Section 4.1.1. The tabuList keeps the last solutions found to temporarily prohibit them from becoming the current solution. The eliteList stores the latest sizeEL best solutions found.
The eliteList has two purposes. The first is to provide, at certain times, the return of one of the best solutions previously registered as the next current solution. This purpose serves to intensify the search in promising regions of the search space [55]. The second purpose is for the best solutions found in the routing problem (CVRP) to be evaluated for loading feasibility (2L-CVRP) in the next stage of the framework. This is only carried out if the local best solution is not feasible.
A local search cycle is initiated until the stop condition is true. The main condition for stopping the tabu search is when a maximum consecutive number of iterations without improvement is achieved ( n o I m p r o v e C n t 2 E n d m a x N o I m p r o v e C n t 2 E n d ) . Another stop condition is if the maximum global time minus the time for load evaluation is reached ( c u r r T i m e m a x G T i m e m a x L N S T i m e ) .
At the beginning of each iteration, the current solution is placed on the tabu list. As the tabu list has a predefined size ( s i z e T L ), when it is filled, the new entries follow a first in, first out method (FIFO). From the current solution, a neighborhood is generated by following a pattern of neighborhood structures as detailed in Section 4.3.1. The size of the neighborhood is initially defined by the n u m N e i g h b o r s variable. After the generation of the neighborhood, a local search is carried out to find the best candidate solution to become the next current solution. As already mentioned, in this choice, the neighborhood solutions cannot be on the t a b u L i s t and must have feasible routes in terms of weight and area. The best neighborhood solution is then selected and becomes the new current solution for the next iteration, even if it is worse than the most recent current solution.
To speed up the loading evaluation process, two hash table structures ( H T ) are used to store routes that were already evaluated in stage 3 of the algorithm by the LNS. Toffolo et al. [56], Zachariadis et al. [27], Leung et al. [19] and Wei et al. [25] used similar strategies. One structure registers the feasible routes ( f r H T ) already evaluated and the other registers the infeasible routes ( i r H T ). During the selection of the best neighbor in the tabu search, the  H T structures are consulted to previously check the feasibility or unfeasibility of the solutions found.

4.3.1. Neighborhood Structures

Like Wei et al. [25], we used four types of neighborhood structures in our study as shown in Figure 10. When selecting one of the four types of structures, changes in the current solution can be applied to a single route or a pair of routes. The selection of the route or the pair of routes to apply the movements from a structure is random. Section 4.3.2 provides more details on how structures are used to generate neighbors for the current solution.
The first type of structure is customer relocation. In this type of movement, a customer is relocated to another position within the same route or is relocated to another route (Figure 10a). These movements are known as intra–shift and inter–shift, respectively, in Wei et al. [26]. The second type is a customer exchange (Figure 10b), where there is an exchange of positions between two customers on the same route or the exchange of two customers between two different routes within the solution intra–swap and inter–swap according to Wei et al. [26]). The third structure is a route interchange (Figure 10c). If applied to only one route, two positions are randomly selected, and the customers between these two positions are repositioned in reverse order (intra-2opt in Wei et al. [26]). If applied to a pair of routes, where a customer on each route is randomly chosen, the initial portion of the first route to the customer’s position is connected to the final portion of the second route from the position of the other customer, and vice versa. The last structure is called block exchange (Figure 10d), where there is an exchange of 2 route segments that can randomly be 1 to 3 in size.

4.3.2. Generating Neighbors as Candidate Solutions for the Routing Problem

Each iteration of the tabu search calls for a procedure that generates new candidate solutions from the current solution. One of the four structures mentioned in Section 4.3.1 is selected randomly with an equal probability to be applied to the current solution and generate a candidate solution. The feasibility of each candidate solution is tested in terms of the total weight and total area of the load, observing the strategy of the area of the vehicle considered for loading. This is controlled by the percAreaVehicle variable. Also, to avoid wasting time, the routes of the solutions already analyzed regarding the feasibility of loading by the LNS are consulted in the hash tables irHT and frHT. If an infeasible route is generated and it is in the irHT, then it is discarded. On the other hand, if a feasible route is generated and it is in the frHT, it is then kept; even if the area of its load exceeds the maximum considered area for loading, this is controlled by the percAreaVehicle. The latter conditional is applied when the parameter percAreaVehicle < 100%. Thus, the best candidate is selected to be the next current solution and the procedure is carried out successively to generate new neighbors in search of the best solution.

4.4. The Loading Procedure

For the loading subproblem, we developed the main procedure given by Algorithm 3 (EvalSolutionLoading). This procedure is responsible for carrying out assessments regarding the feasibility of loading the best solution found by the tabu search in the routing stage, as well as elite solutions, if necessary.
Algorithm 3 EvalSolutionLoading
Input: e l i t e L i s t [ ] , b e s t R o u t i n g S o l u t i o n
Output: Solution evaluation procedure for loading
1:
Define array e v a l L i s t [ s i z e E L + 1 ] ;
2:
Put b e s t R o u t i n g S o l u t i o n and e l i t e L i s t [ ] entries into e v a l L i s t [ ] ;
3:
Sort e v a l L i s t [ ] by cost ascending;  
4:
for each solution entry in the e v a l L i s t [ ]  do 
5:
    for each route in the solution do  
6:
        if route is in f r H T  then  
7:
            Sign the route as feasible;  
8:
        else 
9:
            Start new thread with procedure to evaluate route loading in parallel:
10:
           Set i t e m s [ ] = all items demanded by customers in route;
11:
            i s F e a s i b l e = L S N p a c k ( i t e m s [ ] ) ;
12:
           if  i s F e a s i b l e  then  
13:
               Sign route as feasible and insert it into f r H T ;
14:
           else 
15:
               Sign route as infeasible and insert it into i r H T ;
16:
           end if
17:
           End thread;
18:
        end if
19:
    end for
20:
    Wait until all threads end;
21:
    if all routes are feasible then  
22:
        if evaluated feasible solution is better than g l o b a l B e s t S o l u t i o n or the g l o b a l B e s t S o l u t i o n is n u l l  then  
23:
           Update g l o b a l B e s t S o l u t i o n ;
24:
        end if
25:
        Break the loop;
26:
    end if
27:
end for
To verify the feasibility of loading each route of the evaluated solutions, the EvalSolutionLoading algorithm calls a procedure based on the LNS, denoted as Algorithm 4 (LNSpack). The code of LNSpack was partially based on the work published by Erdoğan [57]. The two procedures are described in the next subsections.
Algorithm 4 LNSpack
Input: i t e m s [ ]
Output: The feasibility status to pack the i t e m s [ ]
1:
for s o r t T y p e in {area, circumference} do 
2:
    Sort i t e m s [ ] by s o r t T y p e descending;
3:
    Use the first-fit-decreasing heuristic to repack the removed items;  
4:
    while  e l a p s e d T i m e < m a x L N S T i m e  do
5:
        Perturb solution: randomly remove items from vehicle;
6:
        Use the first-fit-decreasing heuristic to repack the removed items;
7:
        if all items were packed then
8:
           return s u c c e s s ;
9:
           if new solution is better than the best-known solution then
10:
               Update best-known solution;
11:
           else
12:
               Revert the best-known solution;
13:
           end if
14:
        end if
15:
        Set e l a p s e d T i m e ;
16:
    end while 
17:
end for
18:
return f a i l u r e

4.4.1. A Procedure to Evaluate the Loading Feasibility of the Routing Solutions

The EvalSolutionLoading algorithm receives two parameters: the best solution (bestRoutingSolution) and the elite solutions (eliteList[]) found in the routing phase. Then, these solutions are put on a list to be evaluated (evalList[]). The list is ordered from lowest to highest cost so that the best solutions are evaluated first. As soon as a solution with feasible loading is found, the evaluation of the other solutions does not proceed. In the evaluation of each solution registered in evalList[], the verification of the feasibility of loading for each route is performed by the LNSpack algorithm (Algorithm 4), which is discussed in Section 4.4.2. To save time and processing, the first step in evaluating the route is to check if it already exists in the frHT, that is, to check if it was already evaluated and identified as feasible. In that case, there is no need to evaluate it again. The routes that are already identified as infeasible are no longer generated during the routing process.
For the evaluation of the routes, a multithreading mechanism was implemented to enhance the performance of the algorithm. Thus, several routes are evaluated simultaneously within a time limit that was defined in the algorithm’s initial parameters. Therefore, the power of parallel processing is exploited using multiple CPU cores. Within each thread, the LNSpack heuristic is called to evaluate the route loading. The LNSpack determines whether the route is feasible or not. Then, the hash tables frHT and irHT are updated, respectively. After all the route evaluation threads are finished, the solution is flagged as feasible if all routes are feasible. If this is the case, and if the solution is better than the best global solution found or if a better global solution still does not exist, the best global solution is updated, ending the procedure and returning to the global algorithm flow.

4.4.2. Large Neighborhood Search for 2D Bin Packing

In this work, a version of an LNS algorithm, which is denoted as Algorithm 4 (LNSpack), was developed to solve the 2BPP. The LNSpack requires a list of rectangular items demanded by all customers in the route as parameters. When the LNSpack is called by the procedure for evaluating the feasibility of a route, firstly, the items are sorted, and then, the First-Fit Decreasing heuristic [58] is used to try to load the vehicle. Two forms of ordering are applied: the first is by the area, and the second is by the circumference of the item. Since in this work, only the 2|UR|L was considered, the ordering of the items by area or by circumference is quite effective. Therefore, orders by the height or width of the items were not used. Then, an iteration loop is initiated where the solution is disturbed by the random removal of some loaded items. Next, the First-Fit Decreasing heuristic is performed again to try to reload them. If all items were loaded, the procedure was completed with success. Otherwise, it checks if the loaded area of the current solution is larger than the area of the best solution found and updates the best solution. If the current solution is not better, the best solution is once again the current solution for the next iteration. The condition for stopping the iterations is finding the feasible packaging route items or reaching the maximum time (maxLNSTime). If it is the case, the procedure returns as a packaging failure.

5. Results

The algorithm proposed in this study, called the CGA-TS-LNS, was coded in C, and the tests were performed on a virtual machine configured as an Intel 2 × Deca Core Xeon E5-2640 CPU with a clock speed of 2.40 giga-hertz and 16 gigabyte of RAM running on a Windows Server 2019 Standard edition operating system. For the benchmarks, the tests were carried out with the well-known instances of Gendreau et al. [15]. The database is composed of 180 instances that are divided into five classes according to the characteristics of the items. Class 1 is characterized as the pure CVRP, where each customer is associated with only one item with a unit of width and a unit of length, and there are no loading restrictions. In Classes 2–5, the quantity of items demanded for each customer i is generated by an uniform distribution within a given interval, according to Column 2 of Table 1. There are 3 categories in which the items can be classified according to their forms: vertical, homogeneous, and horizontal. The dimensions of the items (w × l) are uniformly distributed according to the ranges established for the categories of the items (Columns 3–8).

5.1. Initial Parameters

After carrying out experiments with the algorithm in 15 instances of the pure CVRP, with low-, medium-, and high-complexities, we observed the results from the use of values from 5–50 for the size of the tabuList[]. We chose to set sizeTL = 8, because with this value we obtained the best results in the experiments. As it is not a very high value, the performance of the TabuSearch algorithm improved. This is because in each iteration the new current solution must not be in the tabuList[], and for that, the tabuList[] must be checked line-by-line. So, with fewer positions in the list, less computational time is required. The numNeighbors variable, which dynamically defines the number of neighbors during the tabu search, is defined initially from a polynomial function of degree 3. This function was found from a data analysis as described in the following.
Firstly, tests of the algorithm were performed with instances from the pure CVRP (Class 1). Several values between 5 and 200 were randomly assigned to the textitnumNeighbors for each execution of the framework on the instances chosen for the test. The values of the variable where the best results were obtained for each instance were noted. Then, using Pearson’s correlation coefficient, a correlation analysis was performed on the data of the instances in relation to the values of numNeighbors noted. The data showed that the number of customers presented a correlation coefficient of more than 80% in relation to the values of numNeighbors noted. Therefore, the number of customers together with the values of numNeighbors noted in the tests was chosen to obtain the polynomial regression function. The function y = 1.67 × 10 5 × x 3 8.90 × 10 3 × x 2 + 1.57 × 10 0 × x 1.83 × 10 1 , where x Z | x 15 and y Z , y = n u m N e i g h b o r s and x is the number of customers, was obtained through polynomial regression of degree 3, as shown in the graph of Figure 11. Also, the function found for values of numNeighbors must be used for problems with more than 15 customers, otherwise negative numbers would be obtained. For problems with fewer than 15 customers, numNeighbors is limited to a minimum of 5.
The sizeEL that defines the size of the elite solution list was set to 20. The percAreaVehicle variable was initially set to 100%, as described in Section 4.3.1, and it was applied to resolve instances of Classes 2–5. This strategy proved to be more effective for routes in which the items to be loaded had very irregular dimensions. Although it can be considered a simple strategy that can go against the idea of maximizing the loading space of the vehicle used, in general it showed good results. Due to the tests carried out in our experiments, this strategy is not very efficient in the largest and most complex instances. This is because a lot of time is needed to achieve promising results. The parameters for stopping conditions of the stages of the algorithm, as well as the global stopping condition parameter, were defined as follows: the parameter maxNoImproveCnt2End, which is one of the stopping conditions of the TabuSearch in the routing phase, was set to 400,000 iterations. Namely, the tabu search algorithm implemented in this framework can perform thousands of iterations per second. The parameter maxNoImproveCnt was set to 40,000. In our tests, generally few iterations of the CGA were necessary to generate promising initial solutions, so the m a x G e n parameter was set to 20. The maxLNSTime parameter was set to 60 s. The maxGTime was set to 7200 s. The vehicle fleet was considered homogeneous and the dimensions of the loading area were H = 40 and W = 20.

5.2. Results Comparison

This work solved the pure CVRP (Class 1) and the 2|UR|L version of the 2L-CVRP (Classes 2–5), where the rotation of the items is allowed, and the loading is unrestricted. We compared our results for Class 1 with 4 of the best previous approaches: PRMP [22], VNS [24], SA [25], and BR-LNS [59]. Importantly, after an extensive research, we found only these four published studies that involve 2|UR|L-CVRP, which is the focus of our work, and none of them implemented parallelism in their approaches. To solve the 2|UR|L, we found only four approaches with which to compare the results: ACO by Fuellerer et al. [16], MS-BR by Dominguez et al. [23], xPRMP by Zachariadis et al. [27], and SA by Wei et al. [25]. The framework was run 10 times for each instance with 1–10 random seeds, as was done in several previous works, and the best solutions were compared to that of the previous approaches.
The running time to find best cost values for all instances can be considered compatible with the previous works. The running time for each one of the 180 instances remains less than the maximum global time limit to run the algorithm, i.e., less than 7200 s. For the pure CVRP, our method proved to be more effective and the running time to find best solutions in this class was less than the time informed by the other previous approaches. For the 2L-CVRP, our algorithm takes a little more time running, but it was able to find some unpublished results.

5.3. Results for Class 1 Instances

Table A1 shows the results for the Class 1 instances, where the best costs are compared with the other four previous frameworks. The CGA-TS-LNS found better and higher quality solutions for the 6 most complex instances (30–36), and matched the BKS for 28 instances. In addition, Figure 12 shows the average cost of the solutions found by the CGA-TS-LNS for the 36 instances of Class 1 is lower than all previous approaches, and lower than the average cost of all the BKS. This demonstrates the effectiveness of our algorithm to solve the CVRP.

5.4. Results for 2|UR|L Instances

When comparing our results for the 2|UR|L in Classes 2–5, we find that our average cost in each class is better than two of the only four algorithms proposed to solve this version found in the literature. In total, the CGA-TS-LNS surpassed the BKS in 7 of the 144 instances and matched in another 66. The CGA-TS-LNS only loses to the ACO and MS-BR in 5 instances of 144, with 4 instances of Class 2, and 1 instance of Class 4. For the 2L-CVRP, the SA approach is evidently still the best, achieving the lowest average cost.
Table A2 compares the best 2|UR|L results for the Class 2 instances. In comparison with that of the other four approaches and the BKS of the 36 instances, the CGA-TS-LNS found better solutions for 2 instances and matched the other 15 better solutions. Considering the average cost, xPRMP is the best framework to solve the Class 2 instances.
Table A3 compares the best results from the 2|UR|L over the 36 instances of Class 3, where our CGA-TS-LNS found better higher quality solutions for 3 instances and matched 18 other better solutions. Considering the average cost for 36 instances, SA is the best approach for this Class.
Table A4 compares the best results of the 2|UR|L for the 36 instances of Class 4. The CGA-TS-LNS found better, higher quality solutions for 1 instance and matched the other 14 best solutions. Again, the SA algorithm is the best to solve Class 4 instances.
Table A5 compares the best results of the 2|UR|L for the 36 instances of Class 5. Our algorithm found better, higher quality solutions for 1 instance and matched 19 other better solutions. One more time, the SA algorithm is the best approach to solve the Class 5 instances.

5.5. Statistical Validation for Algorithm Comparison

According to [60] inside the field of inferential statistics, hypothesis testing can be employed to draw inferences about one or more populations of given samples (results). To perform that, two hypotheses, the null hypothesis H 0 and the alternative hypothesis H 1 , are defined. The null hypothesis is a statement of no effect or no difference, whereas the alternative hypothesis represents the presence of an effect or a difference (in our case, significant differences between algorithms). When applying a statistical procedure to reject a hypothesis, a level of significance α is used to determine at which level the hypothesis may be rejected. The Sign test for multiple comparisons described in [60] allows us to highlight those algorithms whose performances are statistically different when compared to that of the CGA-TS-LNS algorithm.
As defined in [60], when using a level of significance α = 0.10 and setting our hypotheses to be H 0 : M j M 1 and H 1 : M j < M 1 and m = 4 ( m = k 1 ) and n = 36, that is, our CGA-TS-LNS algorithm performs significantly better than the remaining algorithms. Also, according to Table A.21 of [60], for m = 4 ( m = k 1 ) and n = 36 reveals that the critical value of R j is 10.
Table A6, Table A7, Table A8, Table A9 and Table A10 present the number of times the CGA-TS-LNS algorithm was superior to its competitors, as well as the number of occasions in which the CGA-TS-LNS algorithm obtained the optimal solution. In Table A1, Table A2, Table A3, Table A4 and Table A5, the best-known solution from the literature (BKS) is the optimal solution to the problem and, therefore, it is impossible to obtain better solutions. Thus, we add the number of times the GGA-TS-LNS algorithm was better to the competitors to the number of times the BKS was obtained.
Table A6 shows the performance comparison of GGA-TS-LNS with PRMP, VNS, BR-LNS, and SA algorithms for the instances of Class 1 (pure CVRP). Since the number of minuses in the pairwise comparison between the GGA-TS-LNS algorithm and all others is equal to 36, we can conclude that GGA-TS-LNS has a significantly better performance than all of other competitors.
Table A7 shows the performance comparison of GGA-TS-LNS with ACO, MS-BR, SA, and xPRMP algorithms for the 2|UR|L instances of Class 2. Since the number of minuses in the pairwise comparison between the GGA-TS-LNS algorithm and ACO and MS-BR algorithms is equal to 34 and 25, respectively, we can conclude that GGA-TS-LNS performs significantly better than these two competitors.
Table A8 shows the performance comparison of GGA-TS-LNS with ACO, MS-BR, SA, and xPRMP algorithms for the 2|UR|L instances of Class 3. Since the number of minuses in the pairwise comparison between the GGA-TS-LNS algorithm and ACO and MS-BR algorithms is equal to 35 and 27, respectively, we can conclude that GGA-TS-LNS performs significantly better than these two competitors.
Table A9 shows the performance comparison of GGA-TS-LNS with ACO, MS-BR, SA, and xPRMP algorithms for the 2|UR|L instances of Class 4. Since the number of minuses in the pairwise comparison between the GGA-TS-LNS algorithm and ACO and MS-BR algorithms is equal to 36 and 30, respectively, we can conclude that GGA-TS-LNS performs significantly better than them. Also, in the pairwise comparison between the GGA-TS-LNS algorithm and XPRMP algorithm, with a level of significance α = 0.05 , we can conclude that GGA-TS-LNS performs significantly better than it as well.
Table A10 shows the performance comparison of GGA-TS-LNS with ACO, MS-BR, SA, and xPRMP algorithms for the 2|UR|L instances of Class 5. Since the number of minuses in the pairwise comparison between the GGA-TS-LNS algorithm and ACO and MS-BR algorithms is equal to 36 and 34, respectively, we can conclude that GGA-TS-LNS performs significantly better than these two competitors.

6. Conclusions

This paper presents a new hybrid algorithm to solve the 2L-CVRP. The combination of algorithms based on the CGA, the TS, and the LNS proved to be competitive when applied to the 2L-CVRP. Our results outperformed two of the only four algorithms proposed, so far, to solve version 2|UR|L of this problem. As stated by Wei et al. [25], it is not efficient to simply combine conventional algorithms for the CVRP and the 2BPP, so some loading strategies need to be employed to facilitate the solution of these integrated problems. In our case, a simple strategy was to consider the loading area dynamically during the iterations of the algorithm. This was combined with the diversification and intensification strategies, plus the use of multithreading, to evaluate the loading of the routes. This facilitated the process to find appropriate solutions for the 2L-CVRP, but it was not enough to outperform the algorithms proposed by Wei et al. [25] and by Zachariadis et al. [27].
When analyzing the results for the pure CVRP, the framework proved to be extremely efficient, surpassing all other approaches that were applied to the instances proposed by Gendreau et al. [15]. This study brings, as a reference for future works, new best-known solutions for the most complex instances of the pure CVRP and a better average of solutions for the 36 instances of this Class.
The algorithm proposed in this work has great potential, but it can still be improved. For future works, we can think about the use of other strategies to improve solutions regarding the loading subproblem. The ability to solve types 2|OU|L, 2|SO|L, and 2|SR|L can be added to the algorithm. The algorithm can also be adapted to solve other problems, such as the 3L-CVRP. Additionally, it can be tested in other databases. Also, to provide a more practical information measure, it is possible to use average values to compare the results with that of other research.
The main application would be to solve the CVRP and to compare the results and the effectiveness. In addition, we believe that the algorithm can serve as a basis for other studies to obtain improvements in logistical and transportation processes. Its application can contribute to reducing costs in the routing problems of capacitated vehicles in the real world. In this sense, the integration of this algorithm with intelligent models for logistics management [61] will improve the routes processing, and consequently, the safety of transportation. The algorithm also will allow the implementation of ubiquitous intelligent services for vehicular users [62]. Finally, future work will integrate the algorithm with strategies used to treat Context Histories [63,64,65,66] such as pattern analysis [67], context prediction [68], similarity analysis [69], cryptography [70], and IoT challenges in smart environments [71,72]. This integration will support better solutions; specifically, to routing problems and in general for problems involving context histories.

Author Contributions

Conceptualization, L.P.F. and J.C.F.; investigation, L.P.F. and J.C.F.; methodology, L.P.F. and J.C.F.; software, L.P.F. and J.C.F.; project administration, L.P.F. and J.C.F.; supervision, L.P.F. and J.C.F.; validation, L.P.F. and J.C.F.; writing—original draft, L.P.F. and J.C.F.; writing—review and editing, J.C.F., G.A.H., J.L.V.B., S.D.C., M.B. and V.R.Q.L.; financial, S.D.C., M.B. and V.R.Q.L. All authors have read and agreed to the published version of the manuscript.

Funding

We would like to thank Seed Funding ILIND—Instituto Lusófono de Investigação e Desenvolvimento, project COFAC/ILIND/COPELABS/1/2020 and COFAC/ILIND/COPELABS/3/2020. This work was supported in part by the Fundação para a Ciência e a Tecnologia under Project UIDB/04111/2020.

Informed Consent Statement

This research did not require ethical approval in accordance with the regulations of the University of Santa Cruz do Sul (UNISC).

Acknowledgments

This study was financed in part by the Coordenação de Aperfeiçoamento de Pessoal de Nível Superior—Brasil (CAPES)—Finance Code 001. The work described in this paper was supported by Master’s in Systems and Industrial Processes of the University of Santa Cruz do Sul. This work was supported by national funds through the Fundação para a Ciência e a Tecnologia, I.P. (Portuguese Foundation for Science and Technology) by the project UIDB/05064/2020 (VALORIZA—Research Centre for Endogenous Resource Valorization).

Conflicts of Interest

The authors declare no conflict of interest.

Abbreviations

The following abbreviations are used in this manuscript:
2BPPTwo-Dimensional Bin Packing Problem
2|SO|LTwo-Dimensional Sequential Oriented Loading Problem
2|SR|LTwo-Dimensional Sequential Non-oriented Loading Problem
2|UO|LTwo-Dimensional Unrestricted Oriented Loading Problem
2|UR|LTwo-Dimensional Unrestricted Non-oriented Loading Problem
2L-CVRPTwo-Dimensional Loading Constraints
ACOAnt Colony Optimization
BKSBest-known Solution
BR-LNSBiased-Randomized Large Neighborhood Search
AvgAverage
CGAConstructive Genetic Algorithm
CVRPCapacitated Vehicle Routing Problem
FIFOFirst In, First Out
frHTFeasible Routes Hash Table
GVRPGreen Vehicle Routing Problem
irHTInfeasible Routes Hash Table
LNSLarge Neighborhood Search
MS-BRMultistart Biased Randomized Algorithm
PRMPPromise Routing-Memory Packing Problem
SASimulated Annealing
TSTabu Search
TSPTraveling Salesman Problem
VNSVariable Neighborhood Search
VRPVehicle Routing Problem

Appendix A

Table A1. Comparative results on the pure CVRP instances of Class 1.
Table A1. Comparative results on the pure CVRP instances of Class 1.
InstBKSPRMP VNS BR-LNS SA CGA-TS-LNS
CostImpCostImpCostImpCostImpCostImp
1278.73278.730.00278.730.00278.730.00278.730.00278.730.00
2334.96334.960.00334.960.00334.960.00334.960.00334.960.00
3358.40358.400.00358.400.00358.400.00358.400.00358.400.00
4430.88430.880.00430.880.00430.880.00430.880.00430.880.00
5375.28375.280.00375.280.00375.280.00375.280.00375.280.00
6495.85495.850.00495.850.00495.850.00495.850.00495.850.00
7568.56568.560.00568.560.00568.560.00568.560.00568.560.00
8568.56568.560.00568.560.00568.560.00568.560.00568.560.00
9607.65607.650.00607.650.00607.650.00607.650.00607.650.00
10535.74535.80−0.01535.80−0.01535.80−0.01535.80−0.01535.80−0.01
11505.01505.010.00505.010.00505.010.00505.010.00505.010.00
12610.00610.000.00610.000.00610.000.00610.000.00610.000.00
132006.342006.340.002006.340.002006.340.002006.340.002006.340.00
14837.67837.670.00837.670.00837.670.00837.670.00837.670.00
15837.67837.670.00837.670.00837.670.00837.670.00837.670.00
16698.61698.610.00698.610.00698.610.00698.610.00698.610.00
17861.79861.790.00861.790.00861.790.00861.790.00861.790.00
18723.54723.540.00723.540.00723.540.00723.540.00723.540.00
19524.61524.610.00524.610.00524.610.00524.610.00524.610.00
20241.97241.970.00241.970.00241.970.00241.970.00241.970.00
21687.60687.600.00687.600.00687.600.00687.600.00687.600.00
22740.66740.660.00740.660.00740.660.00740.660.00740.660.00
23835.26835.260.00835.260.00835.260.00835.260.00835.260.00
241024.691024.690.001024.690.001024.690.001024.690.001024.690.00
25826.14826.140.00826.140.00826.140.00826.140.00826.140.00
26819.56819.560.00819.560.00819.560.00819.560.00819.560.00
271082.651082.650.001082.650.001082.650.001082.650.001082.650.00
281040.701042.12−0.141042.12−0.141042.12−0.141042.12−0.141042.12−0.14
291162.961162.960.001162.960.001162.960.001162.960.001162.960.00
301028.421028.420.001028.420.001028.420.001029.79−0.131028.420.00
311299.211299.56−0.031302.48−0.251299.210.001301.03−0.141297.250.15
321296.181296.91−0.061300.22−0.311296.180.001300.30−0.321295.870.02
331296.131299.55−0.261298.02−0.151297.50−0.111296.130.001294.290.14
34708.39709.82−0.20708.390.00709.08−0.10708.66−0.04708.260.02
35862.79866.06−0.38865.39−0.30864.63−0.21862.790.00862.610.02
36583.98585.46−0.25586.49−0.43590.16−1.06583.980.00582.920.18
Avg769.37769.70−0.04769.80−0.06769.69−0.04769.62−0.03769.250.01
BKS: Best-known solution from the literature. Bold entries correspond to higher quality solutions. Imp: Percentage improvement between the cost and BKS (Imp = 100*(BKS – cost)/BKS).
Table A2. Comparative results for the 2|UR|L instances of Class 2.
Table A2. Comparative results for the 2|UR|L instances of Class 2.
InstBKSACO MS-BR SA xPRMP CGA-TS-LNS
CostImpCostImpCostImpCostImpCostImp
1278.73278.730.00278.730.00278.730.00278.730.00278.730.00
2334.96334.960.00334.960.00334.960.00334.960.00334.960.00
3380.35380.350.00380.350.00380.350.00385.29−1.30380.350.00
4430.88430.880.00430.880.00430.890.00430.890.00430.880.00
5375.28375.280.00375.280.00375.280.00375.280.00375.280.00
6495.85495.850.00495.850.00495.850.00495.850.00495.850.00
7715.02715.020.00715.020.00715.020.00715.020.00715.020.00
8665.17674.19−1.36665.170.00665.170.00665.170.00665.170.00
9607.65607.650.00607.650.00607.650.00607.650.00607.650.00
10667.42684.42−2.55667.420.00667.86−0.07667.420.00673.95−0.98
11664.48678.93−2.17664.480.00666.16−0.25666.16−0.25668.48−0.60
12610.00610.000.00610.000.00610.000.00610.000.00610.000.00
132502.652504.53−0.082502.650.002504.53−0.082502.650.002502.650.00
141029.341032.01−0.261029.340.001029.340.001029.340.001029.340.00
151001.511008.56−0.701001.510.001001.510.001001.510.001001.510.00
16698.61698.610.00698.610.00698.610.00698.610.00698.610.00
17861.79863.27−0.17861.790.00861.790.00861.790.00861.790.00
18982.44988.91−0.66988.61−0.63987.10−0.47982.440.00986.78−0.44
19711.97730.16−2.55726.51−2.04723.93−1.68711.970.00725.35−1.88
20488.69492.91−0.86489.23−0.11488.690.00488.690.00488.170.11
21962.10978.07−1.66964.49−0.25968.42−0.66962.100.00965.25−0.33
22976.70988.15−1.17976.700.00985.16−0.87993.50−1.72984.73−0.82
23984.001005.94−2.23985.18−0.12984.000.00991.99−0.81987.88−0.39
241140.131160.48−1.781152.35−1.071140.130.001142.02−0.171139.840.03
251345.891360.72−1.101356.24−0.771345.890.001348.66−0.211354.70−0.65
261255.161267.04−0.951262.43−0.581257.00−0.151255.160.001256.80−0.13
271266.891283.66−1.321285.24−1.451271.10−0.331266.890.001270.38−0.28
282482.862528.64−1.842517.27−1.392491.86−0.362482.860.002502.18−0.78
292128.532184.59−2.632151.68−1.092129.10−0.032128.530.002130.64−0.10
301740.871780.54−2.281755.89−0.861740.870.001744.11−0.191747.45−0.38
312154.332232.71−3.642171.60−0.802162.88−0.402154.330.002242.80−4.11
322165.962221.66−2.572191.58−1.182165.960.002169.66−0.172188.29−1.03
332157.232205.34−2.232175.85−0.862157.230.002161.03−0.182167.13−0.46
341120.441150.81−2.711140.83−1.821121.67−0.111120.440.001134.40−1.25
351310.331350.91−3.101340.41−2.301310.330.001312.88−0.191319.46−0.70
361623.541702.33−4.851679.27−3.431625.42−0.121623.540.001678.95−3.41
Avg1092.161110.74−1.701100.86−0.801093.90−0.161093.53−0.131100.04−0.72
BKS: Best-known solution from the literature. Bold entries correspond to higher quality solutions. Imp: Percentage improvement between the cost and BKS (Imp = 100*(BKS – cost)/BKS).
Table A3. Comparative results for the 2|UR|L instances of Class 3.
Table A3. Comparative results for the 2|UR|L instances of Class 3.
InstBKSACO MS-BR SA xPRMP CGA-TS-LNS
CostImpCostImpCostImpCostImpCostImp
1284.10284.23−0.05284.10 *0.00284.110.00284.100.00284.100.00
2352.16352.160.00352.160.00352.160.00352.160.00352.160.00
3385.32390.55−1.36385.320.00385.320.00385.320.00385.320.00
4430.88430.880.00430.880.00430.890.00430.890.00430.880.00
5379.94379.940.00379.940.00379.940.00379.940.00379.940.00
6498.16498.160.00498.160.00498.160.00498.160.00498.160.00
7664.96678.75−2.07664.960.00664.960.00664.960.00664.960.00
8738.43738.430.00738.430.00738.430.00738.430.00738.430.00
9607.65607.650.00607.650.00607.650.00607.650.00607.650.00
10591.16615.68−4.15615.36−4.09591.61−0.08591.160.00615.36−4.09
11699.35706.94−1.09699.350.00699.350.00699.350.00699.350.00
12610.00610.000.00610.000.00610.000.00610.000.00610.000.00
132377.392450.19−3.062377.390.002377.390.002377.390.002377.390.00
14988.79996.11−0.74988.790.00988.800.00988.800.00988.790.00
151116.071145.04−2.601120.75−0.421116.070.001116.070.001116.070.00
16698.61698.610.00698.610.00698.610.00698.610.00698.610.00
17861.79862.62−0.10861.790.00861.790.00861.790.00861.790.00
18986.301025.35−3.96986.300.00986.300.001009.62−2.36986.300.00
19749.43753.66−0.56752.06−0.35749.430.00751.56−0.28751.18−0.23
20511.46517.61−1.20511.460.00511.460.00511.460.00511.460.00
211086.721114.16−2.531089.75−0.281086.720.001087.79−0.101085.690.09
221024.111046.71−2.211031.79−0.751024.110.001028.33−0.411023.500.06
231041.601068.63−2.601056.56−1.441041.600.001044.06−0.241045.13−0.34
241064.381082.30−1.681073.01−0.811066.15−0.171064.380.001064.430.00
251325.241355.61−2.291353.90−2.161333.64−0.631325.240.001333.14−0.60
261311.111344.32−2.531335.80−1.881311.110.001312.94−0.141314.93−0.29
271329.331376.34−3.541354.76−1.911329.330.001332.15−0.211326.730.20
282541.022604.08−2.482587.25−1.822541.020.002544.39−0.132545.98−0.20
292040.832090.56−2.442067.69−1.322040.830.002051.52−0.522048.04−0.35
301767.721811.22−2.461812.72−2.551767.720.001772.71−0.281775.00−0.41
312196.262276.01−3.632246.54−2.292196.260.002196.40−0.012196.320.00
322166.182247.06−3.732219.26−2.452166.180.002179.06−0.592177.63−0.53
332276.312355.08−3.462325.36−2.152276.310.002284.46−0.362311.18−1.53
341163.051204.31−3.551176.71−1.171165.57−0.221163.050.001172.77−0.84
351393.901439.13−3.241437.30−3.111393.900.001397.77−0.281420.79−1.93
361706.701791.54−4.971739.36−1.911708.05−0.081706.700.001724.60−1.05
Avg1110.181137.49−2.461124.20−1.261110.58−0.041112.45−0.211114.55−0.39
BKS: Best-known solution from the literature. Bold entries correspond to higher quality solutions. Imp: Percentage improvement between the cost and BKS (Imp = 100*(BKS – cost)/BKS). * Lower scores for this instance were mistakenly reported in Dominguez et al. [23] and Zachariadis et al. [27].
Table A4. Comparative results for the 2|UR|L instances of Class 4.
Table A4. Comparative results for the 2|UR|L instances of Class 4.
InstBKSACO MS-BR SA xPRMP CGA-TS-LNS
CostImpCostImpCostImpCostImpCostImp
1282.95282.950.00282.950.00282.950.00282.950.00282.950.00
2334.96342.00−2.10334.960.00334.960.00334.960.00334.960.00
3358.40362.41−1.12358.400.00362.41−1.12362.41−1.12362.41−1.12
4447.37447.370.00447.370.00447.370.00447.370.00447.370.00
5383.87383.880.00383.870.00383.880.00383.880.00383.870.00
6498.32498.320.00498.320.00498.320.00498.320.00498.320.00
7686.26702.45−2.36686.260.00686.260.00686.260.00686.260.00
8688.32692.47−0.60688.320.00688.320.00688.320.00688.320.00
9625.10625.130.00625.100.00625.100.00625.100.00625.100.00
10703.64703.640.00703.640.00703.640.00703.640.00703.640.00
11771.93782.31−1.34773.58−0.21771.930.00773.58−0.21773.58−0.21
12610.23614.24−0.66614.23−0.66610.230.00610.230.00614.23−0.66
132500.852583.27−3.302533.79−1.322533.79−1.322500.850.002533.79−1.32
14955.09981.90−2.81981.00−2.71955.090.00968.21−1.37968.39−1.39
151164.631216.14−4.421164.77−0.011164.630.001164.630.001164.630.00
16703.35703.350.00703.350.00703.350.00703.350.00703.350.00
17861.79861.790.00861.790.00861.790.00861.790.00861.790.00
181100.521110.48−0.911100.66−0.011100.520.001100.520.001100.520.00
19747.03772.05−3.35765.51−2.47747.030.00755.04−1.07754.98−1.06
20533.77546.91−2.46534.14−0.07533.770.00535.03−0.24535.07−0.24
21958.58976.48−1.87967.85−0.97959.82−0.13958.580.00961.78−0.33
221041.801057.15−1.471052.60−1.041041.800.001042.01−0.021040.650.11
231047.321079.63−3.091064.76−1.671047.320.001048.43−0.111047.320.00
241086.091103.28−1.581099.40−1.231086.090.001086.090.001091.76−0.52
251366.281408.64−3.101402.08−2.621366.280.001374.79−0.621367.80−0.11
261362.221414.28−3.821391.02−2.111362.220.001378.21−1.171379.29−1.25
271284.941318.93−2.651318.45−2.611284.940.001289.02−0.321289.21−0.33
282510.292638.07−5.092647.15−5.452510.290.002514.87−0.182527.78−0.70
292199.792267.37−3.072274.09−3.382199.790.002209.58−0.452201.05−0.06
301784.141834.68−2.831851.15−3.761784.140.001795.94−0.661792.12−0.45
312314.762385.63−3.062387.72−3.152314.760.002326.63−0.512322.37−0.33
322206.722268.67−2.812267.57−2.762206.720.002212.94−0.282219.94−0.60
332318.772393.01−3.202387.22−2.952318.770.002326.73−0.342322.01−0.14
341163.961208.19−3.801210.66−4.011163.960.001171.04−0.611165.76−0.15
351452.591503.42−3.501519.28−4.591452.590.001460.85−0.571471.74−1.32
361604.551683.25−4.901670.84−4.131605.00−0.031604.550.001611.53−0.44
Avg1129.481159.83−2.691154.27−2.201130.55−0.101132.96−0.311134.−0.43
BKS: Best-known solution from the literature. Bold entries correspond to higher quality solutions. Imp: Percentage improvement between the cost and BKS (Imp = 100*(BKS – cost)/BKS).
Table A5. Comparative results for the 2|UR|L instances of Class 5.
Table A5. Comparative results for the 2|UR|L instances of Class 5.
InstBKSACO MS-BR SA xPRMP CGA-TS-LNS
CostImpCostImpCostImpCostImpCostImp
1278.73278.730.00278.730.00278.730.00278.730.00278.730.00
2334.96334.960.00334.960.00334.960.00334.960.00334.960.00
3358.40358.400.00358.400.00358.400.00358.400.00358.400.00
4430.88430.880.00430.880.00430.890.00430.890.00430.880.00
5375.28375.280.00375.280.00375.280.00375.280.00375.280.00
6495.85495.850.00495.850.00495.850.00495.850.00495.850.00
7657.77657.770.00657.770.00657.770.00657.770.00657.770.00
8609.90609.900.00609.900.00609.900.00609.900.00609.900.00
9607.65607.650.00607.650.00607.650.00607.650.00607.650.00
10678.62680.26−0.24684.17−0.82678.620.00678.66−0.01678.620.00
11624.82624.820.00624.820.00624.820.00624.820.00624.820.00
12610.00610.23−0.04610.000.00610.000.00610.000.00610.000.00
132334.592334.78−0.012334.78−0.012334.590.002334.590.002334.590.00
14871.22889.20−2.06875.07−0.44871.220.00871.220.00871.220.00
151159.941160.20−0.021160.96−0.091159.940.001160.20−0.021159.940.00
16698.61698.610.00698.610.00698.610.00698.610.00698.610.00
17861.79861.790.00861.790.00861.790.00861.790.00861.790.00
18917.94924.04−0.66921.29−0.36917.940.00917.940.00917.930.00
19644.59651.97−1.14644.590.00644.590.00644.590.00644.590.00
20466.79477.32−2.26472.77−1.28466.790.00468.60−0.39466.790.00
21870.82888.26−2.00886.04−1.75870.820.00870.820.00873.25−0.28
22928.02942.06−1.51945.92−1.93928.020.00930.83−0.30931.63−0.39
23922.34942.80−2.22938.25−1.72922.340.00926.68−0.47927.42−0.55
241042.371048.33−0.571046.84−0.431042.370.001042.370.001042.410.00
251149.661170.38−1.801168.87−1.671149.660.001150.04−0.031154.53−0.42
261209.341231.72−1.851220.83−0.951209.340.001213.03−0.311216.09−0.56
271231.521260.11−2.321258.12−2.161231.520.001237.05−0.451237.96−0.52
282276.712336.45−2.622322.37−2.012276.710.002287.98−0.502321.42−1.96
292115.532158.78−2.042152.26−1.742115.530.002125.35−0.462146.14−1.45
301512.711542.14−1.951548.29−2.351512.710.001517.86−0.341520.51−0.52
311968.892016.59−2.422011.88−2.181968.890.001980.17−0.571976.45−0.38
321938.961983.34−2.291992.03−2.741938.960.001949.14−0.531955.43−0.85
331946.512002.72−2.892001.26−2.811946.510.001968.32−1.121959.31−0.66
341006.381036.16−2.961040.78−3.421006.380.001014.20−0.781030.70−2.42
351224.211256.34−2.621271.21−3.841224.210.001227.13−0.241239.41−1.24
361457.051505.54−3.331522.73−4.511457.050.001462.33−0.361472.74−1.08
Avg1022.761038.45−1.531037.94−1.481022.760.001025.66−0.281028.44−0.56
BKS: Best-known solution from the literature. Bold entries correspond to higher quality solutions. Imp: Percentage improvement between the cost and BKS (Imp = 100*(BKS – cost)/BKS).
Table A6. Sign test pairwise comparison for the instances of Class 1.
Table A6. Sign test pairwise comparison for the instances of Class 1.
CGA-TS-LNSPRMPVNSBR-LNSSA
(a) Wins ( + ) 6666
(b) Loses ( ) 0000
(c) Equal to BKS30303030
a + c36363636
Detected differences α = 0.1 α = 0.1 α = 0.1 α = 0.1
Table A7. Sign test pairwise comparison for the 2|UR|L instances of Class 2.
Table A7. Sign test pairwise comparison for the 2|UR|L instances of Class 2.
CGA-TS-LNSACOMS-BRSAXPRMP
(a) Wins (+)241596
(b) Loses (−)2112730
(c) Equal to BKS101000
a + c342596
Detected differences α = 0.1 α = 0.1
Table A8. Sign test pairwise comparison for the 2|UR|L instances of Class 3.
Table A8. Sign test pairwise comparison for the 2|UR|L instances of Class 3.
CGA-TS-LNSACOMS-BRSAXPRMP
(a) Wins (+)271989
(b) Loses (−)192827
(c) Equal to BKS8800
a + c352789
Detected differences α = 0.1 α = 0.1
Table A9. Sign test pairwise comparison for the 2|UR|L instances of Class 4.
Table A9. Sign test pairwise comparison for the 2|UR|L instances of Class 4.
CGA-TS-LNSACOMS-BRSAXPRMP
(a) Wins (+)2920210
(b) Loses (−)063426
(c) Equal to BKS71000
a + c3630210
Detected differences α = 0.1 α = 0.1 α = 0.05
Table A10. Sign test pairwise comparison for the 2|UR|L instances of Class 5.
Table A10. Sign test pairwise comparison for the 2|UR|L instances of Class 5.
CGA-TS-LNSACOMS-BRSAXPRMP
(a) Wins (+)242227
(b) Loses (−)023429
(c) Equal to BKS121200
a + c363427
Detected differences α = 0.1 α = 0.1

References

  1. Laporte, G. Fifty Years of Vehicle Routing. Transp. Sci. 2009, 43, 408–416. [Google Scholar] [CrossRef]
  2. Irnich, S.; Toth, P.; Vigo, D. Chapter 1: The Family of Vehicle Routing Problems. In Vehicle Routing; Society for Industrial and Applied Mathematics: Philadelphia, PA, USA, 2014; pp. 1–33. [Google Scholar] [CrossRef]
  3. Dantzig, G.; Fulkerson, R.; Johnson, S. Solution of a Large-Scale Traveling-Salesman Problem. J. Oper. Res. Soc. Am. 1954, 2, 393–410. [Google Scholar] [CrossRef]
  4. Baioletti, M.; Milani, A.; Santucci, V.; Bartoccini, U. An experimental comparison of algebraic differential evolution using different generating sets. In Proceedings of the Genetic and Evolutionary Computation Conference Companion, Prague, Czech Republic, 13–17 July 2019. [Google Scholar] [CrossRef]
  5. Barbu, T. Automatic Unsupervised Texture Recognition Framework Using Anisotropic Diffusion-Based Multi-Scale Analysis and Weight-Connected Graph Clustering. Symmetry 2021, 13, 925. [Google Scholar] [CrossRef]
  6. Kang, H.Y.; Lee, A. An Enhanced Approach for the Multiple Vehicle Routing Problem with Heterogeneous Vehicles and a Soft Time Window. Symmetry 2018, 10, 650. [Google Scholar] [CrossRef] [Green Version]
  7. Kucharska, E. Dynamic Vehicle Routing Problem—Predictive and Unexpected Customer Availability. Symmetry 2019, 11, 546. [Google Scholar] [CrossRef] [Green Version]
  8. Seo, M.; Lee, S.; Lee, S. Clustering-based Data Dissemination Protocol Using the Path Similarity for Autonomous Vehicles. Symmetry 2019, 11, 260. [Google Scholar] [CrossRef] [Green Version]
  9. Kim, J. Vehicle Detection Using Deep Learning Technique in Tunnel Road Environments. Symmetry 2020, 12, 2012. [Google Scholar] [CrossRef]
  10. Xu, Y.; Tang, W.; Chen, B.; Qiu, L.; Yang, R. A Model Predictive Control with Preview-Follower Theory Algorithm for Trajectory Tracking Control in Autonomous Vehicles. Symmetry 2021, 13, 381. [Google Scholar] [CrossRef]
  11. Dantzig, G.B.; Ramser, J.H. The Truck Dispatching Problem. Manag. Sci. 1959, 6, 80–91. [Google Scholar] [CrossRef]
  12. Vidal, T.; Crainic, T.G.; Gendreau, M.; Prins, C. A hybrid genetic algorithm with adaptive diversity management for a large class of vehicle routing problems with time-windows. Comput. Oper. Res. 2013, 40, 475–489. [Google Scholar] [CrossRef]
  13. Lodi, A.; Martello, S.; Vigo, D. Recent advances on two-dimensional bin packing problems. Discret. Appl. Math. 2002, 123, 379–396. [Google Scholar] [CrossRef] [Green Version]
  14. Iori, M.; Salazar-González, J.J.; Vigo, D. An Exact Approach for the Vehicle Routing Problem with Two-Dimensional Loading Constraints. Transp. Sci. 2007, 41, 253–264. [Google Scholar] [CrossRef] [Green Version]
  15. Gendreau, M.; Iori, M.; Laporte, G.; Martello, S. A Tabu search heuristic for the vehicle routing problem with two-dimensional loading constraints. Networks 2007, 51, 4–18. [Google Scholar] [CrossRef] [Green Version]
  16. Fuellerer, G.; Doerner, K.F.; Hartl, R.F.; Iori, M. Ant colony optimization for the two-dimensional loading vehicle routing problem. Comput. Oper. Res. 2009, 36, 655–673. [Google Scholar] [CrossRef]
  17. Zachariadis, E.E.; Tarantilis, C.D.; Kiranoudis, C.T. A Guided Tabu Search for the Vehicle Routing Problem with two-dimensional loading constraints. Eur. J. Oper. Res. 2009, 195, 729–743. [Google Scholar] [CrossRef]
  18. Strodl, J.; Doerner, K.F.; Tricoire, F.; Hartl, R.F. On Index Structures in Hybrid Metaheuristics for Routing Problems with Hard Feasibility Checks: An Application to the 2-Dimensional Loading Vehicle Routing Problem. In Hybrid Metaheuristics; Springer: Berlin/Heidelberg, Germany, 2010; pp. 160–173. [Google Scholar] [CrossRef]
  19. Leung, S.C.H.; Zheng, J.; Zhang, D.; Zhou, X. Simulated annealing for the vehicle routing problem with two-dimensional loading constraints. Flex. Serv. Manuf. J. 2010, 22, 61–82. [Google Scholar] [CrossRef]
  20. Leung, S.C.; Zhou, X.; Zhang, D.; Zheng, J. Extended guided tabu search and a new packing algorithm for the two-dimensional loading vehicle routing problem. Comput. Oper. Res. 2011, 38, 205–215. [Google Scholar] [CrossRef]
  21. Duhamel, C.; Lacomme, P.; Quilliot, A.; Toussaint, H. A multi-start evolutionary local search for the two-dimensional loading capacitated vehicle routing problem. Comput. Oper. Res. 2011, 38, 617–640. [Google Scholar] [CrossRef]
  22. Zachariadis, E.E.; Tarantilis, C.D.; Kiranoudis, C.T. Integrated distribution and loading planning via a compact metaheuristic algorithm. Eur. J. Oper. Res. 2013, 228, 56–71. [Google Scholar] [CrossRef]
  23. Dominguez, O.; Juan, A.A.; Faulin, J. A biased-randomized algorithm for the two-dimensional vehicle routing problem with and without item rotations. Int. Trans. Oper. Res. 2014, 21, 375–398. [Google Scholar] [CrossRef]
  24. Wei, L.; Zhang, Z.; Zhang, D.; Lim, A. A variable neighborhood search for the capacitated vehicle routing problem with two-dimensional loading constraints. Eur. J. Oper. Res. 2015, 243, 798–814. [Google Scholar] [CrossRef]
  25. Wei, L.; Zhang, Z.; Zhang, D.; Leung, S.C. A simulated annealing algorithm for the capacitated vehicle routing problem with two-dimensional loading constraints. Eur. J. Oper. Res. 2018, 265, 843–859. [Google Scholar] [CrossRef]
  26. Wei, L.; Wang, Y.; Cheng, H.; Huang, J. An open space based heuristic for the 2D strip packing problem with unloading constraints. Appl. Math. Model. 2019, 70, 67–81. [Google Scholar] [CrossRef]
  27. Zachariadis, E.E.; Tarantilis, C.D.; Kiranoudis, C.T. The Vehicle Routing Problem with Simultaneous Pick-ups and Deliveries and Two-Dimensional Loading Constraints. Eur. J. Oper. Res. 2016, 251, 369–386. [Google Scholar] [CrossRef]
  28. Pinto, T.; Alves, C.; de Carvalho, J.V. Variable neighborhood search algorithms for the vehicle routing problem with two-dimensional loading constraints and mixed linehauls and backhauls. Int. Trans. Oper. Res. 2018, 27, 549–572. [Google Scholar] [CrossRef] [Green Version]
  29. Gendreau, M.; Iori, M.; Laporte, G.; Martello, S. A Tabu Search Algorithm for a Routing and Container Loading Problem. Transp. Sci. 2006, 40, 342–350. [Google Scholar] [CrossRef]
  30. Tarantilis, C.; Zachariadis, E.; Kiranoudis, C. A Hybrid Metaheuristic Algorithm for the Integrated Vehicle Routing and Three-Dimensional Container-Loading Problem. IEEE Trans. Intell. Transp. Syst. 2009, 10, 255–271. [Google Scholar] [CrossRef]
  31. Fuellerer, G.; Doerner, K.F.; Hartl, R.F.; Iori, M. Metaheuristics for vehicle routing problems with three-dimensional loading constraints. Eur. J. Oper. Res. 2010, 201, 751–759. [Google Scholar] [CrossRef]
  32. Lacomme, P.; Toussaint, H.; Duhamel, C. A GRASP×ELS for the vehicle routing problem with basic three-dimensional loading constraints. Eng. Appl. Artif. Intell. 2013, 26, 1795–1810. [Google Scholar] [CrossRef]
  33. Bortfeldt, A. A hybrid algorithm for the capacitated vehicle routing problem with three-dimensional loading constraints. Comput. Oper. Res. 2012, 39, 2248–2257. [Google Scholar] [CrossRef]
  34. Koch, H.; Bortfeldt, A.; Wäscher, G. A hybrid algorithm for the vehicle routing problem with backhauls, time windows and three-dimensional loading constraints. OR Spectr. 2018, 40, 1029–1075. [Google Scholar] [CrossRef]
  35. Bortfeldt, A.; Yi, J. The Split Delivery Vehicle Routing Problem with three-dimensional loading constraints. Eur. J. Oper. Res. 2020, 282, 545–558. [Google Scholar] [CrossRef]
  36. Iori, M.; Martello, S. Routing problems with loading constraints. TOP 2010, 18, 4–27. [Google Scholar] [CrossRef]
  37. Pollaris, H.; Braekers, K.; Caris, A.; Janssens, G.K.; Limbourg, S. Vehicle routing problems with loading constraints: State-of-the-art and future directions. OR Spectr. 2014, 37, 297–330. [Google Scholar] [CrossRef]
  38. Golden, B.L.; Levy, L.; Vohra, R. The orienteering problem. Nav. Res. Logist. 1987, 34, 307–318. [Google Scholar] [CrossRef]
  39. Santucci, V.; Baioletti, M. A Memetic Approach for the Orienteering Problem. In Communications in Computer and Information Science; Springer International Publishing: Cham, Switzerland, 2020; pp. 38–48. [Google Scholar] [CrossRef]
  40. Moghdani, R.; Salimifard, K.; Demir, E.; Benyettou, A. The green vehicle routing problem: A systematic literature review. J. Clean. Prod. 2021, 279, 123691. [Google Scholar] [CrossRef]
  41. Holland, J.H. Adaptation in Natural and Artificial Systems: An Introductory Analysis with Applications to Biology, Control and Artificial Intelligence; MIT Press: Cambridge, MA, USA, 1992. [Google Scholar]
  42. Glover, F. Future paths for integer programming and links to artificial intelligence. Comput. Oper. Res. 1986, 13, 533–549. [Google Scholar] [CrossRef]
  43. Shaw, P. Using Constraint Programming and Local Search Methods to Solve Vehicle Routing Problems. In Principles and Practice of Constraint Programming—CP98; Springer: Berlin/Heidelberg, Germany, 1998; pp. 417–431. [Google Scholar] [CrossRef]
  44. Glover, F.; Taillard, E.; Taillard, E. A user’s guide to tabu search. Ann. Oper. Res. 1993, 41, 1–28. [Google Scholar] [CrossRef]
  45. Fiechter, C.N. A parallel tabu search algorithm for large traveling salesman problems. Discret. Appl. Math. 1994, 51, 243–267. [Google Scholar] [CrossRef] [Green Version]
  46. Lorena, L.A.N.; Furtado, J.C. Constructive Genetic Algorithm for Clustering Problems. Evol. Comput. 2001, 9, 309–327. [Google Scholar] [CrossRef]
  47. Ursani, Z.; Essam, D.; Cornforth, D.; Stocker, R. Localized genetic algorithm for vehicle routing problem with time windows. Appl. Soft Comput. 2011, 11, 5375–5390. [Google Scholar] [CrossRef]
  48. Solomon, M.M. Algorithms for the Vehicle Routing and Scheduling Problems with Time Window Constraints. Oper. Res. 1987, 35, 254–265. [Google Scholar] [CrossRef] [Green Version]
  49. Nagano, M.S.; Ruiz, R.; Lorena, L.A.N. A Constructive Genetic Algorithm for permutation flowshop scheduling. Comput. Ind. Eng. 2008, 55, 195–207. [Google Scholar] [CrossRef] [Green Version]
  50. Gomes, S.P.; Lorena, L.A.N.; Ribeiro, G.M. A Constructive Genetic Algorithm for Discrete Dispersion on Point Feature Cartographic Label Placement Problems. Geogr. Anal. 2015, 48, 43–58. [Google Scholar] [CrossRef]
  51. Cordeau, J.F.; Laporte, G.; Mercier, A. A unified tabu search heuristic for vehicle routing problems with time windows. J. Oper. Res. Soc. 2001, 52, 928–936. [Google Scholar] [CrossRef]
  52. Tao, Y.; Wang, F. An effective tabu search approach with improved loading algorithms for the 3L-CVRP. Comput. Oper. Res. 2015, 55, 127–140. [Google Scholar] [CrossRef]
  53. Reil, S.; Bortfeldt, A.; Mönch, L. Heuristics for vehicle routing problems with backhauls, time windows, and 3D loading constraints. Eur. J. Oper. Res. 2018, 266, 877–894. [Google Scholar] [CrossRef]
  54. Nara, E.O.B.; Sordi, D.C.; Schaefer, J.L.; Schreiber, J.N.C.; Baierle, I.C.; Sellitto, M.A.; Furtado, J.C. Prioritization of OHS key performance indicators that affecting business competitiveness – A demonstration based on MAUT and Neural Networks. Saf. Sci. 2019, 118, 826–834. [Google Scholar] [CrossRef]
  55. Glover, F.; Melián, B. Tabu Search. Intel. Artif. 2003, 7. [Google Scholar] [CrossRef]
  56. Toffolo, T.A.; Vidal, T.; Wauters, T. Heuristics for vehicle routing problems: Sequence or set optimization? Comput. Oper. Res. 2019, 105, 118–131. [Google Scholar] [CrossRef] [Green Version]
  57. Erdoğan, G. An open source Spreadsheet Solver for Vehicle Routing Problems. Comput. Oper. Res. 2017, 84, 62–72. [Google Scholar] [CrossRef]
  58. Johnson, D. Near-Optimal Bin Packing Algorithms; Massachusetts Institute of Technology. Dept. of Mathematics: Cambridge, MA, USA, 1973. [Google Scholar]
  59. Dominguez, O.; Guimarans, D.; Juan, A.A.; de la Nuez, I. A Biased-Randomised Large Neighbourhood Search for the two-dimensional Vehicle Routing Problem with Backhauls. Eur. J. Oper. Res. 2016, 255, 442–462. [Google Scholar] [CrossRef]
  60. Derrac, J.; García, S.; Molina, D.; Herrera, F. A practical tutorial on the use of nonparametric statistical tests as a methodology for comparing evolutionary and swarm intelligence algorithms. Swarm Evol. Comput. 2011, 1, 3–18. [Google Scholar] [CrossRef]
  61. Oliveira, R.R.; Cardoso, I.M.; Barbosa, J.L.; da Costa, C.A.; Prado, M.P. An intelligent model for logistics management based on geofencing algorithms and RFID technology. Expert Syst. Appl. 2015, 42, 6082–6097. [Google Scholar] [CrossRef]
  62. Gomes, J.Z.; Barbosa, J.L.V.; Geyer, C.F.R.; dos Anjos, J.C.S.; Canto, J.V.; Pessin, G. Ubiquitous Intelligent Services for Vehicular Users: A Systematic Mapping. Interact. Comput. 2019, 31, 465–479. [Google Scholar] [CrossRef]
  63. Barbosa, J.; Tavares, J.; Cardoso, I.; Alves, B.; Martini, B. TrailCare: An indoor and outdoor Context-aware system to assist wheelchair users. Int. J. Hum. Comput. Stud. 2018, 116, 1–14. [Google Scholar] [CrossRef]
  64. Aranda, J.A.S.; Bavaresco, R.S.; de Carvalho, J.V.; Yamin, A.C.; Tavares, M.C.; Barbosa, J.L.V. A computational model for adaptive recording of vital signs through context histories. J. Ambient. Intell. Humaniz. Comput. 2021. [Google Scholar] [CrossRef]
  65. Rosa, J.H.; Barbosa, J.L.V.; Kich, M.; Brito, L. A Multi-Temporal Context-aware System for Competences Management. Int. J. Artif. Intell. Educ. 2015, 25, 455–492. [Google Scholar] [CrossRef] [Green Version]
  66. Machado, S.D.; da Rosa Tavares, J.E.; Martins, M.G.; Barbosa, J.L.V.; González, G.V.; Leithardt, V.R.Q. Ambient Intelligence Based on IoT for Assisting People with Alzheimer’s Disease Through Context Histories. Electronics 2021, 10, 1260. [Google Scholar] [CrossRef]
  67. Dupont, D.; Barbosa, J.L.V.; Alves, B.M. CHSPAM: A multi-domain model for sequential pattern discovery and monitoring in contexts histories. Pattern Anal. Appl. 2019, 23, 725–734. [Google Scholar] [CrossRef]
  68. da Rosa, J.H.; Barbosa, J.L.; Ribeiro, G.D. ORACON: An adaptive model for context prediction. Expert Syst. Appl. 2016, 45, 56–70. [Google Scholar] [CrossRef]
  69. Filippetto, A.S.; Lima, R.; Barbosa, J.L.V. A risk prediction model for software project management based on similarity analysis of context histories. Inf. Softw. Technol. 2021, 131, 106497. [Google Scholar] [CrossRef]
  70. Lucca, A.V.; Sborz, G.M.; Leithardt, V.; Beko, M.; Zeferino, C.A.; Parreira, W. A Review of Techniques for Implementing Elliptic Curve Point Multiplication on Hardware. J. Sens. Actuator Netw. 2020, 10, 3. [Google Scholar] [CrossRef]
  71. Martins, J.A.; Ochôa, I.S.; Silva, L.A.; Mendes, A.S.; González, G.V.; Santana, J.D.P.; Leithardt, V.R.Q. PRIPRO: A Comparison of Classification Algorithms for Managing Receiving Notifications in Smart Environments. Appl. Sci. 2020, 10, 502. [Google Scholar] [CrossRef] [Green Version]
  72. Leithardt, V.; Santos, D.; Silva, L.; Viel, F.; Zeferino, C.; Silva, J. A Solution for Dynamic Management of User Profiles in IoT Environments. IEEE Lat. Am. Trans. 2020, 18, 1193–1199. [Google Scholar] [CrossRef]
Figure 1. Example of 2|SO|L 2L-CVRP.
Figure 1. Example of 2|SO|L 2L-CVRP.
Symmetry 13 01697 g001
Figure 2. Macro flow of CGA-TS-LNS algorithm.
Figure 2. Macro flow of CGA-TS-LNS algorithm.
Symmetry 13 01697 g002
Figure 3. A sample of solution data matrix.
Figure 3. A sample of solution data matrix.
Symmetry 13 01697 g003
Figure 4. Example of ranking of Euclidian distance between customers.
Figure 4. Example of ranking of Euclidian distance between customers.
Symmetry 13 01697 g004
Figure 5. Initial population of CGA framework.
Figure 5. Initial population of CGA framework.
Symmetry 13 01697 g005
Figure 6. Select population of CGA framework.
Figure 6. Select population of CGA framework.
Symmetry 13 01697 g006
Figure 7. Recombine population of CGA algorithm.
Figure 7. Recombine population of CGA algorithm.
Symmetry 13 01697 g007
Figure 8. Initial solution of CGA algorithm.
Figure 8. Initial solution of CGA algorithm.
Symmetry 13 01697 g008
Figure 9. Initial solution construction through CGA framework edge/vertex insertion process.
Figure 9. Initial solution construction through CGA framework edge/vertex insertion process.
Symmetry 13 01697 g009
Figure 10. The neighborhood structures.
Figure 10. The neighborhood structures.
Symmetry 13 01697 g010
Figure 11. Polynomial regression to get function to set numNeighbors in TS algorithm.
Figure 11. Polynomial regression to get function to set numNeighbors in TS algorithm.
Symmetry 13 01697 g011
Figure 12. Average cost for Class 1 instances.
Figure 12. Average cost for Class 1 instances.
Symmetry 13 01697 g012
Table 1. Characteristics of items in Classes 2–5 instances.
Table 1. Characteristics of items in Classes 2–5 instances.
Class m i Vertical Homogeneous Horizontal
LengthWidthLengthWidthLengthWidth
2[1, 2][0.4L, 0.9L][0.1W, 0.2W][0.2L, 0.5L][0.2W, 0.5W][0.1L, 0.2L][0.4W, 0.9W]
3[1, 3][0.3L, 0.8L][0.1W, 0.2W][0.2L, 0.4L][0.2W, 0.4W][0.1L, 0.2L][0.3W, 0.8W]
4[1, 4][0.2L, 0.7L][0.1W, 0.2W][0.1L, 0.4L][0.1W, 0.4W][0.1L, 0.2L][0.2W, 0.7W]
5[1, 5][0.1L, 0.6L][0.1W, 0.2W][0.1L, 0.3L][0.1W, 0.3W][0.1L, 0.2L][0.1W, 0.6W]
Publisher’s Note: MDPI stays neutral with regard to jurisdictional claims in published maps and institutional affiliations.

Share and Cite

MDPI and ACS Style

Fava, L.P.; Furtado, J.C.; Helfer, G.A.; Barbosa, J.L.V.; Beko, M.; Correia, S.D.; Leithardt, V.R.Q. A Multi-Start Algorithm for Solving the Capacitated Vehicle Routing Problem with Two-Dimensional Loading Constraints. Symmetry 2021, 13, 1697. https://doi.org/10.3390/sym13091697

AMA Style

Fava LP, Furtado JC, Helfer GA, Barbosa JLV, Beko M, Correia SD, Leithardt VRQ. A Multi-Start Algorithm for Solving the Capacitated Vehicle Routing Problem with Two-Dimensional Loading Constraints. Symmetry. 2021; 13(9):1697. https://doi.org/10.3390/sym13091697

Chicago/Turabian Style

Fava, Leandro Pinto, João Carlos Furtado, Gilson Augusto Helfer, Jorge Luis Victória Barbosa, Marko Beko, Sérgio Duarte Correia, and Valderi Reis Quietinho Leithardt. 2021. "A Multi-Start Algorithm for Solving the Capacitated Vehicle Routing Problem with Two-Dimensional Loading Constraints" Symmetry 13, no. 9: 1697. https://doi.org/10.3390/sym13091697

Note that from the first issue of 2016, this journal uses article numbers instead of page numbers. See further details here.

Article Metrics

Back to TopTop