In the wake of the Great East Japan Earthquake, hands-on research and development is now required to solve concrete social problems. When a massive disaster such as an earthquake or a typhoon occurs, some damage to service networks is unavoidable (e.g., electricity, water service, gas and so on). To repair the damage to the networks as fast as possible, planning is needed to appropriately allocate tasks to two or more restoration teams and optimize their traveling routes. Such a scheduling problem is a variant of the vehicle routing problem (VRP) which designs optimal delivery or collection routes from one or several depots to a number of geographically scattered customers. There is a wide variety of VRPs and a broad literature on this class of problems.

The first systemic studies of this problem using VRPs in the context of Japan, appears to be Watanabe et al. [9, 10]. In these case studies, the problem is formulated as a VRP with time windows (VRPTW) and standard local search heuristics are then applied. However, Yamashita et al. [11] point out that establishing scheduling techniques for handling precedence and synchronization constraints has become a very important issue. If electricity is supplied to spot j via spot i, restoration teams cannot start operating spot j until the restoration of spot i is completed. Moreover, several teams may participate in restoring a damaged spot. The main difficulty in dealing with these constraints is that restoration teams are not independent of one another. In other words, a change in one route may affects other routes and may render all other routes infeasible. This is not usually the case in VRPs. This difficulty, which often impedes a successful solution by standard local search, is called the interdependence problem. See Drexl [4] for a complete review of this problem and a comprehensive collection of other types of synchronization constraints imposed in VRPs.

In the literature, Bredström and Rönnqvist [2] as well as Afifi et al. [1] study a variant of VRPTW in which some customers require simultaneous visits by two (or more) vehicles, with motivation to apply to elderly health care services. In our case, we note that how many teams participate in restoration of each spot is not a constraint but a decision variable for optimizing the whole restoration schedule.

A good technique several authors propose for overcoming the interdependence situation is the use of indirect search (Derigs and Döhmer [3], Li et al. [6], Nonobe and Ibaraki [7], and others). In indirect search, given an optimization problem, we first define (i) an auxiliary search space \(\mathcal {X}^{\text {aux}}\), which is different from the solution space \(\mathcal {X}\) of the original problem, (ii) a decoder \(f : \mathcal {X}^{\text {aux}} \to \mathcal {X}\), and (iii) search techniques and move types operating on the auxiliary space. Then, a local search procedure is executed not on \(\mathcal {X}\) but on \(\mathcal {X}^{\text {aux}}\) with evaluating search points by the decoder f. Though the computational cost of the decoder is added, it is known that this approach is powerful for problems having complicated constraints. Derigs and Döhmer [3] show that the approach of indirect local search is not only flexible and simple but when applied to the VRP with pickup and delivery and time windows (VRPPDTW) it also gives results which are competitive with state-of-the-art VRPPDTW-methods by Li and Lim [5], as well as Pankratz [8].

In this paper, we propose an enhanced indirect search method which uses the product set of team-wise permutations as an auxiliary search space, though many successful indirect search algorithms use permutations as an auxiliary search space (in the context of VRP, it is permutations of customers to be served). It is shown that our method successfully avoids the interdependence problem induced by the precedence and synchronization constraints. In addition, when we improve the capability of our algorithm to escape from local optima by using a metaheuristic technique called iterated local search, we have the big advantage of non-deteriorating perturbations being available.

In Section 2, after describing the main feature of our problem, we define our notation and formulate the mathematical optimization problem. We also summarize the difficulties with the interdependence problem in our setting. In Section 3, we develop an enhanced indirect search algorithm that avoids the interdependence problem induced by the precedence and synchronization constraints. In Section 4, we perform computational experiments in a practical setting using a geographic information system (GIS) and geospatial information. The results obtained from numerical examples in this study are then described.

The case study

2.1 Problem description

We first enumerate the main feature of our problem.

2.1.1 Precedence relation between pairs of damaged spots

If electricity is supplied to spot j via spot i, then it is necessary to restore spot i before restoring spot j. Namely, a restoration team cannot start operating spot j, but they may wait at spot j until the restoration of spot i is completed. We denote this by ij. Notice that \((\mathcal {V},\prec)\) is a strictly partially ordered set (or strict poset), where \(\mathcal {V}\) is the set of damaged spots. In our application, we can assume that the Hasse diagram of the poset is a directed forest (see Fig. 8 in Section 4). Moreover, the whole damaged area is divided into multiple areas in advance, and each restoration team has their area of responsibility. For any pair (i,j), ij implies that spots i and j are located in the same area.

2.1.2 Areas of responsibility

Each restoration team should give priority to its area of responsibility. Namely, they cannot move to another area until their own area is completed. These are interpreted as team-wise precedence constraints, and compatible with the precedence constraints. We use i k j to denote that spot i is in team k’s area of responsibility but spot j is in another area, and \((\mathcal {V}, \prec _{k})\) is also a strict poset. The number of restoration teams is greater than the number of areas. Hence two or more teams may be allocated in a common area.

2.1.3 Synchronized restoration by two or more teams

A spot can be repaired by two or more restoration teams if each team can help decrease the restoration time of the spot by at least c minutes (otherwise, the spot is repaired by one team). Each team can join the restoration of a spot during the restoration. However, they must stay until the restoration is completed. We set c=20 in our case study.

2.1.4 Min-max objective

The goal is to ensure that entire restoration process is completed as quickly as possible. In other words, we minimize the time required for the team that takes the longest time to finish their restoration work and return to the depot.

2.2 A MILP formulation

To accurately formulate our problem as a mathematical optimization problem, we first need to define our notation.

  • Let \(\mathcal {V} \cup \{0\} = \{0, 1,\, \ldots, |\mathcal {V}| \}\) be the set of all spots to be repaired and a depot. “0” represents the depot.

  • Let \(\mathcal {K} = \{1, 2,\, \ldots, |\mathcal {K}| \}\) denote the set of all restoration teams.

  • Let \(\mathcal {P}\) be the set of all triplets (i,j,k) such that team k should respect the precedence constraint between spots i and j. Namely,

    $$\begin{array}{*{20}l} \mathcal{A} &:= \{(i,j) \,|\, i \prec j, \; i,j \in \mathcal{V}\}, \\ \mathcal{A}_{k} &:= \{(i,j) \,|\, i \prec_{k} j, \; i,j \in \mathcal{V}\}, \quad k \in \mathcal{K}, \\ \mathcal{P} &:= \mathcal{A} \!\times\! \mathcal{K} \cup \bigcup_{k \in \mathcal{K}} \{(i,j, k) \,|\, (i, j) \in \mathcal{A}_{k} \}. \end{array} $$
  • c is the threshold for the synchronized restoration: Two or more teams can restore the same spot if each team can help decrease the restoration time of the spot by at least c minutes.

  • d ij is the time required to move from spot i to spot j.

  • w i represents the volume of work required to complete the restoration of spot i.

  • \(x_{ij}^{k}\) denotes the binary integer decision variable that equals 1 if and only if team k moves directly from spot i to spot j.

  • \(y_{i}^{k}\) denotes the binary integer decision variable that equals 1 if and only if team k visits spot i.

  • \(b_{i}^{k}\) represents the time point at which team k begins to work at spot i. The value of \(b_{i}^{k}\) is meaningful only if \(y_{i}^{k} = 1\).

  • e i denotes the time point at which the restoration of spot i is completed, where all teams leave the depot to start the restoration process at e 0=0.

  • t is the time point at which the whole restoration process is completed.

  • M is a real number sufficiently large, which is used in the so-called big-M method.

Using the above notation, the desired optimization problem is formulated as a mixed integer linear programming (MILP) problem.

$$\begin{array}{*{20}l}\text{Minimize}~~~\; & t \\ \textrm{subject to}~~~ & e_{i} + d_{i0} \leq t, \quad \forall i \in \mathcal{V}, \end{array} $$
$$\begin{array}{*{20}l} & y_{i}^{k} = \sum_{j \in \mathcal{V}} x_{ij}^{k}, \quad \forall i \in \mathcal{V} \cup \{0\}, \;\, \forall k \in \mathcal{K}, \end{array} $$
$$\begin{array}{*{20}l} & y_{j}^{k} = \sum_{i \in \mathcal{V}} x_{ij}^{k}, \quad \forall j \in \mathcal{V} \cup \{0\}, \;\, \forall k \in \mathcal{K}, \end{array} $$
$$\begin{array}{*{20}l} & e_{i} \leq b_{j}^{k} + M\left(1 - y_{j}^{k}\right), \quad \forall (i, j, k) \in \mathcal{P}, \end{array} $$
$$\begin{array}{*{20}l} & e_{i} + d_{ij} \leq b_{j}^{k} + M\left(1 - x_{ij}^{k}\right),\\ &\forall i, \forall j \in \mathcal{V} \cup \{0\}, \;\, \forall k \in \mathcal{K}, \end{array} $$
$$\begin{array}{*{20}l} & b_{i}^{k} \leq e_{i}, \quad \forall i \in \mathcal{V}, \;\, \forall k \in \mathcal{K}, \end{array} $$
$$\begin{array}{*{20}l} & e_{i} - b_{i}^{k} \leq M y_{i}^{k}, \quad \forall i \in \mathcal{V}, \;\, \forall k \in \mathcal{K}, \end{array} $$
$$\begin{array}{*{20}l} & \sum_{k \in \mathcal{K}} \left(e_{i} - b_{i}^{k}\right) = w_{i}, \quad \forall i \in \mathcal{V}, \end{array} $$
$$\begin{array}{*{20}l} & c \times \sum_{g \in \mathcal{K} \setminus \{k\}} y_{i}^{g} \leq e_{i} - b_{i}^{k} + M\left(1 - y_{i}^{k}\right),\\&\forall i \in \mathcal{V}, \;\, \forall k \in \mathcal{K}, \end{array} $$
$$\begin{array}{*{20}l} & x_{ij}^{k} \in \{0, 1\},\! \quad \forall i, \forall j \in \mathcal{V} \cup \{0\}, \;\, \forall k \in \mathcal{K}, \end{array} $$
$$\begin{array}{*{20}l} & y_{i}^{k} \in \{0, 1\}, \quad \forall i \in \mathcal{V} \cup \{0\}, \;\, \forall k \in \mathcal{K}, \end{array} $$
$$\begin{array}{*{20}l} & 0 \leq b_{i}^{k} < \infty, \quad \forall i \in \mathcal{V} \cup \{0\}, \;\, \forall k \in \mathcal{K}, \end{array} $$
$$\begin{array}{*{20}l} & 0 \leq e_{i} < \infty, \quad \forall i \in \mathcal{V} \cup \{0\}, \end{array} $$
$$\begin{array}{*{20}l} & 0 \leq t < \infty. \end{array} $$

From the objective function and constraint (1a), we minimize the time required for the team that takes the longest time to finish its restoration work and return to the depot. Constraints (1b) and (1c) mean that if team k visits spot i, then team k must move to spot i from another exactly once, and must move somewhere from spot i exactly once. The precedence constraints and the areas of responsibility are considered in (1d). Travel time is considered in (1e). If team k visits spot j next to spot i, i.e., \(x_{ij}^{k} = 1\), then time interval d ij is required for traveling between them. Notice that e 0=0 is automatically satisfied because of the minimization of the objective function. Constraint (1f) represents that the time team k starts restoring spot i is before the time when it is completed. Notice that (1e) and (1f) eliminate subtours that do not include the depot. Moreover, if team k does not visit spot i, i.e., \(y_{i}^{k} = 0\), it follows from (1f) and (1g) that \(e_{i} - b_{i}^{k} = 0\). Thus, constraint (1h) ensures that the restoration of spot i is not completed until the total working time of the restoration teams working there exceeds w i . From constraint (1i), we have

$$ y_{i}^{k} = 1, \quad \sum_{g \in \mathcal{K} \setminus \{k\}} y_{i}^{g} \geq 1 \Longrightarrow \frac{e_{i} - b_{i}^{k}}{\sum_{g \in \mathcal{K} \setminus \{k\}} y_{i}^{g}} \geq c $$

for every \(i \in \mathcal {V}\) and every \(k \in \mathcal {K}\). Therefore, constraint (1i) means that a spot may be served by two or more teams if each team can help decrease the restoration time by at least c minutes.

However, the problem has many big-M constraints, the structure of the traveling salesman problem (TSP), a min-max objective function, and symmetries between restoration teams. For this reason, it is thoroughly intractable to find a solution by using a general-purpose MIP solver.

2.3 Interdependence problem

Let us examine the interdependence problem in the setting laid out in Table 1.

Table 1 An instance with nine spots and two teams

Team 1’s route, shown as in Fig. 1, does not break the given precedence constraints in itself. The same applies to team 2’s route. However, taken as a whole, team 1’s route and team 2’s route do break the precedence constraint 5≺6. Synchronization at spot 8 is also incomplete, because it is prohibited to leave there until the restoration is completed. In other words, whether or not a route is feasible depends on the other routes.

Fig. 1
figure 1

Infeasible schedules

In case (a), we can render both routes feasible by inserting waiting times into them (see Fig. 2). However, the modified schedule has a longer total duration. From the view point of optimization, this is not good. In case (b), by contrast, inserting waiting times never leads a feasible schedule.

Fig. 2
figure 2

Repair of an infeasible schedule by inserting waiting times

Proposed method

In this section, we develop an enhanced indirect search algorithm that avoids the interdependence problem induced by the precedence and synchronization constraints. Figure 3 illustrates the concept of indirect search.

Fig. 3
figure 3

Indirect search

3.1 Linear extensions and search space

Let \((\mathcal {V}, \ll)\) be the transitive union of \((\mathcal {V}, \prec)\) and \((\mathcal {V}, \prec _{k})\). Namely,

$$\{ (i,j) \in \mathcal{V} \!\times\! \mathcal{V} \,|\, i \ll j \} = \mathcal{A} \cup \mathcal{A}_{k}. $$

Let \(\mathcal {L}_{k}\) denote the set of all linear extensions of \((\mathcal {V}, \ll)\), where a linear extension \(\sigma _{k} \in \mathcal {L}_{k}\) is a permutation of spots that is compatible with the precedence constraints and with the team-wise precedence constraints for team k’s area of responsibility.

Definition 3.1

(linear extension) A linear extension of a finite poset \((\mathcal {Q}, \prec)\) is a total ordering \( \sigma = \sigma (1) \sigma {(2)} \, \ldots \sigma (|\mathcal {Q}|)\) of its elements such that i<j whenever σ(i)≺σ(j).

Now, we define the search space by

$$\mathcal{X}^{\text{aux}} := \prod_{k \in \mathcal{K}} \mathcal{L}_{k}. $$

A search point \(x \in \mathcal {X}^{\text {aux}}\) is expressed by a \(|\mathcal {K}| \times |\mathcal {V}|\) matrix. The following example is a search point for the problem shown in Table 1.

$$ {\small\begin{aligned} x &= \left(\begin{array}{c} \sigma_{1} \\ \sigma_{2} \end{array} \right) = \left(\begin{array}{cccc} \sigma_{1}(1) & \sigma_{1}(2) & \cdots & \sigma_{1}(9) \\ \sigma_{2}(1) & \sigma_{2}(2) & \cdots & \sigma_{2}(9) \end{array} \right)\\ &= \left(\begin{array}{cccccccccc} 1 & 2 & 3 & 5 & 7 & 6 & 8 & 9 & 4 \\ 3 & 7 & 5 & 6 & 8 & 4 & 9 & 1 & 2 \end{array} \right) \end{aligned}} $$

Since the precedence constraints 5≺6 and 7≺9 are given, 5 and 7 are located to the left of 6 and 9 in either row, respectively. Moreover, team k should give priority to their area of responsibility. Hence spot 1 and spot 2 are located to the left of the other spots in the first row. Conversely, they are located to the right of the other spots in the second row.

Definition 3.2

(topological ordering) A topological ordering of a directed acyclic graph (DAG) \(\mathcal {G} = (\mathcal {V}, \mathcal {E})\) is a linear ordering of its vertices such that if there is a path from u to v, then u appears before v in the ordering.

We note that \((\mathcal {V}, \ll)\) constitutes a DAG \(\mathcal {G} = (\mathcal {V}, \mathcal {A} \cup \mathcal {A}_{k})\). A linear extension of the poset is the same thing as a topological ordering of the DAG. We can obtain an initial search point \(x \in \mathcal {X}^{\text {aux}}\) by a topological ordering method.

3.2 Decoder

Let us define a decoder that relates each search point \(x \in \mathcal {X}^{\text {aux}}\) to a feasible schedule f(x) in the following manner. To determine which spot to visit after completing a restoration somewhere, team k examines each spot as a candidate in the order \(\sigma _{k}(1), \sigma _{k}(2),\, \ldots, \sigma _{k}(|\mathcal {V}|)\). Team k is permitted to visit spot σ k (i) if no team has left for spot σ k (i), or if some team(s) has already left for spot σ k (i) but each team operating spot σ k (i) can decrease the restoration time by at least c minutes. Otherwise, team k skips spot σ k (i) and examines spot σ k (i+1). Figure 4 illustrates the feasible schedule f(x), derived by repeating this process, for x shown as in (3). In x, the circled numbers represent the spots that are actually visited.

Fig. 4
figure 4

Feasible schedule f(x)

To show an implementation of our decoder, we introduce additional variables.

  • s k represents the state of team k.

    $${\begin{aligned} s_{k} = \left\{ \begin{array}{ll} {\sf Initial} & \textrm{Team \textit{k} leaves the depot now and begin the whole process}\\ {\sf Moving} & \textrm{Team \textit{k} is moving to a spot or the depot}\\ {\sf Working} & \textrm{Team \textit{k} is working at a spot}\\ {\sf Waiting} & \textrm{Team \textit{k} is waiting at a spot}\\ {\sf Completed} & \textrm{Team \textit{k} finished their task and arrived at the depot}. \end{array} \right. \end{aligned}} $$
  • \(v_{k} \in \mathcal {V} \cup \{0\}\) is the location of team k. If s k =M o v i n g, v k represents the current destination. Otherwise, it represents the place they are currently at.

  • p k is an index variable that points to an element of σ k .

  • t k represents the time until their current movement or work is completed.

Now, our decoder DECODER() can be implemented as follows:

Two subroutines are shown in Algorithms 1 and 2.

In Function VISITABLE, we decide whether team k can join the restoration of spot j under the assumption that there is no additional waiting time due to the precedence constraints, which is stricter than the actual constraint (1i). On the other hand, deciding it accurately with considering the waiting time is impractical. If there exists a spot i such that ij, restoration teams cannot start operating spot j until the restoration of spot i is completed. Thus, we should replace (4) into

$${\begin{aligned} \tau_{g} \leftarrow \left\{ \begin{array}{ll} \max(e_{i} - t, d_{v_{k}, j}) & \textrm{if \(g = k\)} \\ \max(e_{i} - t, 0) & \textrm{if \(g \neq k\), \(s_{g} =\) {\sf Waiting} or {\sf Working}} \\ \max(e_{i} - t, t_{g}) & \textrm{if \(g \neq k\), \(s_{g} =\) {\sf Moving}}. \end{array} \right. \end{aligned}} $$

In this case, the larger the value of e i is, the more the last arriving team conceals their traveling time and helps decrease the restoration time. However, the final value of e i cannot be found when Function VISITABLE (arguments: k, j) is called from line # of Algorithm 1, because it will be improved if another team joins the restoration of spot i. Therefore, whether the team k can join the restoration of spot j depends on whether another team can join the restoration of spot i. In this situation, one possible way for deciding it accurately is to use a back-track search method, but it will take an exponential time. Hence, our decision method assuming e i t in advance is more suitable for efficiency.

Theorem 3.1

If we consider the additional constraint

$$\sum_{k \in \mathcal{K}} y_{i}^{k} \leq 3, \quad \forall i \in \mathcal{V}, $$

then Function DECODER runs in \(O(|\mathcal {K}||\mathcal {V}|)\) time.


Algorithm 2 runs in \(O(|\mathcal {K}|)\) time. Moreover, under the additional constraints, we have

$$\sum_{i \in \mathcal{V}}\sum_{k \in \mathcal{K}} y_{i}^{k} \leq 3 |\mathcal{V}|. $$

This implies that the main while loop in Function DECODER is repeated \(O(|\mathcal {V}|)\) times. Hence, it takes \(O(|\mathcal {K}||\mathcal {V}|)\) time to execute the loop of Algorithm 2. On the other hand, Algorithm 1 does not necessarily run in \(O(|\mathcal {K}|)\) time, because Function VISITABLE may be called repeatedly in line #. However, Function VISITABLE is called exactly once for each \((k, j) \in \mathcal {K} \times \mathcal {V}\) in the main while roop in Function DECODER. Therefore, it also takes \(O(|\mathcal {K}||\mathcal {V}|)\) time to execute the loop of Algorithm 1. □

3.3 Neighbourhood

We shall define a move type operating on \(\mathcal {X}^{\text {aux}}\).

Definition 3.3

(intra-swap and its feasibility) For any \(\sigma _{k} = \sigma _{k}(1)\sigma _{k}(2) \cdots \sigma _{k}(|\mathcal {V}|) \in \mathcal {L}_{k}\), an intra-swap move is a transposition (i j) that swaps σ k (i) and σ k (j) for some \(i, j \in \{1,2,\ldots, |\mathcal {V}|\}\). Namely,

$$\sigma_{k} \circ (i \; j) = \sigma_{k}(1) \cdots \sigma_{k}(j) \cdots \sigma_{k}(i) \cdots \sigma_{k}(|\mathcal{V}|). $$

An intra-swap move is said to be feasible if \(\sigma _{k}' := \sigma _{k} \circ (i \; j) \in \mathcal {L}_{k}\).

Lemma 3.1

An intra-swap (i j)operating a linear extension \(\sigma _{k} = \sigma _{k}(1)\sigma _{k}(2) \cdots \sigma _{k}(|\mathcal {V}|) \in \mathcal {L}_{k}\) is feasible if and only if

$$\left\{ \begin{array}{ll} \sigma_{k}(i) \nprec \sigma_{k}(h) & i < h \leq j, \\ \sigma_{k}(h) \nprec \sigma_{k}(j) & i < h < j, \\ \sigma_{k}(i) \nprec_{k} \sigma_{k}(j). \end{array} \right. $$


The result follows directly from the definition of \(\mathcal {L}_{k}\). □

From Lemma 3.1, we can judge whether an intra-swap move is feasible or not in \(O(|\mathcal {V}|)\) time. We define the intra-swap neighbourhood \(\mathcal {N} : \mathcal {X}^{\text {aux}} \to 2^{\mathcal {X}^{\text {aux}}}\) in the following manner:

$$\begin{array}{*{20}l} &\mathcal{N}(x) := \bigcup_{k \in \mathcal{K}} \big\{ x' = (\sigma_{-k}, \sigma_{k}') \,|\, \sigma_{k}' = \sigma_{k} \circ (i \; j) \in \mathcal{L}_{k},\\ &\qquad\qquad\qquad i,j = 1,2,\,\ldots, |\mathcal{V}| \big\}, \\ &\quad\quad x = (\sigma_{1},\, \sigma_{2}, \, \ldots, \sigma_{|\mathcal{K}|})\in \mathcal{X}, \end{array} $$

where \((\sigma _{-k}, \sigma _{k}') := (\sigma _{1}, \, \ldots, \sigma _{k-1}, \sigma _{k}', \sigma _{k+1}, \, \ldots,\sigma _{|\mathcal {K}|})\).

Suppose that \(x = (\sigma _{1}, \sigma _{2}, \ldots, \sigma _{|\mathcal {K}|})\in \mathcal {X}\) is the provisional solution. We first choose \(k \in \mathcal {K}\), select \(i, j \in \mathcal {V}\), and check whether the intra-swap (i j) operating σ k is feasible. If it is feasible, then the intra-swap move is applied to x and the new search point x is evaluated by the decoder. If the objective value of f(x ) is better than that of f(x), then we update the provisional solution by xx . Figure 5 shows that the schedule is improved from f(x) to f(x ) by swapping σ 2(2) and σ 2(6). A procedure for searching for a better schedule is shown in Function IndirectSearch.

Fig. 5
figure 5

An example of an improvement from an intra-swap operation

3.4 Iterated indirect local search

In this subsection, we improve the capability of our algorithm to escape from local optima by using a metaheuristic technique. In multi-start local search, a number of initial solutions are generated, and local search procedure is applied to each of them. Finally, the best solution obtained in the entire search is output. In iterated local search, which is an effective variant of multi-start local search, the initial solutions for local search are generated by perturbating good solutions found in the previous search. On this point, we have the big advantage of non-deteriorating perturbations being available.

Definition 3.4

(value-invariant swap) An intra-swap move is called to be value-invariant if it converts \(x \in \mathcal {X}^{\textit {\text {aux}}}\) to \(x' \in \mathcal {N}(x)\) such that the objective values of f(x) and f(x ) are the same each other.

Our iterated indirect local search algorithm is summarized as follows.

Computational results

To test our algorithms in a practical setting, we generate a virtual instance on a real map. A depot and 57 damaged spots are located in Minami ward, Fukuoka city, Fukuoka prefecture, Japan. The authors depict them in Fig. 6. The volumes of work {w i } and their precedence constraints are depicted in Fig. 7 and in Fig. 8, respectively. We suppose that there are eight restoration teams in total, and that their areas of responsibility are the whole damaged area. In other words, we do not consider team-wise precedence constraints1. For each pair (i,j) in \((\mathcal {V} \cup \{0\}) \times (\mathcal {V} \cup \{0\})\), we set d ij to be the minimum travel time (min) from i to j along the real road network. The regulations of traffic such as one-way roads and restricted turns are also taken into consideration. To do this, we solve the shortest path problem, in advance, by using GIS software ArcGIS for Desktop ver. 10.4 (Esri Inc., USA) and ArcGIS Data Collection Road Network 2015 (Esri Japan Corporation).

Fig. 6
figure 6

Locations of damage spots

Fig. 7
figure 7

The volumes of work {w i }

Fig. 8
figure 8

Hasse diagram of \((\mathcal {V}, \prec)\)

In our computational experiments, we first generate a topological ordering σ of the Hasse diagram of \((\mathcal {V}, \prec)\), and use \(x_{0} = (\sigma, \sigma,\, \ldots, \sigma) \in \mathcal {X}^{\text {aux}}\) as an initial search point. Then we execute Function IteratedSearch with arguments: \((x, \bar {m}, \bar {n}) = (x_{0}, 1000, 1000)\) repeatedly with changing the seed for random numbers used in line ♭ of the function. We implemented the algorithm using C++ Language and executed it on a desktop PC with Intel®; Core™ i7-3770K processor of 3.4 GHz and 16 GB memory installed. The results are shown in Table 2 and Fig. 9. Routes 1 to 8 output by trial C are depicted in Figs. 10, 11, 12, 13, 14, 15, 16 and 17, respectively. The spots that are served by two or more teams are highlighted in yellow.

Fig. 9
figure 9

Effect of the iterated local search

Fig. 10
figure 10

Route 1

Fig. 11
figure 11

Route 2

Fig. 12
figure 12

Route 3

Fig. 13
figure 13

Route 4

Fig. 14
figure 14

Route 5

Fig. 15
figure 15

Route 6

Fig. 16
figure 16

Route 7

Fig. 17
figure 17

Route 8

Table 2 Computational results

We note that our auxiliary search space, the product set of team-wise permutations (linear extensions) is larger than the set of permutations that is used in the usual indirect search. Therefore, it seems reasonable that our algorithm should be able to find a good sub-optimal solution. Estimating the optimization gap is quite hard in our challenging problem, but Fig. 9 clearly shows that our indirect search has a high local search ability and that its iteration with non-deteriorating perturbations is useful to escape from local optima. The final solution, found in trial C, achieved a 13% decrease of the objective value, compared with the output by an existing solver developed in Fujitsu group2.

In each trial, 1000 iterations are finished in about 75 s, and Function DECODER is called more than eight million times. This computational efficiency is mainly because of the \(O(|\mathcal {K}||\mathcal {V}||)\) implementation of the decoder. It would be able to quickly present the most recent plan that responds to changing conditions, including the extent of an area affected by a disaster and the pace of recovery work.

The authors think that the large auxiliary search space, the linear time implementation of the decoder, the iterated local search using non-deteriorating perturbations are responsible for the successful results.

Conclusion and future work

Based on the concept of the indirect search, we have proposed a simple local search method using the product set of team-wise permutations as an auxiliary search space. We have demonstrated that this new method successfully avoids the interdependence problem induced by the precedence and synchronization constraints, and that it has the big advantage of non-deteriorating perturbations being available for iterated local search. The authors believe that this approach will also be useful for other scheduling problems. We would like to investigate applications to other problems as challenges in the future.


1 Rather, this situation is computationally harder for our algorithm, because team-wise precedence constraints reduce the size of \(\mathcal {N}(x)\) for every \(x \in \mathcal {X}^{\text {aux}}\).

2 This existing method is a greedy construction method, though the detail cannot be publishable due to business secret.