• No se han encontrado resultados

TIPO II DEL ESTADO MIRANDA” Autor: Marrero C., Eli V

INFORME DE REVALIDA:

One key idea of tabu search is to avoid getting stuck at local optima by forbidding neighbourhood moves that lead to previously visited solutions. In theory, this can be achieved by recording complete descriptions of all solutions that have been visited. However, checking the whole solutions can be very inefficient as more and more solutions are visited and recorded. An alternative approach is to consider solution attributes, i.e. partial descriptions of solutions, in which case a move is regarded as tabu if it leads to a solution that contains certain solution attributes. Types of solution attributes that have been considered in existing tabu search algorithms for arc routing and vehicle routing include:

• Task-in-a-route attributes. This concerns the fact that a task is serviced in a certain route. When a task is removed from a route, it is prohibited from returning to that route for a given number of iterations. This type of solution attributes was used by Hertz et al. (2000) and Greistorfer (2003). A similar idea was also used by Chiang and Russell (1997), Ho and Haugland (2004), and Brand˜ao (2009) for vehicle routing, i.e. customers (demands on vertices) are considered instead of tasks.

• 2-customer attributes. This concerns an edge joining two customers in the same route for vehicle routing, or equivalently, the fact that two customers are serviced consecutively in the same route. When an edge is removed, it is prohibited from re-appearing for a given number of iterations. This type of

solution attributes was used by Ho and Haugland (2004), Montan´e and Galvao

(2006), and Holborn et al. (2012).

In our tabu search algorithm, after the best neighbourhood move in each iteration is selected, some solution attributes corresponding to the move are recorded in a so-called tabu list (which is initially empty). Each solution attribute that is recorded in the tabu list remains in the list for some iterations, the number of which is to be specified; this number is called a tabu tenure. To determine whether each neighbourhood move is tabu, solution attributes that would arise as a result of the move are checked, and the move is regarded as tabu if all of those attributes are currently in the tabu list. There are a variety of solution attributes that can be considered. Here, we will consider and compare four types of solution attributes as follows:

• 2-task attributes. This is similar to the 2-customer attributes described above but tasks are considered instead of customers. In other words, this concerns the fact that two tasks are serviced consecutively in the same route.

• 2-task-in-a-route attributes. This new attribute combines the concepts of the above two attributes. In other words, it concerns the fact that two tasks are serviced consecutively in a certain route.

• 3-task attributes. This new attribute concerns the fact that three tasks are serviced consecutively in the same route.

Notice that 2-task-in-a-route attributes contain more information than task-in-a- route and 2-task attributes, and 3-task attributes contain more information than 2-task attributes. A type of attribute that contains more information is expected to make fewer moves tabu, and so the corresponding tabu search algorithm is expected to be less restrictive (i.e. more admissible moves in each iteration). It will be investigated whether this necessarily leads to a better tabu search algorithm. Each type of solution attribute will be used separately (unless otherwise stated), giving four different variants of the tabu search algorithm. For clarity, the rest of this section describes what exactly is recorded in the tabu list and how to determine whether each neighbourhood move is tabu based on each type of solution attributes.

3.3.1

Task-in-a-Route Attributes

Recording solution attributes: When a task t is removed from a route R by

either a Single Insertion, Double Insertion, or Swap move, a pair (t, R) is recorded in the tabu list. Notice that a Single Insertion move corresponds to one pair, whereas a Double Insertion or Swap move corresponds to two pairs.

For 2-opt, notice that this type of move generally transfers many tasks between routes (especially when a route with many tasks is cut near the middle of the route), so it is expected that determining whether a 2-opt move is tabu based on the task-in-a-route attributes would involve recording and checking a large number of pairs. For this reason, we opt to use a separate tabu list for 2-opt moves based on 2-task attributes (see Section 3.3.2).

Determining tabu status of moves: A Single Insertion move that inserts task t

or Swap move that inserts task t1 into route R1 and task t2 into route R2 (R2 = R1 for Double Insertion) is tabu if both pairs (t1, R1), (t2, R2) are currently in the tabu list.

3.3.2

2-Task Attributes

Recording solution attributes: Let R = (vs, a1, . . . , an, v0) be a route. When task ai is removed from route R by either a Single Insertion, Double Insertion, or Swap move, two pairs (ai−1, ai) and (ai, ai+1) are recorded in the tabu list (that is, each pair of consecutive tasks involving the move task is recorded). For ease of notation, let a0 = vs (the starting vertex) and an+1 = v0 (the depot at the end of the route).

For 2-opt, the pair of tasks next to the cutting position in each route is recorded in the tabu list. More precisely, if a 2-opt move cuts a route R = (vs, a1, . . . , an, v0) into two parts (vs, a1, . . . , ai−1) and (ai, . . . , an, v0), then a pair (ai−1, ai) is recorded. Let ˜a denote the opposite direction of traversal on task a. Due to symmetry of routes in an undirected graph, for any tasks a and b, the pair (˜a, ˜b) is regarded as identical to the pair (b, a).

Determining tabu status of moves: A Single Insertion move that inserts task t

into a route (vs, b1, . . . , bn, v0) between tasks bj−1 and bj is tabu if both pairs (bj−1, t) and (t, bj) are currently in the tabu list. For a Double Insertion or Swap move, two pairs corresponding to each inserted task are checked, and the move is tabu if all the pairs are currently in the tabu list.

A 2-opt move is tabu if the pairs of tasks next to the joining positions in both routes are currently in the tabu list. More precisely, consider a 2-opt move that modifies two routes (vs1, a1, . . . , an1, v0) and (vs2, b1, . . . , bn2, v0) and gives two new routes,

namely (vs1, . . . , ai−1, bj, . . . , v0) and (vs2, . . . , bj−1, ai, . . . , v0). This 2-opt move is

tabu if both (ai−1, bj) and (bj−1, ai) are currently in the tabu list.

3.3.3

2-Task-in-a-Route Attributes

Recording solution attributes: The procedure is the same as the 2-task attributes

tasks (a, b) that would be recorded in the case of the 2-task attributes, we instead record a triple (a, b, R), where R is the route to which both tasks belong together before the solution is amended by a selected move.

Determining tabu status of moves: A Single Insertion move that inserts task

t into a route R = (vs, b1, . . . , bn, v0) between tasks bj−1 and bj is tabu if both triples (bj−1, t, R) and (t, bj, R) are currently in the tabu list. For a Double Insertion or Swap move, two triples corresponding to each inserted task are checked, and the move is tabu if all the pairs are currently in the tabu list.

A 2-opt move is tabu if the triples corresponding to tasks next to the joining positions in both routes are currently in the tabu list. More precisely, consider a 2-opt move that would amend routes R1 = (vs1, a1, . . . , an1, v0) and R2 = (vs2, b1, . . . , bn2, v0) and

give R1 = (vs1, . . . , ai−1, bj, . . . , v0) and R2 = (vs2, . . . , bj−1, ai, . . . , v0). This 2-opt

move is tabu if both (ai−1, bj, R1) and (bj−1, ai, R2) are currently in the tabu list.

3.3.4

3-Task Attributes

Recording solution attributes: Let R = (vs, a1, . . . , an, v0) be a route. When task ai is removed from route R by either a Single Insertion, Double Insertion, or Swap move, the triple (ai−1, ai, ai+1) is recorded in the tabu list. As before, let a0 = vs and an+1 = v0 for ease of notation.

For 2-opt, each task next to the cutting point in each route is regarded as a middle task in a triple, and a similar procedure for recoding attributes applies. More precisely, if a 2-opt move cuts a route R = (vs, a1, . . . , an, v0) into two parts (vs, a1, . . . , ai−1) and (ai, . . . , an, v0), then the triples (ai−2, ai−1, ai) and (ai−1, ai, ai+1) are recorded in the tabu list. If i = 1, ai−2 is undefined and so the triple (ai−2, ai−1, ai) is omitted. The other exception case (i.e. when i = n + 1) is dealt with in the same way. Due to symmetry of routes in an undirected graph, for any tasks a, b, and c, the triple (˜a, ˜b, ˜c) is regarded as identical to the triple (c, b, a).

Determining tabu status of moves: A Single Insertion move that inserts task

t into a route (vs, b1, . . . , bn, v0) between tasks bj−1 and bj is tabu if the triple (bj−1, t, bj) is currently in the tabu list. For a Double Insertion or Swap move, the triple corresponding to each inserted task is checked, and the move is tabu if both

the triples are currently in the tabu list.

A 2-opt move is tabu if all “new” sequences of 3 consecutive tasks that arise as a result of the move are currently in the tabu list (“new” here means that the sequences are not part of the solution before the move). More precisely, consider a 2-opt move that would amend routes R1 = (vs1, a1, . . . , an1, v0) and R2 = (vs2, b1, . . . , bn2, v0) and

give R1 = (vs1, . . . , ai−1, bj, . . . , v0) and R2 = (vs2, . . . , bj−1, ai, . . . , v0). This 2-opt

move is tabu if the following triples are currently in the tabu list: (ai−2, ai−1, bj), (ai−1, bj, bj+1), (bj−2, bj−1, ai), and (bj−1, ai, ai+1).

Documento similar