**3. Methodology**

The tactical phase takes place on the day of operation, that is, during the work shift. A solution must be found immediately, if an unforeseen event arises, either due to the downgrading of an ATC or the increase in air traffic on any ground. To this end, a two-phase resolution methodology has been proposed.

The starting point for the first phase is the work shifts that were being applied until the unexpected incident occurs. Note that in the considered solutions, time is discretized in slots of five minutes. The slot in which the incident occurs will be called incident slot. This means that the contents of all slots before the incident slot cannot be modified.

We mark the incident slot with a vertical line, see Figure 2, which shows a solution matrix where each row is an ATC and each matrix element (*i*, *j*) represents the state of ATC *i* in time slot *j*. It is symbolized by letters. The value 111 represents a resting ATC, uppercase letters [A–Z] indicate that the ATC is working as an executive operator, whereas lowercase letters [a–z] are used for planner positions.

**Figure 2.** Solution matrix with an incident slot.

Depending on the unforeseen event, we will need to modify the sectorization, the solution matrix, and/or the list of available ATCs. For example, the absence of an ATC (by illness or urgency) does not always involve the closure of sectors. Sometimes, the others ATCs can cover the position that has been released until the replacement for a new ATC.

Another example is the closure of an airport because of adverse weather conditions. In that case, traffic will be diverted to nearby airports, which will lead to an increase in air traffic and, therefore, new sectors must be opened. As a result, there would be a change in sectorization and the solution matrix and, possibly, new ATCs must be incorporated to cover new sectors.

The necessary changes will be established by the network manager operations center (NMOC), and constitute an input to the solution algorithm together with the work shifts that are being used.

The aim of the first phase is to modify the work shifts and the list of ATCs in order to incorporate the work slots of the new open sectors in the solution matrix, eliminate the work slots corresponding to the closed sectors, introduce the new ATCs to the ATC list and the shift array, and indicate the downgrading of the ATCs that are not there. Moreover, the largest possible number of available ATCs should remain in the positions (and assigned sectors) that they were working in just after the incident so that not many changes in the control center occur simultaneously. In addition, the only possible solution uses more ATCs that are available in most cases.

The result of the first phase will be used as the initial solution for the second phase. The second phase uses an algorithm based on the metaheuristics simulated annealing or variable neighborhood search to derive a feasible solution that meets all the ATC working conditions (constraints) and reduces the number of shifts to the number of available ATCs.

	- **Step 1:** Closing Sectors. Many times a sector closes and at the same time two sectors related to the closed sector are opened. The objective of this step is to detect closed sectors and their related sectors, in order to replace closed sector working slots with working slots from the new related sectors. The algorithm searches for all closed sectors and checks for related sectors for each of them. In the event that no new opened sectors are found related to the closed sector, the working slots in that sector are replaced by breaks in the solution matrix. Otherwise, that is, there is a new sector to open and this is related to the closed sector, the closed sector working slots are replaced by open and related sector working slots.
	- **Step 2:** Opening Sectors. When the new sectors are not related to any of the closed sectors, or the closed sectors have already been associated with other related sectors, this step is

carried out. The algorithm adds the working slots of the open sectors in work templates (see References [29,31,32]), and adds these templates to the solution matrix. There are several templates that can be used, but we have chosen to apply the template displayed in Figure 3. The reason for this choice is the ease with which changes can be made to this template without breaking many constraints due to its structure. That template uses three ATCs to cover an entire sector. In this step, more work shifts are added, so there may be more work shifts than ATCs available. However, introducing work slots between ATC breaks would generate shift arrays with a high number of unfulfilled and unstructured constraints or which would make it extremely difficult to the algorithm to work in Phase 2.


**Figure 3.** Template 1 × 3 (1 sector is controlled by 3 air traffic controllers (ATCs), two working, executive and planner, and one resting).


Once the four steps of the initialization algorithm have been performed, we have an initial solution to start with Phase 2. For this, the solution must comply with the following premises:


Secondly, the solution must be feasible. All ATC's working conditions must be met and all open sectors in both positions (executive and planner) must be covered all time.

The third objective consists of minimizing the number of changes during the incident slot, that is, try to ensure that ATCs are kept in the same position just after the incident. At that point, several sectors may open or close and some ATCs change their job in a forced way, so we're going to try to minimize the number of changes to avoid that all ATCs ge<sup>t</sup> out of their position simultaneously as much as possible.

The last objective refers to a similar solution structure to previous template-based solution. Control center staff will find such a solution easier to understand, and this should facilitate any manual changes.

The target function in both SA and VNS is a weighted sum of the four objectives that are explained in detail below.

1. Reduce the number of shifts until the number of available ATCs: It is important to note that in the solutions we are analyzing, shifts are ordered from the least to the highest workload (in the first rows the lowest load and the last ones with the highest load).

However, when sorting shifts, let's divide the array into two sections: shifts that have an assigned ATC and shifts that do not have assigned an ATC. In this way, shifts without an assigned ATC will occupy the first rows of the array sorted by workload, while shifts with an assigned ATC will be sorted between them subsequently. With this we aim to encourage the shifts that are going to be eliminated are the shifts without assigned ATCs. To do this, we use the following expression:

$$p = \sum\_{k=1}^{nATC} \left(\frac{k \times h\_k}{nATC^2}\right),\tag{1}$$

where, *nATC* is the number of shifts and *hk* the number of shift work slots (in the *k*-th row of the solution coding).

In Equation (1), the product of the numerator causes the *p*-value to be higher the higher are the shifts of the last rows (that is, those with the highest workload). Therefore, in the search process, the workload of the shifts from the first rows to those of the last rows will tend to be passed, causing the shifts of the first rows to run out of load and be able to be deleted. The denominator of the array is squared so that the solution is always improved by deleting a turn. Otherwise, it could happen that by removing a turn to worsen fitness.

We must normalize Equation (1) to be used in the objective weight addition as follows:

$$f\_1 = 1 - \frac{p\_{\text{max}} - p}{p\_{\text{max}} - p\_{\text{min}}},\tag{2}$$

where *pmax* and *pmin* are maximum and minimum values of *p*, respectively.

To describe the way *pmax* and *pmin* are computed, we must first introduce a new term, *nATCf ull*. To calculate this value, the total workload is computed from the sectorization. This gives us a number of work slots that should be split across all shifts, denoted as *Ctotal* and to ge<sup>t</sup> *nATCfull*:

$$nATC\_{full} = \left\lceil \frac{C\_{total}}{nSlot} \right\rceil. \tag{3}$$

Equation (3) refers to the number of ATCs needed that have to work the entire shift in order to cover the workload, *Ctotal*. Once this value is known, we can calculate the value of *pmax* as follows

$$p\_{\text{max}} = \sum\_{k=nATC-\left(nATC, \, 1\right)}^{nATC} \left(\frac{k \times nSlot}{nATC^2}\right),\tag{4}$$

where we assign the maximum workload to the shifts that are in the last rows, while the first ones are not assigned by the workload.

*pmin* is computed from the following expression:

$$p\_{\rm min} = \sum\_{k=1}^{nATC\_{full}+1} \left( \frac{k \times nSlot}{nATC^2} \right),\tag{5}$$

where we don't assign workload to shifts in the last rows, but shifts in the first rows are assigned the maximum workload.

2. Reduce the number of unfulfilled constraints: ATCs' shifts must comply with all working conditions. To make this possible, we have introduced the number of unfulfilled constraints within the target function, denoted by *Ri*.

We transform the equation into a maximization form and normalize it, leading to the following expression:

$$f\_2 = 1 - \frac{MaxR\_i - R\_i}{MaxR\_i},\tag{6}$$

where *MaxRi* is the maximum value that can be achieved by breaking all constraints.

For the calculation of *MaxRi* we must consider two cases:

• Night shift. In this shift all constraints apply so *MaxRi* is calculated as follows: there is a total of 14 constraints. 8 constraints can be breached *nATC* times, 2 constraints that can be breached 2*nATC* and 4 constraint can be breached *nATC* multiplied every time it is not met in each slot of the shift by 1/*nSlot*, that is, *nSlot* × *nATC* × (1/*nSlot*). Then, we have:

$$\text{Max}R\_{\bar{i}} = 8nAT\mathbb{C} + 2 \times 2nAT\mathbb{C} + 4(nAT\mathbb{C} + nSlot \times 1/nSlot \times nATC), \tag{7}$$

that is, *MaxRi* = 20*nATC*.

• Day shifts (morning and afternoon). One constraint does not apply, so we'll use Equation (8):

$$\text{MaxR}\_{l} = 8n\text{ATC} + 1 \times n\text{ATC} + 4(n\text{ATC} + n\text{Slot} \times 1/n\text{Slot} \times n\text{ATC}),\tag{8}$$

that is, *MaxRi* = 18*nATC*.

As the incident managemen<sup>t</sup> may lead to unfeasible solutions, weights representing the relative importance of constraint violation were introduced by experts from CRIDA (www.crida.es), a non-profit joint venture between ENAIRE, Spain's air navigation manager, the Universidad Politécnica de Madrid, and Ineco, a global infrastructure engineering and consultancy leader.

First, a subset of the most important (priority) labor constraints was identified (LC1-LC7, LC9, LC12-LC14) (weight 5), followed by LC8 (weight 0.9), LC11 (weight 0.85), LC10 (weight 0.96) and LC9 (weight 0.5). Thus, we should attempt to meet the constraints in the most important set in preference to the other constraints.

3. Reduce the number of changes during the incident slot: To avoid a simultaneous change of a large number of ATCs just after the incident we use the following expression:

$$f\_3 = \frac{\sum\_{c=1}^{nATC} \begin{cases} 1, & \text{if } S\_{lc} = S\_{l(c-1)} \\ 0, & \text{if } S\_{lc} \neq S\_{l(c-1)} \end{cases}}{nATC},\tag{9}$$

where *Sic* is the contents of the slot in the shift *i* and the incident slot *c*, whereas *Si*(*<sup>c</sup>*−<sup>1</sup>) is the content of the slot in the shift *i* and the slot before the incident slot.

4. Maintain solution-like structure: The aim is to derive a solution as compact as possible. For this, we use the following expression, where each is time slot is compared against the one on his right and under it:

$$w = \sum\_{k=1}^{nATC-1} \sum\_{j=1}^{nSlot-1} \begin{cases} \begin{array}{l} 0.2, & \text{if } S\_{kj} = S\_{(k+1)j} \\ 1, & \text{if } S\_{kj} = S\_{k(j+1)}. \end{cases} \end{cases} \tag{10}$$

In Equation (10) is checked for each *Skj*, if the slot on its right (*Sk*(*j*+<sup>1</sup>)) has the same content and if so, add 1, also checks if the slot below (*S*(*k*+<sup>1</sup>)*j*) has the same content and if so adds to 0.2. If both are different, no value will be added. To ge<sup>t</sup> the theoretical maximum value we use the Equation (11).

$$w\_{\text{max}} = (nSlot - 1) \times (nATC - 1) \times 2. \tag{11}$$

This is a theoretical maximum value without regard to constraints. Once we have this value we can normalize the target with the Equation (12).

$$f\_4 = 1 - \frac{v\_{\max} - v}{v\_{\max}}.\tag{12}$$

Once all four objectives are calculated, a weighting is made between all objectives to obtain the target function:

$$f\_1 = \mu\_1 f\_1 + \mu\_2 f\_2 + \mu\_3 f\_3 + \mu\_4 f\_4. \tag{13}$$

CRIDA experts ranked the above objectives by importance, and the weights were derived using a rank-order centroid (ROC) method [33].

The following sections describe the adaptation of SA and VNS to our ATC work shift scheduling problem and the corresponding parameter tuning are described.

#### *3.1. Simulated Annealing Adaptation*

Simulated annealing (SA) [34,35] is a trajectory-based metaheuristic which is named for and inspired by annealing in metallurgy. SA is one of the oldest metaheuristics and has been adapted to solve many combinatorial optimization problems. Over the years, many authors have proposed both general and problem-specific improvements and variants of SA [36]. Different variants of scheduling problems have been tackled using SA [37], such as the job-shop scheduling problem [38–41], university course timetabling problems [42], or sports scheduling problems [43].

SA pseudocode for a minimization optimization problem is shown in Algorithm 1. The basic idea of SA is as follows. An initial feasible solution, *x*0, is randomly generated. Then, in each iteration *i*, a new solution (*y*) is randomly generated from the neighborhood, *<sup>N</sup>*(*xi*), of the solution considered in that iteration, *xi*. If the new solution is better than the current one, then the algorithm moves to that solution. Otherwise, there is some probability of it moving to a worse solution. The acceptance of worse solutions makes for a broader search for the optimal solution and avoids trapping in local optima in early iterations.

The search is initially very diversified, since practically all moves are allowed. As the temperature drops, the probability of accepting a worse moves decreases, and only better moves will be accepted when it is zero. This makes SA work like hill climbing.

Some elements in the above algorithm require clarification. Numerous studies propose techniques to calculate initial temperature (*t*0) that allow an acceptance rate of about 95% of solutions. However, in this case we prefer to reduce the acceptance rate to 60% due to the nature of the problem to avoid an unnecessary scan that entails a high computation time. This allows us to perform a slower temperature drop without wasting exploration time in unpromising search spaces.

#### **Algorithm 1** Basic SA.

1: Do *x*<sup>∗</sup> = *x*0, *f* ∗ = *f*(*<sup>x</sup>*0), *i* = 0. Select the initial temperature *t*0 (*ti* temperature in step *i*) 2: **repeat** 3: Randomly generate *yi* ∈ *<sup>N</sup>*(*xi*) 4: **if** (*f*(*yi*) − *f*(*xi*)) ≤ 0 **then** 5: *xi*+1 = *yi* 6: **if** (*f*(*x*<sup>∗</sup>) > *f*(*yi*) **then** 7: *x*<sup>∗</sup> = *yi*, *f* ∗ = *f*(*yi*) 8: **end if** 9: **else** 10: *p* ∼ *U*(0, 1) 11: **if** (*p* ≤ *e*<sup>−</sup>(*f*(*yi*)−*f*(*xi*))/*ti*) **then** 12: *xi*+1 = *yi* 13: **else** 14: *xi*+1 = *xi* 15: **end if** 16: **end if** 17: Update temperature, *i* = *i* + 1 18: **until** stopping criterion

Regarding the temperature update, after running different tests looking for the best cooling function, we found that, in this case, the classic geometric function is the most promising function:

*ti* = *<sup>α</sup>ti*−1. (14)

The number of iterations in which the temperature is kept constant influences the evolution of the temperature. We use the cutoff method, which is to incorporate a counter of the number of improving iterations and, when it exceeds a threshold (1000 iterations), the temperature may drop before the established.

Besides, choosing solutions from a neighborhood (*yi* ∈ *<sup>N</sup>*(*xi*)) is one of the most important points for the proper operation of SA, and, for this reason, different neighborhood definitions have been tested. Several movements have been proposed for this problem and, after a comparison process, the following movement was chosen.

Starting with the initial solution, the solution is divided into different sets of slots using a grid. This grid sets the cuts at different points where there are changes from work to rest or from one sector to another. Figure 4 shows an example of how a grid would be created from an initial solution.

**Figure 4.** Example of a grid set.

The grid sets the start and end points of the different sets of slots that allow permutations along the iterations of the algorithm, and the movement is defined as the exchange of the set of slots between two distinct rows. We have an example of movement in Figure 5.


**Figure 5.** Two solutions of the same neighborhood.

Throughout the execution, in order to promote exploitation, the grid is modified reducing the size of the spaces to a minimum number of slots. This initially achieves greater exploration and increased exploitation as iterations progress.

The acceptance function is a method that allows us to move towards worse solutions than the current one with some probability. There are several functions to determine the likelihood of acceptance *p* of these solutions. Equation (15) shows the chosen function.

$$\mathcal{P} \le \mathfrak{e}^{-\left(f(y\_i) - f(x\_i)\right)/t\_i}\_r \tag{15}$$

where *yi* is the a random solution in the neighborhood of actual solution *xi* and *ti* is the temperature in step *i*.

Finally, the stopping condition sets when the algorithm should stop. We use a solution improvement-related condition: the algorithm is stopped when the best solution found is not improved within a certain number of iterations. This threshold has been set at 50,000 iterations.

#### *3.2. Variable Neighborhood Search Adaptation*

Variable neighborhood search (VNS) is based on the idea of successively exploring a set of neighborhoods to solve optimization problems [44]. VNS explores neighborhoods either at random or systematically in search of local optima. Local searches of different neighborhoods should generate different local optima, and the global optimum will be a local optimum for one such neighborhood.

Algorithm 2 illustrates the basic version of VNS. There are many other variants of VNS in the literature, including variable neighborhood descent, reduced variable neighborhood search and variable neighborhood decomposition search. They differ according to:


#### **Algorithm 2** Basic VNS.

```
Require: Nk: set of neighborhood structures, k = 1, ..., kmax
Ensure: Best solution found.
 1: k = 1
 2: Generate an initial solution x
 3: repeat
 4: Randomly generate x ∈ Nk(x)
 5: x= Local-search(x,Nk)
 6: if (f(x) < f(x)) then
 7: x = x
 8: k = 1
 9: else
10: k = k + 1
11: end if
12: until stopping criterion
```
We used variable neighborhood descent (VND) [45]. This deterministic algorithm selects an initial solution and iterates through all the selected neighborhoods in the specified order, running a search process to find a local optimum in each iteration. If this local optimum is found to be better than the incumbent best solution, it becomes the new initial solution for a local search. If not, the algorithm explores the next specified neighborhood.

It includes four types of neighborhoods, see Figure 6.

	- 1. ATCs remain in the same sector and position (planner or executive) for approximately 45 min.
	- 2. Optimally, ATCs should work for 90 min between breaks.
	- 3. ATCs should spend from 40% to 60% of working time in executive positions.
	- 1. ATCs remain in the same sector and position (planner or executive) for approximately 45 min.
	- 2. Optimally, ATCs should work for 90 min between breaks.
	- 3. ATCs should spend from 40 to 60% of working time in executive positions.
	- 4. Exchanged time slots must be work periods.
	- 1. ATCs remain in the same sector and position (planner or executive) for approximately 45 min.
	- 2. Optimally, ATCs should work for 90 min between breaks.
	- 3. ATCs should spend from 40 to 60% of working time in executive positions.
	- 4. One ATC was working in the same sector and position immediately before or after the exchange time slot (no work period extension is required).
	- 1. ATCs remain in the same sector and position (planner or executive) for approximately 45 min.
	- 2. Optimally, ATCs should work for 90 min between breaks.
	- 3. ATCs should spend from 40 to 60% of working time in executive positions.
	- 4. Exchanged time slots must be work periods.
	- 5. One ATC was working in the same sector and position immediately before or after the exchange time slot (no work period extension is required).

**Figure 6.** Neighborhood definitions.

#### **4. An Illustrative Example**

We now illustrate the operation of the problem-solving methodology explain above using a real example of application from the Barcelona control center originated during an afternoon shift, referred to henceforth as Instance 1.

Note that a control center may be responsible for managing one or more cores. Each core should be solved separately, unless there are sectors belonging to more than one core. In this case, ATCs should be assigned to the respective cores. The Barcelona control center manages two cores, the *western route* and the *eastern route* cores, and the sectors under consideration in this instance belong to only one of these cores. Thus, each core can be solved separately.

The shift lasts from 15:00 to 21:35, the sectorization established is shown in Figure 7, a 04A configuration (sectors adc, aee, acy, adu) for the *western route* core and a 05A configuration (sectors adq, adl, adp, adr, aea) for the *eastern route* core.

Figure 8 shows the solution (ATCs shifts) covering the sectorization established before the incident. The number of available ATCs is 25, 11 (C1–C11) belonging to the eastern route core and 14 (C12–C25) to the western route core.

**Figure 7.** Sectorization of Barcelona control center (Instance 1).

**Figure 8.** Initial solution before the incident of Barcelona control center (Instance 1).

The incident in question is as follows. An ATC has to leave his/her workplace, leaving a vacant slot at 18:30, that is, three and a half hours after starting the shift, see Figure 8. The manager reports the incident and notifies a substitute ATC who should provide support to his/her colleague. However, the substitute cannot ge<sup>t</sup> up until one and half hours later (20:00). In addition, one of the open sectors is closed as a result of an expected decline in air traffic. In response to the incident, a new sectorization is established at 16:40, as shown in Figure 9.

In the new sectorization, there are six open sectors in the Barcelona western route core: a 04A configuration (sectors adc, aee, acy, adu) from 15:00 to 20:00, and a 03A configuration (sectors adc, adt, aef) from 20:00 to 21:35; and 10 sectors open in the Barcelona eastern route core: a 05A configuration (sectors adl, adp, adr, adq, aea) from 15:00 to 16:40, a 05C configuration (sectors aea, adi, adn, adh, adm) from 16:40 to 20:00, a 04A configuration (sectors adl, aea, adn, adm) from 20:00 to 20:40, and a 03A configuration (sectors adn, adm, aeb) from 20:40 to 21:35 (see Figure 9).

**Figure 9.** Sectorization after the incident of Barcelona control center (Instance 1).

The first phase of the problem-solving methodology modifies the current ATC working time (shown in Figure 8) to output a new schedule including all the modifications required to deal with the unforeseen event.

The solution derived from the first phase is shown in Figure 10. Even though it includes four more than the available ATCs (denoted as C0, see the first four lines in Figure 10) and is not feasible, this solution accounts for all the necessary changes to meet the new working hour requirements and will be the starting point of the second phase. The solution shows that ATC C23 (ATC absent from his/her position at 18:30) and C26 (substitute ATC getting up at 20:00) are not working the shift, neither will be able to assume workload from 16:30 to 20:00. ATCs not working the shift are represented by the string "000".

**Figure 10.** Solution derived from Phase 1 for Instance 1.

In the second phase, SA and VNS are used to derived a final solution.

In SA, the parameters are set as follows. Initial temperature is *t*0 = 0.035, which stands for a low acceptance rate. This is because the time available to solve the problem is limited, and it is inconvenient to break the built-in structures of the solution. The proposed cooling function uses a cooling ratio of *α* = 0.95, and the temperature is reduced every *L* = 3000 iterations. Besides, the cutoff method

lowers the temperature without having to wait for the specific number of iterations if 1500 iterations consecutively improve the current solution.

Finally, SA and VNS both use the following stopping criteria: both stop the execution if there is no improvement of 0.02% in the target value corresponding to the best solution found for 50,000 iterations.

At the end of the second phase, we have the best solution so far. Figures 11 and 12 show the solution reached by SA and VNS, respectively, where the four artificial ATCs (C0) are no longer present as the other ATCs have taken on their workload. In addition, Table 1 shows the values for the different objective functions and the respective computation times.

**Figure 11.** Optimal solution derived from Phase 2 using simulated annealing (SA).

**Figure 12.** Optimal solution derived from Phase 2 using variable neighborhood search (VNS).

**Table 1.** Results for Instance 1 using SA and VNS.


Note that a value of *f*1 = 1 means that the solution uses no more than the number of available ATCs, whereas *f*2 = 1 means that all the ATC working conditions are met, and, consequently, the solution is feasible. Thus, the solution reached by SA is feasible, whereas the solution derived by VNS uses the available number of ATCs but violates 26 constraints.

The proportion of ATCs who do not change their position during the incident slot is the same in both solutions (0.6923). Eighteen out of the 26 ATCs are kept in the same position just after the sectorization change (incident slot). The SA solution outperforms the solution derived by VNS with regard to *f*4, that is, the SA solution is more compact, which makes it easier to understand for the NMOC (see Figures 11 and 12).

Finally, it takes considerable less time for VNS to reach the solution (1.02 min) than SA (10.45 min). We can conclude that SA outperforms VNS with regard to the solution quality ( *f*2 and *f*4), but VNS reaches the final solution faster. However, the SA computation time also satisfies CRIDA experts.

Table 2 shows information about the constraint violation distribution using VNS. Priority constraints are highlighted in bold. Four out the fourteen constraint types are not met, and two priority constraints (LC5 and LC12) are not met four and eight times, respectively.

**Table 2.** Constraint violation distribution for Instance 1 using VNS.


#### **5. Numerical Analysis**

Simulated annealing (SA) and variable neighborhood search (VNS) performance has been tested on a set of representative instances provided by CRIDA experts (see Table 3).


**Table 3.** Instance description.

Instance 1 was used to illustrate the proposed methodology in Section 3. Instance 2 also refers to the Barcelona control center but is centered on a morning shift with a different number of available ATCs and a different incident. Instances 3, 4 and 5 focus on the Madrid control center on an afternoon shift with the same number of available ATCs but different incidents. Finally, instances 6 and 7 address the Gran Canaria control center during a morning shift with 25 available ATCs and one absent ATC absence, in the first case, plus a substitute ATC in the second instance.

In the following sections, we describe Instances 2–9 in detail, show the solution before the incident, plus the solutions derived from Phases 1 and 2 and compare the solutions reached using SA and VNS.

#### *5.1. Instance 2*

Instance 2 is a real case of a morning shift turn at Barcelona control center from 7:30 to 15:00. Two cores are managed simultaneously, as in Instance 1. The number of available ATCs is 24, seven belonging to the eastern route core and 17 to the western route core.

In the new sectorization, the western route core does not undergo any change with three open sectors throughout the shift. However, the eastern route core moves from five to six open sectors (sector adl is closed and sectors adg and adk are opened) at 10:30, which remains so for four and a half hours until the end of the shift.

Figure 13 shows the solution before the incident, the solution derived in Phase 1 and the solution derived in Phase 2 using SA for Instance 2.

The first phase modifies the initial working time of ATCs to output a new schedule incorporating all modifications to deal with the unforeseen event. Three more ATCs than are available (denoted as

C0, see the first three lines in Figure 13) are used to cover the new open sector adk. Therefore, the solution is not feasible.

**Figure 13.** Solution before the incident, solution derived in Phase 1 and solution for Instance 2.

Table 4 shows the values of the different objective functions for the SA and VNS solutions in the seven instances under consideration and their computation times.

As mentioned for Instance 1, a value of *f*1 = 1 means that the solution uses no more than the available number of ATCs, whereas *f*2 = 1 means that all the ATC working conditions are met, and, consequently, the solution is feasible. Thus, the solutions reached by SA and VNS in Instance 2 use the number of available ATCs but violate six and 49 constraints, respectively. All ATCs remain in the same position during the incident slot in both solutions (*f*2 = 1), and the SA solution outperforms the solution derived using VNS with regard to *f*4, that is, the SA solution is more compact. This makes it easier to understand for the NMOC.

Although Instance 2 looks simple, the incident is very complex to manage. The solution before the incident is composed of 24 ATCs covering 9 (3 × (3 × 8)) sectors, and the percentage break time for ATCs is 25%, which exactly matches a labor constraint. Thus, ATCs do not have even one extra minute of break time. Besides, it accounts for two cores simultaneously, and the different ATCs can only be assigned to the sectors belonging to the core in which they are working. This further restricts the problem resulting in very few feasible solutions, as the working margin is very small. Consequently, it should be no surprise if a feasible solution is not reached.

Finally, the time it takes VNS to reach the solution (1.83 min) is considerably less than for SA (13.32 min). The latter is considered very satisfactory by CRIDA experts.


**Table 4.** Results for the instances under consideration using SA and VNS.

Table 5 shows information about the constraint violation distribution using both SA and VNS in the instances under consideration. Priority constraints are highlighted in bold.

In Instance 2, as mentioned above, the SA and VNS solutions failed to met six and 49 labour constraints, respectively. The six constraints are not met by the SA solution are priority constraints (LC9 three times and LC12 three times). Twenty-five out of the 46 constraints not met by the VNS solution are priority constraints (LC3 and LC5 five times each, LC9 once and LC12 14 times). SA clearly outperforms VNS with respect to this objective.


**Table 5.** Constraint violation distribution.

#### *5.2. Instance 3*

Instance 3 refers to a real case of an afternoon shift at Madrid control center from 15:30 to 22:30. Only one core is managed, and the number of available ATCs is 19.

The incident involves the closure of several sectors, moving from a sectorization with seven open sectors throughout the shift to seven sectors open until 20:40. At this time, two sectors are closed and the other five sector are kept open until 21:00, when another sector is closed. Then, the four sector are kept open until 21:40, when another sector is closed until the end of the shift (three open sectors).

Figure 14 shows the solution before the incident, the solution derived in Phase 1, and the solution derived in Phase 2 using SA on Instance 3. Artificial ATCs (C0) do not have to be used in Phase 1.

**Figure 14.** Solution before the incident, solution derived in Phase 1 and solution for Instance 3.

Looking at Table 4, we find that the solutions reached by SA and VNS for Instance 3 both use the available number of ATCs, but violate two labor constraints, corresponding to LC11 (twice). LC11 is not a priority constraint (Table 5).

Note that a feasible solution can never be reached for Instance 3 due to the position of the incident slot. The minimum consecutive working time of ATCs working in the sector that is closed as a consequence of the incident is irreparably violated, and the problem-solving method cannot modify any slot in the solution before the incident slot. The proportion of ATCs who remain in the same position during the incident slot is the same in both solutions (0.4736). Nine out of the 19 ATCs remain in the same position just after the sectorization change (incident slot).

The SA solution outperforms the solution derived by VNS with regard to *f*4, that is, the SA solution is more compact, which makes it easier to understand for the NMOC. Finally, the time it takes for VNS to reach the solution (0.13 min) is slightly lower than for SA (6.35 min)—The latter is considered very satisfactory by CRIDA experts.

The solutions derived by SA and VNS for Instance 3 are equal with regard to objectives *f*1, *f*2 and *f*3, where the SA solution is better in terms of compactability, and VNS has a lower computation time (SA computation time also satisfies the CRIDA experts).

#### *5.3. Instance 4*

Instance 4 refers to a real case of an afternoon shift at Madrid control center from 15:30 to 22:30. Only one core is managed, and the number of available ATCs is 19.

The incident involves the closure of several sectors, like Instance 3. It passes from a sectorization with seven open sectors throughout the shift to seven sectors open until 20:40. At this time, two sectors are closed, and five sectors are kept open until 21:00, when another sector is closed. Then, the four sectors are kept open until 21:40, when another sector is closed until the end of the shift (three open sectors).

Additionally, an ATC (C8) has to leave his/her position, leaving a vacant slot at 17:00, that is, two and a half hours after starting the shift. The manager reports the incident and notifies a substitute ATC who should provide support to his/her colleague, but the substitute cannot ge<sup>t</sup> up until three hours and 20 min later (20:20), Figure 15.

Figure 15 shows the solution before the incident, the solution derived in Phase 1, and the solution derived in Phase 2 using SA on Instance 4.

The first phase modifies the initial working time of ATCs to output a new schedule incorporating all modifications to deal with the unforeseen event. One more than the available ATCs (denoted as C0, see the first line in Figure 15) is used, and it is, therefore, a feasible solution.

**Figure 15.** Solution before the incident, solution derived in Phase 1 and solution for Instance 4.

Looking at Table 4, we find that the solution reached by the SA is feasible, whereas the solution derived by the VNS uses the number of available ATCs but does not met four constraints, violating LC3, LC5, LC8 and LC11 once each, where the first two are priority constraints (Table 5). The proportion of ATCs who remain in the same position during the incident slot is higher in the VNS solution, where 16 out of the 19 ATCs remain in the same position just after the sectorization change (incident slot). There is an additional change in the SA solution.

The SA and VNS solutions are equal in terms of compactability, *f*4. However, VNS is again faster at reaching the solution (0.6 vs. 6.21 min). Given that the SA computation time also satisfies the CRIDA experts, the SA solution involves no more than an additional control center change (in the incident slot) but is a feasible solution (the VNS solution violates four of the labor constraints), the SA solution was selected for Instance 4 by CRIDA experts.

#### *5.4. Instance 5*

Instance 5 refers to a real case from the afternoon shift at Madrid control center from 15:30 to 22:30. Only one core is managed, and the number of available ATCs is 19.

The incident in question involves the closure and opening of several sectors. It passes from a sectorization with seven open sectors throughout the shift to seven open sectors until 17:40. At this time, an additional sector is opened, and the eight sectors are kept open until 20:40, when a sector is closed. Then, the seven sectors are kept open until 21:00, when the sectorization changes and only four open sectors are established. A sector is closed 20 min later (21:20), and the three sectors are kept open until the end of the shift.

Figure 16 shows the solution before the incident, the solution derived in Phase 1, and the solution derived in Phase 2 using SA on Instance 5.

In the first phase, three more ATCs than available (denoted as C0, see the first three lines in Figure 16) are incorporated to manage the newly opened sector, abv.

**Figure 16.** Solution before the incident, solution derived in Phase 1 and solution for Instance 5.

Looking at Table 4, we find the solutions reached by SA and VNS for Instance 2 use the available number of ATCs but violate six and nine constraints, respectively. Four out the six labor constraints not met by the SA solution are priority constraints (LC5 four times). C12 is also violated twice (Table 5). Eight out the nine labor constraints not met by the VNS solution are priority constraints (LC3 once and LC5 seven times).

The incident in Instance 5 involves a high workload. Therefore, it is impossible to find a feasible solution because the difference between the workload (8 sectors × 2 positions × 36 slots (3 h) = 576) and the ATC-assumed work ((19 ATCs × 36 slots − 6 slots (mandatory timeout)) = 570) is 576 − 570 = 6 slots, without counting the ATC labor constraints. The proportion of ATCs who do not change their position during the incident slot is 0.7894 in both solutions. Fifteen out of the 19 ATCs remain in the same position just after the sectorization change (incident slot).

The SA solution outperforms the solution derived by VNS with regard to *f*4, that is, the SA solution is more compact, which makes it easier to understand for the NMOC. However, VNS is again faster at reaching the solution (0.47 vs. 11.18 min). SA outperforms VNS with regard to objectives *f*2 and *f*4, but VNS has a lower computation time. As SA computing time also satisfies the CRIDA experts, the SA solution is chosen for Instance 5.

#### *5.5. Instance 6*

Instance 6 is a real case from the morning shift at Gran Canaria control center. An 8A sectorization is used throughout the shift, from 7:00 to 15:00. There are 22 available ATCs to cover this sectorization, but ATC C16 is relieved at 10:10, and no substitute is available. Therefore, the remainder of the shift is covered by 21 ATCs. Figure 17 shows the solution before the incident, the solution derived in Phase 1, and the solution derived in Phase 2 using SA.

**Figure 17.** Solution before the incident, solution derived in Phase 1 and solution for Instance 6.

In the Phase 1 solution, the workload of ATC 16 is assigned as of 10:10 to ATC C0 (artificial ATC). This workload is distributed among the other ATCs in Phase 2, and the artificial ATC is no longer necessary.

In Instance 6, the solutions reached by SA and VNS for Instance 2 use the number of available ATCs but violate eight and 18 constraints, respectively, see Table 4. Four out of the eight labor constraints not met by the SA solution are priority constraints (LC3 once, LC5 once and LC10 four times). LC10 is also violated four times (Table 5). The 18 labor constraints not met by the VNS solution are priority constraints (LC3 five times, LC5 five times and LC12 five times).

The solution for Instance 6 involves a high workload. Therefore, it is impossible to find a feasible solution because the difference between the workload (8 sectors × 2 positions × 96 slots (8 h) = 1536) and the ATC-assumed work ((22 ATCs × 38 slots + 21 ATCs × 58 slots) × 3/4 (25% mandatory timeout) = 1540) is 1540 − 1536 = 4 slots. The proportion of ATCs who do not change their position during the incident slot is 0.9047 in both solutions. Nineteen out of the 21 ATCs remain in the same position when ATC 16 is relieved.

The SA solution outperforms the solution derived from VNS with regard to *f*4, that is, the SA solution is more compact, which makes it easier to understand for the NMOC. However, VNS is again faster at reaching the solution (0.53 vs. 11.52 min). Given that the SA computation time also satisfies the CRIDA experts, and the SA solution violates fewer labor constraints and is more compact, this solution was selected for Instance 6 by CRIDA experts.

#### *5.6. Instance 7*

Instance 7 is very similar to Instance 6. It is a real case of a morning shift at Gran Canaria control center. An 8A configuration is used throughout the shift, from 7:00 to 15:00. There are 22 available ATCs to cover this sectorization, but ATC 16 is relieved at 10:10, and the substitute (ATC 23) is not available until 12:40. Figure 18 shows the solution before the incident, the solution derived in Phase 1, and the solution derived in Phase 2 using SA for Instance 7.

**Figure 18.** Solution before the incident, initial solution, and solution for Instance 7.

In the Phase 1 solution, the workload of ATC 16 is assigned as of 10:10 to ATC C0 (artificial ATC). In addition, ATC 23 is entered at 12:40 as resting. This workload is distributed among the other ATCs in Phase 2, the artificial ATC is no longer necessary, and ATC 23 has been assigned the work of other ATCs as of 12:40.

In Instance 7, the solution reached by SA is feasible, whereas the solution derived by VNS uses the available number of ATCs but violates 18 priority constraints (Table 4), corresponding to LC3 (six times), LC5 (eight times) and LC12 (once), and LC8, LC10 and LC11 once, see Table 5. The proportion of ATCs who do not change their position during the incident slot is 0.9047 in both solutions. Nineteen out of the 21 ATCs remain in the same position when the ATC 16 is relieved.

The VNS solution outperforms the solution derived by SA with regard to *f*4, that is, the VNS solution is more compact, which makes it easier to understand for the NMOC. Moreover, VNS is again faster at reaching the solution (0.63 vs. 7.68 min). Although the VNS solution is faster and slightly more compact than the SA solution, the CRIDA experts prefer the SA solution since it is feasible and the computation time is satisfactory.
