• No results found

Once the reduced neighborhood N (z0, F, λ) has been built, it could be entirely explo- red by solving the Reduced Reallocation Model (RRM) (5.8)–(5.13) to optimality. As mentioned before, for computing time reasons we decide to explore this neighborhood only in a partial way. Therefore we initialize RRM with a small subset of variables which ensure the model to be feasible, and then we solve its LP relaxation adding other variables by using column generation techniques. When no other variable with small (say) reduced cost can be added to the model, we “freeze” the current set of variables and we add the integrality requirements. The Partial Reduced Reallocation Model we get in this way corresponds to a partial reduced neighborhood which can be explored by solving the model through a general purpose MIP solver.

Let LP-RRM denote the Linear Programming relaxation of RRM. Then let SB denote the set of all the basic sequences in S extracted from the incumbent solution z0 (we say that s ∈ S is a basic sequence if it belongs to z0 and no other sequence in

S belonging to z0 contains s). For each s ∈ SB let is ∈ I denote the pivot insertion point the basic sequence s has been extracted from. Finally, let VP and SP denote the variable pool and the sequence pool, which contain, respectively, all the variables and all the sequences generated so far. With the above notation, the Neighborhood construction can be described in detail through the following steps:

1. (Initialization). Set SP := SB and VP := {xsi : s ∈ SB, i = is}. For each insertion point i ∈ I, construct a small number of new sequences s ∈ Si that “fit well” with i (i.e., that have a small insertion cost with respect to i), add these sequences to SP and the corresponding variables to VP. After this step, a feasible solution for RRM exists (e.g., the current solution z0) and we can use reduced costs for evaluating the “goodness” of the other variables.

2. (Pricing). Apply a fast Pricing step with the sequences generated so far to reduce the computational effort required for the Column generation step:

(a) add to SP all the sequences s ∈ S with cardinality 1 and 2; (b) solve LP-RRM;

(c) ∀i ∈ I and ∀s ∈ SP ∩ Si, if the reduced cost rcsi of the variable xsi does not exceed a given threshold RCmax (i.e., rcsi ≤ RCmax), then add xsi to VP; (d) if at least one variable has been added, repeat from Step 2b.

3. (Column generation). Look for “good” variables by (heuristically) solving the column generation problem associated with each insertion point in LP-RRM:

(a) for each i ∈ I, try to solve the column generation problem associated with i finding as many variables with small reduced cost as possible;

(b) if at least one variable has been found, add all the variables to VP, solve LP-RRM and repeat from Step 3a.

The Column generation step represents the crucial step of the Neighborhood con- struction phase, and is described in Section 5.6.1. This is the most time consuming step, but it often allows to improve even good quality initial solutions. However, preli- minary computational experiments showed that the Initialization and the Pricing steps are important as well, since they provide an initial nice structure for the Reduced Real- location Model. If we initialize the variable pool as VP := {xsi : s ∈ SB, i = is} and then apply only the Column generation step, we generally find the same final solution but in a much higher computing time, since in the first iterations of the Column gene- ration step a huge number of useless variables are generated and added to the variable pool. Moreover, during all the steps of the Neighborhood construction phase, hashing techniques are used to handle the variable and sequence pools to avoid the generation of duplicated variables.

5.6.1 The column generation problem

Consider the Linear Programming relaxation LP-RRM of the Reduced Reallocation Model, and let π1

v, π2i, πr3 and π4r be the dual variables associated, respectively, with constraints (5.9), (5.10), (5.11) and (5.12) in LP-RRM, where v ∈ F, i ∈ I and r ∈ R. Then, for any (s, i) ∈ {(s, i) ∈ S × I : i ∈ Is}, with s = (v1, . . . , vh) and i = (ai, bi), the reduced cost rcsi of variable xsi is defined by

rcsi:= γsi− X v∈V (s) ˜ π1v− ˜π2i − q(s)˜πr3i− γsi˜πr4i (5.16) where ˜π = (˜π1

v, ˜πi2, ˜πr3, ˜π4r) denotes the optimal dual solution of LP-RRM. Let P (s, i) = (VP, EP) denote the path (ai, v1, . . . , vh, bi) in G corresponding to variable xsi, where VP := {v1, . . . , vh} ⊆ V and EP := {(ai, v1), . . . , (vh, bi)} ⊆ E. We can rewrite the reduced cost of variable xsi as

rcsi:= −˜πi2− ci(1 − ˜π4ri) + X e∈EP

ce(1 − ˜π4ri) + X v∈VP

−(˜πv1+ qvπ˜3ri) (5.17) where ci denotes the cost of edge i = (ai, bi). Now consider the graph G(i, ˜π) = (Vi, Ei), with Vi:= {ai, bi} ∪ Fi and Ei:= E(Vi) \ (ai, bi), where E(Vi) denotes the set of edges in

E having both endpoints in Vi. Associate with each edge e ∈ Ei a cost c0

e= ce(1 − ˜π4ri) and a weight ce, and associate with each node v ∈ Fi a cost q0v = −(˜πv1+ qvπ˜r3i) and a weight qv. We say that a path P = (VP, EP) from ai to bi in G(i, ˜π) is a feasible path if

X v∈VP

X e∈EP

ce≤ D − ˜c(ri) + ci, (5.19) and its cost is

c0(P ) = X e∈EP

c0e+ X v∈VP

q0v. (5.20)

With the above definitions the following proposition holds:

Proposition 5.1 For any i ∈ I, the column generation problem associated with i in LP-RRM is the problem of finding a feasible path P from ai to bi in G(i, ˜π), with cost

c0(P ) < ˜π2

i + ci(1 − ˜πr4i).

Proof. For any i ∈ I, the column generation problem associated with i in LP- RRM is the problem of finding a variable xsi with negative reduced cost, such that

q(s) ≤ Q − ˜q(ri), γsi ≤ D − ˜c(ri), and s ∈ Si. For any s = (v1, . . . , vh) ∈ Si, let

P = (ai, v1, . . . , vh, bi) be the corresponding path in G(i, ˜π). xsi fulfills both capacity and distance constraints if and only if P is feasible. Moreover, the reduced cost of xsi

is given by rsi = c0(P ) − ˜πi2− ci(1 − ˜π4ri). 2

As described above, the column generation problem for LP-RRM associated with any insertion point i ∈ I is in practice a Resource Constrained Elementary Shortest Path Problem (RCESPP) defined on a graph G(i, ˜π), which also arises as column generation problem in the classical Set Partitioning formulation of VRP (see, e.g., Feillet et al. [76] and Righini and Salani [150]). It is worth noting that the size of G(i, ˜π) and of the corresponding RCESPP strictly depend on |Fi|. Indeed, the Neighborhood Reduction described in Section 5.5 corresponds to reducing the size of G(i, ˜π) and hence of RCESPP for any insertion point i ∈ I.

In the general case, G(i, ˜π) contains negative cycles (i.e., cycles in which the sum of the costs c0

e associated with the edges and the costs qv0 associated with the nodes is negative): indeed, while dual variables π2

i, πr3, πr4 are non positive, dual variables πv1 are free and usually assume positive values (note that they are always non negative if the triangle inequality holds). Positive values of variables π1

v usually lead to negative node costs q0

v and to negative cycles in graph G(i, ˜π). Therefore, the column generation problem in LP-RRM is strongly N P-hard.

Since the aim of the Neighborhood Construction phase is to find promising variables for the Reduced Reallocation Model in a short computing time, we solve the column generation problem through a simple heuristic, whose aim is to find as many variables with small reduced cost as possible. For any given graph G(i, ˜π), the algorithm works as follows:

1. Find an initial feasible path P = (ai, v, bi), with v ∈ Fi (such a path always exists if Fi 6= ∅).

2. Evaluate all the 1-1 feasible exchanges between each node w ∈ Fi\ VP and each node v ∈ VP, and select the best one (with respect to the cost of the corresponding path); if this exchange leads to an improvement, perform it and repeat from Step 2.

3. Evaluate all the feasible insertions of each node w ∈ Fi\ VP in each edge (v1, v2) ∈

EP and select the best one; if no feasible insertion exists, terminate; otherwise, force such an insertion even if it leads to a worse path and repeat from Step 2. Whenever a new path is generated, the corresponding variable is added to the va- riable pool VP if its reduced cost is smaller than a given threshold RCmax (say).