• Tidak ada hasil yang ditemukan

An overview of the algorithm

Dalam dokumen Citation for published version (Halaman 113-118)

5. A Two-Level Variable Neighbourhood Search Algorithm for the Multiple-Trip

5.1. Two-Level VNS Algorithm: An Overview

5.1.1. An overview of the algorithm

The algorithm comprises two levels, i.e., outer and inner. We have employed several neighbourhood structures along with associated local search procedures at both levels of the algorithm. For the outer-level we define as a subset of neighbourhoods (shaking at outer-level) and as a subset of local search refinement routines; and at the inner-level as a full set of neighbourhoods (shaking at inner-level) and as a full set of local search refinement routines. σote that, “O” and “I” refer to the neighbourhoods and local search refinement routines used at the outer and the inner levels, respectively.

Moreover, a 3-dimentional data structure (detailed description of this data structure is given in Section 5.5) is used to store the initial solution as well as many other improved solutions during the search process.

At each cycle of the search process, the outer-level of the algorithm generates randomly a transitory solution from . A sub-set of local search refinement routines is then utilised to improve . Note that represents a subset of neighbourhoods and a subset of local search refinement routines used at outer-level. The resulting best solution is then recorded and transferred to the inner level of the algorithm where a

98 sequential variable neighbourhood descent (SeqVND) is used. At the inner level, both sets of the neighbourhoods and local search refinement routines are utilised and embedded systematically within a multi-layer local search optimiser framework.

Again a transitory solution is generated randomly from at the inner-level and transferred to (the multi-layer local search optimiser framework) for improvement.

Note that represents a full set of neighbourhoods and a full set of local search refinement routines used at inner-level. If the solution obtained by the multi-layer local search approach, , is better than the incumbent best solution , then it is updated as and the process cycles back to the same neighbourhood . Moreover, if is found to be the same or worse compared to , then a new is generated using the next neighbourhood and the multi-layer local search approach is then operated in the same manner. The process continues with the inner- level till is reached. At this stage the search process restarts from the outer-level and if is found to be better than the incumbent then it is updated as

and the improved solution is stored ; hence, the process of generating a transitional solution restarts from the same neighbourhood . But if is found to be the same or worse than the incumbent , a new transitory is generated using the next neighbourhood in . Hence, the outer-level is also iterated till is reached. The process terminates when the maximum number of iterations is met.

The Bin Packing Problem (BPP) is then solved for a pool of solutions obtained by the Two-Level VNS. The BPP starts by sorting the solutions in in the order of lowest to highest cost and initializing a 3-dimentional data structure (special data structure

99 which stores the solutions according to what routes are served by which vehicles – a detailed description of this data structure is provided in Section 5.5). CPLEX optimiser is then called to solve the BPP for each VNS solution in the pool and the packed solutions are stored in the data structure. Note that in the cases where a solution could not be packed due to the tight bin capacity then we use the Bisection Method (Petch and Salhi, 2004) to increase the bin capacity (i.e., allowing overtime) and the packed solution is reported with overtime. The allocation of overtime is common practice in multiple trip routing and allocation of overtime occurs in a situation where the number of vehicles increases and hence driving time decreases for each vehicle.

Therefore, it becomes hard to pack a solution due to tight vehicle’s driving time and hence allowing overtime becomes essential. The details of the Bisection Method are provided at the end of subsection 5.1.5 in this Chapter. The algorithmic steps of the Two-level VNS and BPP are shown in Figure 5.1 with their respective pseudo code presented in Figure 5.2 and Figure 5.3, respectively. The explanation of the main steps will be given next.

Phase I: Initial solution sweep-first-assignment-second approach

 Generate LH and BH open-ended routes using sweep

 Create a distance matrix of end nodes from open-ended routes

 Solve the assignment problem by calling CPLEX to obtain an initial feasible VRPB free fleet solution

Phase II: Two-Level VNS Algorithm

Initialize the solution pool data structure and add the initial solution to ,

Set: = 1 and

Repeat the process while Start outer-level

100 Let: subset of local search refinement routines for the outer-level

Set:

Repeat the process while

a.1: Generate a neighbouring solution at random;

a.2: Apply on neighbouring solution to improve it a.3: Assign the resulting solution to [ ] a.4: Start inner-level using

Let:

Multi-Layer local search optimiser framework Set:

Repeat the process while

a.4(1): Generate a neighbouring solution at random a.4(2): Apply on the neighbouring solution

a.4(3): Assign the resulting solution to [ ]

a.4(4): If then ; set and got to

a.4(1)

Else set and got to a.4(1)

a.5: If then ; ; set and go to a.1 Else set and go to a.1

Phase III: Solving the Multiple Trips aspect using the BPP

Initialize special 3-dimentional data structure and let number of solutions stored in .

Let .

Set:

Repeat the process while

Step1. Solve the BPP for solution p using CPLEX optimiser ( )

Step2. If solution p is feasibly packed then go to Step4 Else, go to Step3

Step3. Apply the Bisection Method to optimise the bin capacity

101

Set:

Repeat the process while

Step3.(1): Use the Bisection Method

Step3.(2): Solve the BPP for solution p using CPLEX optimiser Step4. Store the solution in the special data structure according to

what routes are served by which bins (vehicles)

Figure 5.1: Algorithmic steps of the Two-Level VNS for MT-VRPB

Function Two-Level VNS ( )

Let: = be a solution pool data structure

while do

Let:

while do

Select at random; [shake_outer]

; Let:

while do

Select at random; [shake_inner]

; [Multi-Layer local search framework]

If then

Else end while return

If then Else

end while return end while

Figure 5.2: Pseudo code for the Two-Level VNS

102

Function Bin-Packing ( )

Let: = be a 3-D data structure to store the packed solutions

Set: = be a pool of all sorted solution in descending order of cost ( )

while do

a. Select (��e�e )

b. If feasibly packed, go to d, Else go to c c.

while do

c1. Use the Bisection Method (see Section 5.5) c2.

end while

d.

end while

Figure 5.3: Pseudo code for the BPP

Dalam dokumen Citation for published version (Halaman 113-118)