1. Introduction
Optimization problems are found at different levels in electric power systems, from both technological and operations management standpoints. In transport and distribution, not intending to make an exhaustive list, there are studies related to classical modeling and problem solving for electric energy distribution static planning [
1,
2,
3]; other works, also on planning, propose a flexible distribution attending to the emerging variability of demand [
4]. There are also many examples of optimization problems at the source point, from renewable generation (see for instance [
5] for wind) to nuclear power.
A nuclear power plant is a complex system in which many optimization processes take place. The balance between safety requirements, competition in a liberalized electricity market, and access to limited human and material resources is resolved in nuclear power plants through an approach that prioritizes safety (see, for instance, INSAG4 [
6] and IAEATECDOC1329 [
7]).
Nuclear Power Plants (NPP) produce electricity from the heat released in a fission chain reaction; the socalled “nuclear fuel” is actually fissionable material. In Light Water Reactors (LWR), the type of reactor that constitutes the majority of the world’s nuclear fleet and the total of the Spanish fleet [
8], nuclear fuel is made of uranium (slightly enriched in the
^{235}U isotope), in the form of ceramic pellets of UO
_{2} protected and waterproofed by a metallic cladding (zirconium alloy) and grouped together, forming the socalled fuel assemblies (FA) [
9]. The fuel used in the two units of Ascó NPP (the plant that has inspired the present study) is manufactured by ENUSA under a license agreement with Westinghouse, the owner of the technology [
10].
Presently, the two Ascó units have fuel burnup cycles of one and a half year. Each 18 months, some 60 FA (out of the 157 contained in the core of the reactor) are replaced (each one containing about 500 kg of uranium). Up to the end of its service, each Spent Fuel Assembly (SFA) has produced around 50 GWd/t of heat.
In the fission process, uranium atoms are transformed into radioactive fission products. Roughly speaking, in an SFA, some 5% of the initial uranium mass has undergone fission. A smaller part of the uranium is also transformed, through neutron capture nuclear reactions, into transuranic elements, which are also radioactive. The hazard of spent fuel is due to the potentially harmful effects of ionizing radiation. Thus, it is necessary to isolate the spent fuel for a long time to avoid the dispersion of the radioactive substances. An ultimate storage solution is proposed in repositories excavated in deep geological formations [
11], in a way similar to that followed with chemical contaminants such as mercury [
12].
The decay of radioactive substances in the spent fuel causes the socalled “decay heat”, which decreases as the activity of those substances declines, but which requires careful management of SFAs to prevent them from being damaged by excess temperature. After being removed from the core of the reactor, spent fuel is temporarily stored in the fuel pool of each power unit. Pool water provides shielding and cooling. Only when the power of the SFA has been sufficiently reduced can it be considered for dry storage in appropriate containers (either temporarily or permanently in a deep geological repository). The lack of political consensus for a definitive solution in Spain made it necessary to propose a Central Interim Storage Facility (CISF) [
13], which was never built (now, it is proposed for 2028 [
14]).
Over time, the spent fuel pools of the Spanish NPP have been reaching the limit of their capacity. In the case of the two units of Ascó, the pool in each of them can house 1421 FA, which is a figure that includes the 157 positions needed to discharge the entire reactor core if necessary. At the end of 2018, there were 1160 FAs in the Ascó 1 pool and 1104 in the Ascó 2 pool. The plant has 608 SFAs in an Independent Spent Fuel Storage Installation (ISFSI) in 19 HISTORM containers [
15], each hosting 32 SFAs [
16].
In Spain,
ENRESA (a stateowned company) is responsible for the decommissioning of the nuclear installations, as well as for the ultimate disposal of nuclear and radioactive wastes [
17]. At the end of the exploitation period, it is in the interest of the plant operator to be able to transfer ownership of the installation to
ENRESA in the shortest possible time. In order to do it, previously, all the fuel must be completely removed from the spent fuel pool [
18]. At this moment, the ISFSI can be used as a logistics storage, housing spent fuel containers prior to transportation to the CISF. If the CISF is not yet available, the ISFSI should be usable as a fullscope storage (perhaps even in the longterm).
Thus, an optimization problem arises: it is necessary to remove all of the SFA from the pool within the minimum time and at the minimum cost [
19]? Indeed, optimization problems can be found in a wide variety of operations in NPPs. For instance, in the spent fuel pool, where the SFAs are stored in racks, problems arise in optimizing the reliability of the design of the racks and the arrangement of the assemblies in the event of their possible displacement [
20], and, as the capacity of the pool is limited to a specific number of assemblies, other management problems of spent nuclear fuel storage arise linked to this limitation [
21]. At the right time, SFAs are removed from the pool and relocated in casks, often for longterm storage. The optimization here ranges from determining the SNF removal allocation strategy for a fleet of plants [
22], to the design of the containers (e.g., what capacity, how much cooling time needed, etc.) [
23], to the strategies to be followed in the loading of the casks.
As for the latter, Zerovnik et al. [
24] propose combinatorial methods to optimize the cask loading, aiming at final geological repository. Considering as well the final deposition, Ranta and Cameron [
25] used a twophase heuristic method in order to minimize the thermal load of the canister with the largest load. Gomes et al. [
26] propose a methodology, using genetic algorithms, to determine the optimal time to load the casks for dry interim storage, taking into account several cost factors. Spencer et al.
[27] have develop a method (embedding greedy randomized adaptive search procedures in a memetic algorithm) to optimize the cask loading in a multiobjective search of configurations that minimize the number of casks, the thermal load, and the time when the transportation requirements are met.
In the present work, the cask loading problem is solved with two hierarchical optimization criteria: (i) minimize the cost of the regionalized casks necessary to relocate the spent fuel located in the pool at a given moment [
28] using mixed integer linear programming [
29]; and (ii) minimize the standard deviation of the thermal load in the set of casks using a multistart metaheuristic with local search procedures [
30].
In
Section 2, we describe some dry storage systems for spent nuclear fuel.
Section 3 is devoted to the description, modeling, and resolution of the spent nuclear fuel cask loading problem.
Section 4 illustrates the procedure proposed in a case study inspired in Ascó NPP. Finally,
Section 5 provides the conclusions derived from this work and a brief description of future research lines.
2. Dry Storage Systems for Spent Nuclear Fuel
Different solutions exist for the interim dry storage of spent nuclear fuel; as a comparison, the 14 closed sites in the USA use 11 different storage systems from four different suppliers [
31].
In Spain,
ENRESA has adopted different solutions. Some plants are using dualpurpose containers (transport and storage) whose structure provides shielding, confinement, and heat dissipation. Ascó’s two units are using the multipurpose HISTORM system, which is described below [
15,
16].
The spent fuel storage and transport system in Ascó is made up of different elements: the multipurpose canister (MPC32), the storage module (HISTORM), the transport overpack (HISTAR), and the transfer cask (HITRAC), which allows the MPC to be transferred to HISTORM and HISTAR [
15] (see
Figure 1).
The time required to completely remove the spent fuel from the pool depends on the minimum cooling time necessary for the last SFA to be loaded into a cask. This cooling period (that is, the time elapsed since the unload of the SFA from the reactor core) depends, in turn, on the type of container used and the technical specifications approved by the regulator for it.
To guarantee the integrity of the SFAs, the temperature of the metal cladding that surrounds the UO
_{2} pellets must be limited. This fact imposes requirements of sufficient heat dissipation in the cask design. However, also, it imposes a limit to the thermal power that the SFAs can generate inside the cask. For instance, in the HISTORM system, under uniform charging conditions, each of the positions of the MPC32 can house an SFA with a maximum power of 0.9375 kW at the time of loading (i.e., the total thermal power dissipated by the canister will be limited to 30 kW) [
32]. The system allows regionalized loads; so, SFAs with higher decay heat can be located in the central region of the canister (region
${R}_{a}$, formed by 12 positions), at the cost of limiting the maximum power per position in the peripheral region (region
${R}_{b}$, 20 positions) and also limiting the total thermal load to a value less than 30 kW [
33].
Figure 2 represents the positions assigned to each region.
In fact, the loading of a cask is constrained by the technical specifications in a more complex way, since they take into account, in addition to the cooling time, multiple fuel characteristics such as decay heat, burnup, initial enrichment, the possibility that the assembly has some damage, or the possible presence of elements such as neutron sources, control rods, burnable poisons, etc. These conditions vary according to the type of cask, its use (storage or transport), and other specific limitations.
In what follows, it is assumed that at the end of the operational life of the plant, an ISFSI will exist that allows transfering all of the SFAs to it using the HISTORM system (without imposing the present transport requirements, which are more restrictive than storage requirements). It is considered here that the storage requirements apply only to the decay heat of each SFA (calculated in turn from the burnup, cooling time, and initial enrichment). The minimum time for the complete removal of all of the SFA from the pool is bounded by the moment when the hottest SFA fits into the requirements. The cost will depend on the number of containers to be used. So, the number of containers needed to remove all the SFA from the spent fuel pool needs to be minimized: this is the optimization problem addressed in the present study.
3. The Spent Nuclear Fuel Cask Loading Problem
In this section, we describe and formalize the spent nuclear fuel cask loading problem, and we propose a hybrid metaheuristic to solve it. Our method works in three phases using mixed integer linear programming (MILP), a deterministic algorithm, and local search heuristics.
3.1. Description of the Problem
At a given instant $T$, corresponding to the planned date for transferring in one go the contents of the spent fuel pool to the ISFSI, there are $n$ SFAs, forming a set $I$ $(i=1,\dots ,n$ ($n\equiv \leftI\right$)).
At the time of removal, T, each fuel assembly $i\in I$ is characterized by a thermal power (decay heat), ${q}_{i}\left(T\right)$.
On the other end, there is an ISFSI ready to host all of the casks needed. Casks are regionalized, i.e., they are compartmentalized into regions with attributes of capacity and decay heat. Thus, there is a set of virtual regions $J$ ($j=0,1,\dots ,m$ ($\leftJ\right\equiv m+1))$, in which each type of region $\left(j\in J\right)$ is characterized by the upper and lower bounds on the decay heat a single SFA may have $\left[{q}_{j}^{},{q}_{j}^{+}\right]$, and the number of SFAs in that region that can be held by a single cask, ${h}_{j}$. $j=0$ symbolizes the type of universal region capable of housing any fuel assembly without restrictions.
There is a set $K$ ($k=0,1,\dots ,l$ ($\leftK\right\equiv l+1))$ of cask classes; $k=0$ symbolizes the universal class, which is capable of accommodating any fuel assembly without restrictions at an arbitrary high cost ${\gamma}_{0}\to \infty $. Each class is defined in relation to the maximum thermal load allowed in each region of the cask.
An adversity coefficient ${\gamma}_{k}$ is associated to each class of cask $\left(k\in K\right)$, corresponding to the arbitrary cost of selecting a cask of class $k\in K$ to house at least one SFA. We also assume for the class $k\in K$ a maximum number of units available, ${d}_{k}\left(\forall k\right)$. The total number of available casks is $D={{\displaystyle \sum}}_{\forall k}{d}_{k}$.
The relationship between a virtual region type $\left(j\in J\right)$ and a cask class $\left(k\in K\right)$ is given by matrix $B$, whose coefficients ${b}_{j,k}\left(\forall j\forall k\right)$ take the value 1 when the region of type $j\in J$ is associated to the cask of class $k\in K$, and 0 otherwise.
On the other hand, the relationship between the fuel assembly $i\in I$ and the type of region $j\in J$ is given by matrix $A\left(T\right)$, whose coefficients, ${a}_{i,j}\left(T\right)\left(\forall i\forall j\right)$, are equal to 1 when the fuel assembly $i\in I$ can be located in the region $j\in J$ at time $T$, and 0 in any other case; i.e., ${a}_{i,j}\left(T\right)=1\iff $ ${q}_{i}\left(T\right)\in \left[{q}_{j}^{},{q}_{j}^{+}\right]$. It follows from it that the relationship between the fuel assembly $i\in I$ and the class of cask $k\in K$ is given by matrix $C\left(T\right)$ resulting from the boolean product of matrices $A\left(T\right)$ and $B$; that is, $C\left(T\right)=A\left(T\right)\otimes B$, thus fulfilling the following property: $({a}_{i,j}\left(T\right)=1\u22cf{b}_{j,k}=1)\Rightarrow {c}_{i,k}\left(T\right)=1$.
Under such conditions [
28], the
spent nuclear fuel cask loading problem consists of transferring the maximum number of the fuel assemblies, which are located in the pool of a nuclear power plant on a date
$T$ and expressed as time after the end of operation, into a set of regionalized casks of different classes, meeting the restrictions and minimizing costs (i.e., minimizing the total adversity).
3.2. Solving the Problem
As discussed above, our proposal solves the problem in three phases. The first phase uses MILP to allocate fuel assemblies to virtual regions with minimum cost (i.e., a minimum number of casks or minimum total adversity) [
28]. In the second phase, a family of deterministic algorithms has been designed to assign each SFA to a specific cask actual region. Finally, in the third phase, a local search heuristic is proposed to minimize the standard deviation of the thermal load of the casks set.
3.2.1. Phase 1: MILP Model to Minimize the Cask Loading Cost
To formalize the proposed resolution methods, we use the following nomenclature.
Parameters:
$T$  Time or expected date to remove in one go the SFA from the pool in the nuclear power plant, expressed as time after the end of operation. 
$I$  Set of SFA located in the pool of the nuclear power plant at time $T$. Let the elements be $i=1,\dots ,n$ ($n\equiv \leftI\right$). 
$J$  Set of virtual region types according to the upper and lower bounds on the decay heat of the SFAs. Let the regions be $j=0,1,\dots ,m$ with $\leftJ\right\equiv m+1$. The universal region, $j=0$, does not impose any limit; for practical purposes, the assigned elements to the universal region will remain in the pool. 
$K$  Set of classes of casks: $k=0,1,\dots ,l$ with $\leftK\right\equiv l+1$. The type of cask considered here corresponds to MPC32 described above. We will assume that there is a type of universal container, $k=0$, associated with the universal region $j=0$; for practical purpose, the elements assigned to the universal container will remain in the pool. 
${q}_{i}\left(T\right)$  Decay heat of the fuel assembly $i\in I$ at the time $T$. 
${q}_{j}^{+}$  Upper limit of a single SFA’s decay heat in the virtual region $j\in J$. 
${q}_{j}^{}$  Lower limit of a single SFA’s decay heat in the virtual region type $j\in J$. Here, we will assume ${q}_{j}^{}=0\forall j\in J$. 
$A\left(T\right),{a}_{i,j}\left(T\right)$  Element–region compatibility matrix; technological coefficients ${a}_{i,j}$ equal to 1 if the fuel assembly $i\in I$ can be located in the virtual region $j\in J$ at time $T$, and 0 otherwise. Formally: ${a}_{i,j}\equiv {a}_{i,j}\left(T\right)=\left\{\begin{array}{cc}0,& if{q}_{i}\left(T\right){q}_{j}^{+}\\ 1,& \mathit{otherwise}\end{array}\right\}$. 
$B,{b}_{j,k}$  Regioncask compatibility matrix; technological coefficients ${b}_{j,k}$ equal to 1 if the region of type $j\in J$ is associated with the cask class $k\in K$, and 0 otherwise. 
$C\left(T\right),{c}_{i,k}\left(T\right)$  Element–cask compatibility matrix, which is defined as $C\left(T\right)=A\left(T\right)\otimes B$; technological coefficients ${c}_{i,k}\left(T\right)$ are equal to 1 when the element $i\in I$ can be placed in a cask of class $k\in K$ at time $T$, and 0 otherwise. Therefore, it is true that: ${c}_{i,k}\equiv {c}_{i,k}\left(T\right)=\left\{\begin{array}{cc}1,& if{{\displaystyle \sum}}_{\forall j\in J}{a}_{i,j}\left(T\right)\otimes {b}_{j,k}=1\\ 0,& \mathit{otherwise}\end{array}\right\}$. 
${h}_{j}$  Storage capacity of a region of type $j\in J$ measured by the number of SFAs a single cask can hold in that region at most. 
${H}_{k}$  Maximum storage capacity of a cask of class $k\in K$ measured by the number of fuel assemblies. The relationship ${H}_{k}={{\displaystyle \sum}}_{\forall j}{b}_{j,k}\times {h}_{j}$ is fulfilled. 
${d}_{k},D$  Number of available casks of the class $k\in K$ at time $T$. The expected total cask availability is $D={{\displaystyle \sum}}_{\forall k}{d}_{k}$. 
${\gamma}_{k}$  Adversity coefficient for a cask of class $k\in K$. The value ${\gamma}_{k}$ symbolizes the arbitrary cost if a cask of class $k\in K$ is selected to hold SFAs. 
Variables:
${x}_{i,j}$  Binary variable that equals 1 if the fuel assembly $i\in I$ is assigned to the virtual region $j\in J$, and 0 otherwise. 
${y}_{j}$  Number of fuel assemblies assigned to the virtual region $j\in J$. 
${z}_{k}$  Number of casks of class $k\in K$. 
$\mathsf{\Gamma}\left(T\right)$  Total adversity function. It represents the overall cost of the casks used to hold the spent nuclear fuel on the scheduled date, $T$, after the pool of the nuclear power plant is emptied. 
Using these parameters and variables, we formulate the following mathematical model.
MILP1: Model for the assignment of fuel assemblies to types of virtual region In the MILP1 model, the objective Function (1) represents the minimization of the cask loading cost or total adversity, whose value coincides with the total number of casks when all the fuel assemblies are removed from the pool $\left({z}_{0}=0\right)$ and the adversity coefficients are unitary for any class of cask $({\gamma}_{k}=1\forall k=1,\dots ,l)$. Equalities (2) and (3) guarantee the assignment of all the fuel assemblies to any region, including the universal region $j=0$. Equality (4) determines the number of fuel assemblies that must be assigned to each type of region $j\in J$. Constraint (5) lower bounds the number of casks of each class $k\in K$, while Constraint (6) upper bounds that value according to their availability. Condition (7) imposes that the decision variables $({x}_{i,j})$ are binary and, finally, the nonnegativity and integrity of the auxiliary variables ${y}_{j}$ and ${z}_{k}$ are given by (8) and (9), respectively.
Running the MILP1 model offers three types of results: (i) an optimal assignment of the fuel assemblies to the various virtual regions $({x}_{i,j}^{*}\in \left\{0,1\right\}$ $\forall i\forall j)$, (ii) the optimal number of SFA assigned to each region $({y}_{j}^{*}$ $\forall j)$, and (iii) the optimal number of casks of each class $({z}_{k}^{*}$ $\forall k)$ corresponding to the minimum cost.
Although the previous results are interesting, the location of the fuel assemblies in the real regions of the casks remains to be determined.
3.2.2. Phase 2: Assignment of the Fuel Assemblies to the Real Cask Regions
Any sequence of objects corresponding to the triplet of sets $\left(I,J,K\right)$ can lead to a different solution. For example, if the sequence is built on the set $I$ of fuel assemblies, then the number of different ways to assign is $n!$ This can lead to an astronomical number of potentially different solutions for instances of realistic dimensions (e.g., $1164!$ in our case study). Based on this idea, we propose a family of constructive algorithms, $A1[\pi \left(n\right)$], which depends on the regulatory sequence $\pi \left(n\right)$ of the assignment of fuel assemblies to virtual regions.
Starting from an optimal solution given by MILP1$({x}_{i,j}^{*}\forall i\forall j,{y}_{j}^{*}\forall j,{z}_{k}^{*}\forall k)$, the procedure $A1\left[\pi \left(n\right)\right]$ creates a sequence $\pi \left(n\right)$ of fuel assemblies (Statement 5 in $A1\left[\pi \left(n\right)\right]$) to establish the sequence of assignment of SFAs to casks. Once the procedure determines the class of the cask ${k}_{t}^{*}$ that corresponds to the current element ${\pi}_{t}$, the element is recorded in the matrix $MPC32[\xb7]$ (Statement 13 in $A1\left[\pi \left(n\right)\right]$), whose rows correspond to casks and whose columns correspond to positions within the cask. Subsequently, the heat loads ${Q}_{mpc32}[\xb7]$in the casks are determined (Statement 16 in $A1\left[\pi \left(n\right)\right]$), and the elements are sequenced in the casks according to such loads (Statement 17 in $A1\left[\pi \left(n\right)\right]$). Finally, the results of the algorithm are returned (Statement 18 in $A1\left[\pi \left(n\right)\right]$).
Algorithm 1.$A1\left[\pi \left(n\right)\right]$: Algorithms to assign fuel assemblies to regions according to $\pi \left(n\right)$ 
// Initialization Input$I,\left(n,m,l\right),B\left[{b}_{j,k}\right],\left({q}_{i}\forall i\right),({x}_{i,j}^{*}\forall i\forall j),({y}_{j}^{*}$$\forall j),({z}_{k}^{*}$$\forall k),{\mathsf{{\rm P}}}^{\kappa}$ Initialize$t=0,MPC32\left[{z}_{k}^{*},32\right]=\{\varnothing \}$ // Create assignment sequence of SFAs $\pi \left(n\right)=\left({\pi}_{1},{\pi}_{2},\dots ,{\pi}_{n}\right)\leftarrow Generate\_sequence\left(I,n,{\mathsf{{\rm P}}}^{\kappa}\right)$ While ($t\le n)$ do Set$t=t+1$ // Find the virtual region assigned to element ${\mathsf{\pi}}_{\mathrm{t}}.$ Let ${j}_{t}^{*}$ Set${j}_{t}^{*}=argma{x}_{\forall j}({x}_{{\pi}_{t},j}^{*})$ // Find cask class associated with region ${j}_{t}^{*}$. Let ${k}_{t}^{*}$ Set${k}_{t}^{*}=argma{x}_{\forall k}\left({b}_{{j}_{t}^{*},k}\right)$ // Record the SFA in the matrix MPC32 $MPC32[\xb7]$$\leftarrow Record\_element\left(I,{\pi}_{t},{j}_{t}^{*},{k}_{t}^{*}\right)$ End while // Calculate residual heat loads and order elements in matrix MPC32 ${Q}_{mpc32}[\xb7]\leftarrow Calculate\_loads$($I,{q}_{i},MPC32[\xb7])$ $MPC32[\xb7]\leftarrow Order\_elements\left(I,{Q}_{mpc32}[\xb7],MPC32[\xb7]\right)$ Return${Q}_{mpc32}[\xb7],MPC32[\xb7]$ // End Algorithm $A1\left[\pi \left(n\right)\right]$

Note that Algorithm 1 $A1\left[\pi \left(n\right)\right]$ can generate many solutions thanks to the fact that the starting point is a permutation $\pi \left(n\right)$of the fuel assemblies of the set $I$ (Statement 5 in $A1\left[\pi \left(n\right)\right]$). Such permutations can be created using a family of rules ${\mathsf{{\rm P}}}^{\kappa}$ applied on the set $I$, which is initially ordered according to the SFA’s identifier ($i\in I$). The family of rules ${\mathsf{{\rm P}}}^{\kappa}$ can be of diverse nature; they may consist of the same initial sequence (lexicographic order) or the simple sequence of the elements according to the decay heat or in more complex rules used for the generation of neighborhoods (exchange and insertion) in algorithms based on trajectories through the search domain.
Obviously, all the solutions generated by
$A1\left[\pi \left(n\right)\right]$ are optimal when the function objective is the minimization of the cost of the casks [
28], as happens in Phases 1 and 2 of this work; however, when the objective function corresponds to another optimization criterion, such as the balancing of the heat load in the set of casks,
$A1\left[\pi \left(n\right)\right]$ can be used in, at least, two ways:
 (1)
In the construction phase (or phases) of multistart algorithms, v.gr. greedy randomized adaptive search procedure (GRASP) algorithms, to build initial solutions to be used as seeds for the next phase of trajectorybased improvement in the search domain.
 (2)
In the systematic generation of solutions, to assist metaheuristics based on populations (v.gr. genetic and memetic algorithms).
In this work, Algorithm 1 $A1\left[\pi \left(n\right)\right]$ constitutes one of the fundamental pillars for the construction of initial solutions, and the chosen way is (1).
3.2.3. Phase 3: Reduction of the Dispersion of the Thermal Load of the Casks
Phase 3 of the proposed procedure aims to reduce, by a predetermined number of iterations, the dispersion of the thermal load (measured in kW) in the set of casks. The dispersion metric to minimize chosen here is the standard deviation
$\sigma \left(Q,T\right)$; this is:
where:
${z}_{tot}^{*}$  Total optimal number of casks: ${z}_{tot}^{*}={{\displaystyle \sum}}_{\forall k}{z}_{k}^{*}$. It is obtained by applying the MILP1 procedure by setting values to the adversity coefficient ${\gamma}_{k}$ $(\forall k\in K$). 
${Q}_{{\delta}_{k}}$  Total thermal load due to the SFA loaded on date $T$ in the ${\delta}_{k}$th cask of class $k$: ${\delta}_{k}=1,\dots ,{z}_{k}^{*}\left(\forall k\in K\right)$. These values are obtained after applying the Algorithm 1 $A1\left[\pi \left(n\right)\right]$ by fixing a permutation $\pi \left(n\right)$ of the elements of set $I$. 
${Q}_{avg}$  Average value of the thermal load in the set of casks on date $T$: ${Q}_{avg}=\frac{{{\displaystyle \sum}}_{i\in I}{q}_{i}\left(T\right)}{{z}_{tot}^{*}}$ 
$\sigma \left(Q,T\right)$  Standard deviation of the thermal load in the set of casks on date $T$. 
In order to carry out Phase 3, the nonexhaustive descent Algorithm 2 $A2\left[\pi \left(n\right)\right]$ is applied, based on local search optimization (see Algorithm 2 $A2\left[\pi \left(n\right)\right]$ below). Its main characteristics are as follows.
Phase 3.1: Initialization of Algorithm 2 $A2\left[\pi \left(n\right)\right]$
An initial solution ${X}^{0}$ is obtained, applying the mathematical program MILP1, after prefixing the values of the vector $\overrightarrow{\gamma}=({\gamma}_{1},\dots ,{\gamma}_{l}$) of adversity coefficients; this solution is characterized by the triple of sets of values $({x}_{ij}^{*}\forall i\forall j,{y}_{j}^{*}\forall j,{z}_{k}^{*}\forall k)$.
The Algorithm 1 $A1\left[\pi \left(n\right)\right]$ is applied to the solution ${X}^{0}$, considering the arbitrary sequence $\pi \left(n\right)$, which initially corresponds to ${\pi}^{0}\left(n\right)$: the lexicographic order of the SFA’s identifiers ($i\in I$). Thus, the extended solution ${X}_{mpc}^{0}=\left\{{X}^{0},\pi \left(n\right),MPC32\left[{z}_{k}^{*},32\right]\right\}$ is obtained, which contains detailed information on the location of each element inside the casks ${z}_{k}^{*}\left(\forall k\right)$ in the matrix $MPC32\left[{z}_{k}^{*},32\right]$.
Solution ${X}_{mpc}^{0}$ is fixed as the incumbent solution of the local search iterative procedure $({X}_{mpc}^{\mathrm{c}}\leftarrow {X}_{mpc}^{0})$. In addition, ${X}_{mpc}^{0}$ is fixed as the best solution $({X}_{mpc}^{*}\leftarrow {X}_{mpc}^{0})$, and the standard deviation of this solution $\sigma \left({X}_{mpc}^{*}\right)$ is determined.
Phase 3.2: Improvement of the initial solution with $A2\left[\pi \left(n\right)\right]$
A tentative solution ${\widehat{X}}_{mpc}^{\mathrm{c}}$ belonging to the restricted neighborhood of the incumbent solution ${X}_{mpc}^{\mathrm{c}}$ is generated—that is, ${\widehat{X}}_{mpc}^{\mathrm{c}}\in \mathcal{N}\left({X}_{mpc}^{\mathrm{c}},{\mathsf{{\rm P}}}^{LS},{S}_{F}\right)$—where ${{\rm P}}^{LS}$ is the rule for generating neighboring solutions and ${S}_{F}$ is the set of possible solutions. Specifically, given the incumbent solution ${X}_{mpc}^{\mathrm{c}}$, the generation rule ${{\rm P}}^{LS}$ operates as follows: for all pairs of different casks $({\delta}_{k},{\delta}_{{k}^{\prime}})$ and all pairs of positions in these casks $\left(pos({\delta}_{k}\right),pos\left({\delta}_{{k}^{\prime}}\right))$, the tentative neighboring solutions $\left({\widehat{X}}_{mpc}^{\mathrm{c}}\right)$ exchange the elements between these positions, within the set of possible solutions ${S}_{F}$ that is regulated by the SFA–cask compatibility matrix $C\left(T\right)$.
If the tentative solution ${\widehat{X}}_{mpc}^{\mathrm{c}}$ is a possible solution (${\widehat{X}}_{mpc}^{\mathrm{c}}\in {S}_{F})$ and $\sigma \left({\widehat{X}}_{mpc}^{\mathrm{c}}\right)<\sigma \left({X}_{mpc}^{*}\right)$, then the solution ${\widehat{X}}_{mpc}^{\mathrm{c}}$ becomes the best solution $\left({X}_{mpc}^{*}\leftarrow {\widehat{X}}_{mpc}^{\mathrm{c}}\right)$ and also the new incumbent solution $\left({X}_{mpc}^{\mathrm{c}}\leftarrow {\widehat{X}}_{mpc}^{\mathrm{c}}\right)$.
The above steps are repeated within Phase 3.2 as long as there is an improvement to the incumbent solution or the number of tentative solutions generated does not reach the preset value ${\widehat{it}}^{\infty}$ (v.gr. ${\widehat{it}}^{\infty}=1000$ tentative solutions).
Algorithm 2.$A2\left[\pi \left(n\right)\right]$: Nonexhaustive local search descent algorithm based on $\pi \left(n\right)$ 
// Initialization Input$I,\left(n,m,l\right),C\left[{c}_{i,k}\right],\left({q}_{i}\forall i\right),{X}^{0},\pi \left(n\right),{\mathsf{{\rm P}}}^{LS},{\widehat{it}}^{\infty}$ ${X}_{mpc}^{0}\leftarrow Generate\_solution({X}^{0},A1\left[\pi \left(n\right)\right]$ ${X}_{mpc}^{\mathrm{c}}\leftarrow {X}_{mpc}^{0};{X}_{mpc}^{*}\leftarrow {X}_{mpc}^{0};iter=0$ // Solution improvement by local search Repeat ${\widehat{X}}_{mpc}^{\mathrm{c}}\leftarrow {X}_{mpc}^{\mathrm{c}}$; $exit=true;iter=iter+1$ $\mathcal{N}\left({X}^{c},{\mathsf{{\rm P}}}^{\kappa},{S}_{F}\right)\leftarrow Operator\_Neighbourhood\left({X}_{mpc}^{\mathrm{c}},{\mathsf{{\rm P}}}^{LS},{S}_{F}\right)$ Repeat for all$X\in \mathcal{N}\left({X}_{mpc}^{\mathrm{c}},{\mathsf{{\rm P}}}^{LS},{S}_{F}\right)$ If$\left[\sigma \left(X\right)<\sigma \left({\widehat{X}}_{mpc}^{\mathrm{c}}\right)\right]=true$then${\widehat{X}}_{mpc}^{\mathrm{c}}\leftarrow X$ Until ($\left[\sigma \left({\widehat{X}}_{mpc}^{\mathrm{c}}\right)<\sigma \left({X}_{mpc}^{\mathrm{c}}\right)\right]=true)$ If$\left[\sigma \left({\widehat{X}}_{mpc}^{\mathrm{c}}\right)<\sigma \left({X}_{mpc}^{\mathrm{c}}\right)\right]=true$then${X}_{mpc}^{*}\leftarrow {\widehat{X}}_{mpc}^{\mathrm{c}}\u22cf{X}_{mpc}^{\mathrm{c}}\leftarrow {\widehat{X}}_{mpc}^{\mathrm{c}}\u22cfexit=false$ Until$\left(exit=true\u22ceiter\ge {\widehat{it}}^{\infty}\right)$ Return$\left\{{X}_{mpc}^{*},\sigma \left({X}_{mpc}^{*}\right)\right\}$ // End Algorithm $A2\left[\pi \left(n\right)\right]$

3.2.4. MultiStart Metaheuristics Assisted by Assignment Sequences
The proposed metaheuristic integrates the procedures of the three phases described above (see Schema $MS\left[{X}^{0},\pi \left(n\right)\right])$. This metaheuristic can be classified within the category of multistart algorithms, since it uses a multitude of initial solutions generated by the algorithm $A1\left[\pi \left(n\right)\right]$ of Phase 2. In the generation of solutions, $A1\left[\pi \left(n\right)\right]$ uses a current sequence string $({\pi}^{\mathrm{c}}\left(n\right))$; this chain is progressively constructed by moderately altering the current sequence giving rise to the next ongoing permutation. The main characteristics of $MS[\xb7]$ are the following:
The Algorithm 3 metaheuristic $MS\left[{X}^{0},\pi \left(n\right)\right])$ is initialized by executing Phase 3.1, starting with an initial solution ${X}^{0}$ offered by MILP1 (Phase 1) and registering the sequence $\pi \left(n\right)$ as an assignment current sequence; that is: ${\pi}^{\mathrm{c}}\left(n\right)\leftarrow \pi \left(n\right)$.
In a specific iteration, given an arbitrary current sequence, which we will denote as ${\pi}^{\mathrm{c}}\left(n\right)$, the algorithms $A1\left[\pi \left(n\right)\right]$ and $A2\left[\pi \left(n\right)\right]$ are cascaded, making ${\pi}^{\mathrm{c}}\left(n\right)\leftarrow \pi \left(n\right)$, and thus obtaining a solution ${X}_{mpc}^{*}\left({\pi}^{\mathrm{c}}\left(n\right)\right)$ that is locally optimal.
In an iteration, to go from an ongoing assignment current sequence $({\pi}^{\mathrm{c}}\left(n\right))$ to the next current sequence $\left({\pi}^{{\mathrm{c}}^{\prime}}\left(n\right)\right)$, there are many alternatives. Specifically, in this work, we have chosen to apply a slight mutation on the first sequence ${\pi}^{\mathrm{c}}\left(n\right)$. This mutation, characterized by the ${P}^{m}$ rule, consists of exchanging, in pairs, the fuel elements located in four positions of the current sequence chosen at random.
Thus, for each ${X}^{0}$, the number of initial solutions locally optimized by $MS\left[{X}^{0},\pi \left(n\right)\right]$ is equal to the number of sequences generated with the ${P}^{m}$ mutation rule. The $MS[\xb7]$ procedure ends when the number of mutated sequences reaches a maximum value equal to $i{t}^{\pi \infty}$ (v.gr. $i{t}^{\pi \infty}=1000$ mutate sequences).
Algorithm 3.Metaheuristic$MS\left[{X}^{0},\pi \left(n\right)\right]$: ThreePhase Hybrid Metaheuristics Based on ${X}^{0}$ and $\pi \left(n\right)$ 
// Initialization from a solution ${X}^{0}$ found by MILP1 // (Phase 1) Input${X}^{0},\pi \left(n\right),{\mathsf{{\rm P}}}^{LS},{\mathsf{{\rm P}}}^{m},i{t}^{\pi \infty}$ ${\pi}^{\mathrm{c}}\left(n\right)\leftarrow \pi \left(n\right);iter=1$ ${X}_{mpc}^{\mathrm{c}}\leftarrow Generate\_solution\left({X}^{0},A1\left[\pi \left(n\right)\right]\right)$ // Initial solution from $A1\left[\pi \left(n\right)\right]$. ${X}_{mpc}^{*}\leftarrow Improve\_solution\left({X}_{mpc}^{\mathrm{c}},A2\left[\pi \left(n\right)\right],{\mathsf{{\rm P}}}^{LS}\right)$ // Improved solution from $A2\left[\pi \left(n\right)\right]$. Repeat $\pi \left(n\right)\leftarrow Mutate\_sequence\left({\pi}^{\mathrm{c}}\left(n\right),{\mathsf{{\rm P}}}^{m}\right)$ ${\pi}^{\mathrm{c}}\left(n\right)\leftarrow \pi \left(n\right)$ ${X}_{mpc}^{\mathrm{c}}\leftarrow Generate\_solution\left({X}^{0},A1\left[{\pi}^{\mathrm{c}}\left(n\right)\right]\right)$ // Phase 2: Initial solution (iter). $X\leftarrow Improve\_solution\left({X}_{mpc}^{\mathrm{c}},A2\left[{\pi}^{\mathrm{c}}\left(n\right)\right],{\mathsf{{\rm P}}}^{LS}\right)$ // Phase 3: Improved solution (iter). If$\left[\sigma \left(X\right)<\sigma \left({X}_{mpc}^{*}\right)\right]=true$then${X}_{mpc}^{*}\leftarrow X$ $iter=iter+1$ Until$\left(iter\ge i{t}^{\pi \infty}\right)$ Return$\left\{{X}_{mpc}^{*},\sigma \left({X}_{mpc}^{*}\right)\right\}$ // End Metaheuristic $MS\left[{X}^{0},\pi \left(n\right)\right]$

4. Case Study
This section is dedicated to a case study inspired in the spent fuel pools of Ascó NPP (Tarragona, Spain). It contains the following points: (i) the model assumptions, (ii) the requirements for spent fuel cask loading, (iii) the procedures used, (iv) the data used, and (v) the results achieved.
4.1. Hypothesis for the Case
The following hypotheses are assumed for the case at hand:
Hypothesis 1 (H1). Fuel assemblies are characterized by their type, burnup ($MWd/t$), initial enrichment (% by mass), and the time elapsed since they are unloaded from the core (in years). From these data, the decay heat of each element can be determined at the time it is transferred from the pool to the cask.
Hypothesis 2 (H2). There are no fuel assemblies damaged or affected by other additional constraints.
Hypothesis 3 (H3). The elements associated with the fuel, such as neutron sources, control rods, consumable poisons, and others, are not considered in the model.
Hypothesis 4 (H4). It is assumed that only one type of cask is available in terms of physical dimensions and number of positions for fuel assemblies, the MPC32.
Hypothesis 5 (H5). The fuel assemblies are loaded into the casks taking into account the requirements for storage in moduletype HISTORM storage containers. It is assumed that there is no capacity limit in the ISFSI.
Hypothesis 6 (H6). The contents of the spent fuel pool at the end of the operation of the plant (T = 0) are assumed to be known. To carry out the case study, the real content of the spent fuel pool of NPP Ascó 1 is used here. The decay heat of each of the SFA at any given time T can be computed from their cooling time (this is T plus the time each SFA has previously spent in the pool) and the SFA’s burnup and initial enrichment.
Hypothesis 7 (H7). The pool should be emptied using the minimum possible number of casks on the earliest possible date. The date has been chosen as T = 6 years in order to guarantee that even the hottest SFA meets the requirements.
Hypothesis 8 (H8). It may be interesting that the thermal load of the casks is balanced. Therefore, we aim at minimizing the standard deviation of the thermal load of the set of casks.
4.2. Requirements for the Storage of Fuel Assemblies
The requirements to take into account for emptying the pool are as follows:
 R1.
Casks are of the MPC32 type, which are compartmentalized in 32 positions, each one containing a single fuel assembly (see
Figure 2).
 R2.
The positions of a MPC32 are grouped into two regions: (${R}_{a}$) a permissive region with a high limit for the decay heat formed by ${h}_{a}=12$ positions and (${R}_{b}$) a restrictive region with a low limit for the decay heat formed by ${h}_{b}=20$ positions.
 R3.
A fuel encapsulation position (concept for which we will use the Latin noun locus–loci) can house an SFA whose cooling time is greater than 5 years (in our case, with T = 6 years, this does not constitute any limitation).
 R4.
The contents of each locus in any cask must have a decay heat less than or equal to the maximum allowed in the locus: ${q}_{a}^{+}$ in region ${R}_{a}$ and ${q}_{b}^{+}$ in region ${R}_{b}$.
 R5.
The maximum heat load allowed in a cask is equal to ${Q}_{MPC}^{+}=30\mathrm{kW}$.
 R6.
The maximum values for decay heat at loci are determined according to the case:
 
Case of uniform loading: the maximum decay heat allowed per locus in the MPC32 equals ${q}_{a}^{+}={q}_{b}^{+}=0.9375\mathrm{kW}$ (30 $\mathrm{kW}/32$). Therefore, if all SFAs have a decay heat ${q}_{i}\left(T\right)\le 0.9375\mathrm{kW}\forall i\in I$, then only one class of container is needed, and the problem has a trivial solution (in what concerns the minimization of the number of casks)
 
Case of regionalized loading: if any SFA has a decay heat ${q}_{i}\left(T\right)>0.9375\mathrm{kW}$, then some casks allowing regionalized load are needed. In this case, the maximum values of decay heat per locus (${q}_{a}^{+}$ or ${q}_{b}^{+}$) according to the region to which it belongs (${R}_{a}$ o ${R}_{b}$) are determined as follows:
 (1)
Set a value of the ratio of the maximum values of decay heat per locus $\rho ={q}_{a}^{+}/{q}_{b}^{+}$, such that$1\le \rho \le 3$ ($\rho =1$ corresponts to the uniform loading, $\rho =3$ is the maximum value allowed by the regulator for this ratio).
 (2)
Determine the maximum allowed thermal load per
locus,
${q}_{b}^{+}={q}_{b}^{+}\left(\rho ,{h}_{a},{h}_{b}\right)$ for the restrictive region
${R}_{b}$, from the expression:
where
$f\left(\rho ,{h}_{a},{h}_{b}\right)$ is a function bounded to 1 for
$\rho =1$ and decreasing with
$\rho $. The function
$f\left(\rho ,{h}_{a},{h}_{b}\right)$ for the MPC32 is:
 (3)
Determine the maximum allowed thermal load per locus,
${q}_{a}^{+}\left(\rho ,{h}_{a},{h}_{b}\right),$ for the permissive region
${R}_{a}$:
4.3. Data and Other Characteristics of the Case
Obviously, the dimensions of the MILP1 model are a function of the instances used. In this work, we use the ASCÓ#01_6.0 instance (see
Table A1 in
Appendix A) as data for decay heat. The main characteristics of the experiment are as follows:
 (1)
The number of spent fuel assemblies is equal to $n=1164$. The elements are identified with the indices $i\in I$ corresponding to the $n$ first natural numbers.
 (2)
The expected date for the removal of elements from the pool is
$T=6$ years after the end of operation. The decay heat values
${q}_{i}\left(T\right)\forall i\in I$ listed in
Table A1 of
Appendix A correspond to
$T=6$ years.
 (3)
The number of virtual regions of decay heat is equal to
$m=6$. Let
${r}_{j}=\left\{q\in \mathbb{R}:q\in \left[{q}_{j}^{},{q}_{j}^{+}\right]\right\}\left(\forall j=0,1,\dots ,5\right)$ be those regions that are defined with closed intervals of decay heat per
locus. The regions are specified from three values of the ratio of maximum thermal loads:
$\rho =1,2,3$. Let:
For convenience, virtual regions have been numbered in descending order of the upper limit ${q}_{j}^{+}$ $\forall j$ of each interval.
 (1)
The definition of virtual regions (
${r}_{0}$ to
${r}_{5}$) allows establishing the element–region compatibility matrix
$A\left(T\right)$, whose technological coefficients adopt the value 1 if the fuel assembly
$i\in I$ can be assigned to a virtual region of type
$j\in J$ at the time
$T$, and 0 otherwise. Formally:
 (2)
The number of cask classes is
$l=3$ if we omit the neutral virtual region
r_{0}, which corresponds to the pool. The correspondence between the virtual regions (
${r}_{1}$ to
${r}_{5}$) and the real classes of the regionalized cask (
$C{R}_{1}$ a
C${R}_{3}$) is established through the regioncask compatibility matrix
$B$, whose coefficients
${b}_{j,k}$ are equal to 1 when the region
${r}_{j}$ $\left(j=1,\dots ,5\right)$ is associated with cask
$C{R}_{\mathrm{k}}$ $\left(k=1,\dots ,3\right)$, and they are 0 otherwise. In our case, matrix
$B$ is as follows:
Thus, a cask $C{R}_{1}$ is compartmentalized in a permissive region with the characteristics of ${r}_{1}$ and a restrictive region associated with ${r}_{5};$ a cask $C{R}_{2}$ is associated with a permissive region ${r}_{2}$ and another restrictive ${r}_{4}$; and finally, a cask $C{R}_{3}$ has only one region with the qualities of the intermediate region r_{3}.
 (1)
From a technological point of view, all the containers in this study correspond to MPC32, with 12 positions in the permissive region and 20 positions in the restrictive regions. Obviously, an MPC32 of class $C{R}_{3}$ has 32 positions in the unique region.
 (2)
Taking into account that the number of cask classes is $l=3$, it remains to define the unit cost per each class. In order to measure the impact of the adversity coefficients ${\gamma}_{k}\left(\forall k\right)$ on the solutions offered by MILP1, different values are given to the arbitrary costs $\overrightarrow{\gamma}=({\gamma}_{1},{\gamma}_{2},{\gamma}_{3}$).
 (3)
Taking into account the values and characteristics exposed in the previous points, the dimensions of the MILP1 model for the Ascó # 01_6.0 instance are the following: (i) 6984 binary decision variables $({x}_{i,j})$ corresponding to the assignment of fuel assemblies to virtual regions; (ii) 6 integer variables $({y}_{j})$ associated with the number of fuel assemblies hosted by each virtual region; (iii) 4 representative integer variables (${z}_{k}$) for the number of casks of each class; and (iv) 1195 constraints (1199 if the availability of casks is bounded).
4.4. Procedures
All compiled codes corresponding to the procedures used have been executed on a DELL Inspiron13 (Intel(R) Core(TM) i77500U @ 2.70 GHz CPU 2.90 GHz, 16 GB de RAM, x64 Windows 10 Pro). The models and tools used to find the optimal solutions for this case study are the following:
 (1)
Model MILP1 [
28] based on MILP that allows minimizing the cost
$({\mathsf{\Gamma}}^{*}\left(T\right))$ of the containers required
$({z}_{k}^{*}$ $\forall k)$ to transfer all the SNF from the NPP pool. MILP1 also offers the number of SFAs assigned to each region
$({y}_{j}^{*}$ $\forall j),$ as well as an optimal assignment
$({x}_{i,j}^{*}\forall i\forall j)$ of each SFA to a virtual region. For the exploitation of MILP1, we use the IBM ILOG CPLEX solver (Optimization Studio v.12.2, winx8664).
 (2)
Deterministic method
$A1\left[\pi \left(n\right)\right]$ that starts from the result of MILP1 and offers an assignment of SFAs to the permissive and restrictive regions of the casks based on the sequence of assignment of SFAs to casks
$\pi \left(n\right)$. Here, 1000 consecutive allocation sequences are considered, which are generated by slightly mutating one of them to obtain the next, following the neighborhood transition rule
${P}^{LS}$. MILP1 plus
$A1\left[\pi \left(n\right)\right]$ (with lexicographic order of the fuel assembly codes) constitute the deterministic procedure
$DP\left[\pi \left(n\right)\right]$ proposed in [
28].
 (3)
Local search heuristic $A2\left[\pi \left(n\right)\right]$ that starts from a solution generated by $A1\left[\pi \left(n\right)\right]$ and explores neighborhoods nonexhaustively until reaching a local optimum. The procedures MILP1 plus $A1\left[\pi \left(n\right)\right]$ plus $A2\left[\pi \left(n\right)\right]$ (with the mutation rule ${P}^{m}$ applied to the $\pi \left(n\right)$ sequence in $i{t}^{\pi \infty}$ iterations) constitute the metaheuristic $MS\left[{X}^{0},\pi \left(n\right)\right]$ proposed in this work.
In short, metaheuristic $MS\left[{X}^{0},\pi \left(n\right)\right]$ works in this manner: from an optimal solution found by MILP1, which is characterized by the triple of sets of values $[({x}_{i,j}^{*}\forall i\forall j),({y}_{j}^{*}$ $\forall j),({z}_{k}^{*}$ $\forall k)]$, the algorithm $A1\left[\pi \left(n\right)\right]$ is applied $i{t}^{\pi \infty}$ times, transferring one by one and following $i{t}^{\pi \infty}$ sequences $\pi \left(n\right)$, the SFAs assigned to the virtual regions ${r}_{j}$ ($\forall j)$ toward the physical regions (permissive and restrictive) of the casks $C{R}_{k}$ $\left(\forall k\right)$, using the regioncask compatibility matrix $B$. Afterwards, the local optimization corresponding to heuristics $A2\left[\pi \left(n\right)\right]$ is applied to all $\left(i{t}^{\pi \infty}\right)$ solutions generated by algorithm $A1\left[\pi \left(n\right)\right]$.
4.5. Results
In addition to considering the solution from MILP1 with the triplet
${\overrightarrow{\gamma}}_{0}=\left(1,1,1\right)$, which corresponds to minimizing the total number of casks, and in order to assess the impact of the adversity coefficients
${\gamma}_{k}\left(\forall k\right)$ on the solutions offered by MILP1, 24 other optimal solutions are also analyzed, fixing the list of arbitrary costs
$\overrightarrow{\gamma}=({\gamma}_{1},{\gamma}_{2},{\gamma}_{3}$) to the following values:
Using the deterministic procedure
$DP\left[\pi \left(n\right)\right]$ proposed in [
28], after obtaining an optimal solution with MILP1
$[({x}_{i,j}^{*}\forall i\forall j),({y}_{j}^{*}$ $\forall j),({z}_{k}^{*}$ $\forall k)]$, the algorithm
$A1\left[\pi \left(n\right)\right]$ is applied following the sequence
$\pi \left(n\right)$ corresponding to the lexicographic order of the fuel assembly identifiers. The global results of the 25 solutions are shown in
Table 1.
Specifically, in
Table 1, the following data are collected for each solution (#0 to #24):
 (1)
The cost $\overrightarrow{\gamma}=({\gamma}_{1},{\gamma}_{2},{\gamma}_{3}$) imputed to each cask class.
 (2)
The optimal number of casks of each class $({z}_{k}^{*}$ $\forall k)$ and the total number $({z}_{tot}^{*}$) of casks required by each solution.
 (3)
The optimal values of the objective cost function $({\mathsf{\Gamma}}^{*}\left(T\right)$ for the MILP1 model.
 (4)
The average thermal load corresponding to the configuration of each solution $({Q}_{avg})$.
 (5)
The standard deviation of the thermal load in the set of casks: $\sigma \left(Q\right)$.
Table 1 shows 16 optimal solutions that require 37 MPC32, which is a number that also coincides with the minimum number of casks, according to the lower bound (
$\lceil 1164/32\rceil $). However, these solutions show different values of the standard deviation of the thermal load, depending on the configuration of the 37 casks.
As an example, initial solution #9, one with the lowest thermal load dispersions between the casks: $\sigma \left(Q\right)=2.90$, corresponds to the triplet of costs ${\overrightarrow{\gamma}}_{9}=\left(3,2,3\right)$, in which it is considered that the adversity to the use of casks of classes $C{R}_{1}$ and $C{R}_{3}$ is 1.5 times higher that of class $C{R}_{2}$ casks.
Based on solution #9, the FAs column in
Figure 3 shows the number of SFAs assigned to each virtual region, i.e.,
${y}_{1}^{*}=24,{y}_{2}^{*}=274,{y}_{3}^{*}=369,{y}_{4}^{*}=457,{y}_{5}^{*}=40$. This is translated into a total requirement of 37 casks (see the MPC[z
_{k}, h
_{j}] column in
Figure 3),
${z}_{1}^{*}=2,{z}_{2}^{*}=23$ and
${z}_{3}^{*}=12$ regionalized casks of classes
$C{R}_{1}$,
$C{R}_{2}$, and
$C{R}_{3}$, respectively.
On the other hand,
Figure 4 shows the detailed loads of the containers MPC32 number n.1 (class
$C{R}_{1}$), number n.3 (class
$C{R}_{2}$) and number n.26 (class
$C{R}_{3}$) of the initial solution #9. These loads are characterized by the identifiers and decay heat of the fuel assemblies located in each MPC32.
In view of
Figure 4, the following can be stated:
Cask n.1 of initial solution #9 is class $C{R}_{1}$ with a permissive region ${R}_{a}\leftarrow {r}_{1}$ of 12 positions and a restrictive region ${R}_{b}\leftarrow {r}_{5}$ of 20. The 12 hottest assemblies in this cask are located in region ${R}_{a}$, so locus1 is occupied by the fuel assembly 751 with a decay heat of 1.3740 kW, while the fuel assembly 753 (the last in ${R}_{a}$) is located in locus12 with 1.3234 kW. Complementarily, 20 “cold” elements are located in positions 13 to 32 of the restrictive region ${R}_{b}$ of MPC32 n.1, assembly 23 in locus13, and assembly 21 in locus32, whose decay heats are 0.4189 kW, coinciding with the decay heat of all the elements located in this region.
Casks n.3 (initial solution #9) is class $C{R}_{2}$, with its permissive region ${R}_{a}\leftarrow {r}_{2}$ and its restrictive region ${R}_{b}\leftarrow {r}_{4}$. In region ${R}_{a}$, the 12 hottest elements of this cask are located with element 255 occupying locus1 and element 281 located in locus12 with residual heats equal to 0.7813 kW and 0.6320 kW, respectively. In addition, all the SFAs located in the restrictive region ${R}_{b}$ are considered to have a decay heat of 0.4189 kW.
Finally, cask n.26 of initial solution #9 is class 3 with a uniform region consisting of 32 positions: $({R}_{a},{R}_{b})\leftarrow {r}_{3}$. The loci{1,12,13,32} are occupied by the elements 244, 126, 144, and 122, their respective decay heats being as follows: 0.7673, 0.6917, 0.6898, and 0.6332 kW.
Other interesting results shown in
Figure 4 are as follows: (i) the total thermal load casks n.1, n.3, and n.26, which are 24.55, 16.39, and 21.59 kW, respectively; (ii) the thermal loads in the permissive and restrictive
$({R}_{a},{R}_{b})$ regions of these casks (v.gr. in MPC32 n.26: 8.57 and 13.01 kW); (iii) the average thermal load, equal to 22.77 kW, corresponding to the load of the 1164 SFAs in the 37 casks that constitute initial solution #9; and, finally, (iv) the standard deviation of the thermal load associated with initial solution # 9,
$\sigma \left(Q\right)=2.90\mathrm{kW}$.
On the other end, to illustrate the performance of the
$MS\left[{X}^{0},\pi \left(n\right)\right]$ metaheuristic in terms of improving the standard deviation of the thermal load in the set of casks, nine solutions have been selected from the 25 solutions presented in
Table 1. The solution selection criterion meets the following conditions:
 (1)
Have a total number of ${z}_{tot}^{*}$ containers that is minimal; that is: ${z}_{tot}^{*}=37$.
 (2)
If two or more solutions with ${z}_{tot}^{*}=37$, have the same configuration of containers by type $({z}_{1}^{*},{z}_{2}^{*},{z}_{3}^{*})$, the one that presents smaller standard deviation $\sigma \left(Q\right)$ is chosen; for example, between solutions #2 and #9, we select solution #9.
The final solutions selected to apply Phase 3 to improve
$\sigma \left(Q\right)$ using metaheuristic
$MS\left[{X}^{0},\pi \left(n\right)\right]$ are shown in
Table 2. The indicators selected to compare these solutions are as follows: (i) the standard deviations
${\sigma}_{A1}\left(Q\right)$ and
${\sigma}_{A2}\left(Q\right)$ corresponding to the initial solutions provided by
$A1\left[\pi \left(n\right)\right]$ and the improved solutions provided by
$A2\left[\pi \left(n\right)\right]$, (ii) the iteration
$i{t}^{*}$ corresponding to the best solution with
$MS\left[{X}^{0},\pi \left(n\right)\right]$; (iii) the computing time in seconds,
$CP{U}_{i{t}^{*}}$, corresponding to the iteration
$i{t}^{*}$; and (iv) the computing time in seconds,
$CP{U}_{1000}$, given to
$MS\left[{X}^{0},\pi \left(n\right)\right]$ to improve 1000 initial solutions provided by
$A1\left[\pi \left(n\right)\right]$ from a solution
${X}^{0}$ provided by MILP1.
In view of
Table 2, we can draw the following conclusions:
 (1)
Metaheuristic $MS\left[{X}^{0},\pi \left(n\right)\right]$ uses on average 632 s of CPU time to reach the best local optimum of 1000 initial solutions from algorithm $A1\left[\pi \left(n\right)\right]$. This average is included in the range of values [511, 729] in seconds.
 (2)
Metaheuristic $MS\left[{X}^{0},\pi \left(n\right)\right]$ takes on average 254.4 s of CPU time to obtain the best solution (locally optimized) from 1000 initial solutions generated by $A1\left[\pi \left(n\right)\right]$. This average is included in the range of values [7.9, 652.3] in seconds.
 (3)
On average, the iteration $i{t}^{*}$ (best solution using $MS\left[{X}^{0},\pi \left(n\right)\right]$) is $i{t}^{*}\approx 361$ (over 1000 iterations). This average is included in the range of values [10, 998] in iterations.
 (4)
The procedure
$DP\left[\pi \left(n\right)\right]$ proposed in [
28] obtains, on average, solutions with a standard deviation of the thermal load equal to
${\sigma}_{A1}\left(Q\right)=3.21$. The range of values for
${\sigma}_{A1}\left(Q\right)$ is [2.90, 3.52].
 (5)
On average, the metaheuristic $MS\left[{X}^{0},\pi \left(n\right)\right]$ proposed in this work obtains solutions with a standard deviation of the thermal load of the set of casks equal to ${\sigma}_{A2}\left(Q\right)=0.1658$, from the solutions generated by $A1\left[\pi \left(n\right)\right]$ and the rule ${\mathsf{{\rm P}}}^{LS}.$ The range of values for ${\sigma}_{A2}\left(Q\right)$ is [0.0001, 0.5464].
 (6)
On average, the standard deviation
$\sigma \left(Q\right)$ is reduced approximately 20 times by applying the metaheuristic
$MS\left[{X}^{0},\pi \left(n\right)\right]$ versus procedure
$DP\left[\pi \left(n\right)\right]$ proposed in [
28].
To illustrate the reduction in the dispersion of the thermal load in the set of casks,
Figure 5 shows the detailed loads of the containers MPC32 number n.1 (type
$C{R}_{1}$), number n.3 (type
$C{R}_{2}$), and number n.22 (type
$C{R}_{3}$) from solution #10 provided by metaheuristic
$MS\left[{X}^{0},\pi \left(n\right)\right]$.
Figure 6 and
Figure 7 show graphically the thermal loads corresponding to the solutions provided by procedure
$DP\left[\pi \left(n\right)\right]$ proposed in [
28] (see
Figure 6) versus metaheuristic
$MS\left[{X}^{0},\pi \left(n\right)\right]$ proposed in this work (see
Figure 7) for each region (permissive and restrictive) and for each of the 37 casks. Note the significant differences that exist between the thermal loads of the 37 used MPC32 in both figures, despite the fact that the containers present the same thermal limitation characteristics number by number (1 to 37).
In addition,
Appendix B contains the detailed configurations of the 37 containers corresponding to solution #10 provided by metaheuristic
$MS\left[{X}^{0},\pi \left(n\right)\right]$.
5. Conclusions
A hybrid multistart procedure assisted by mixed integer linear programming and local search optimization algorithms, that we have called here metaheuristic $MS\left[{X}^{0},\pi \left(n\right)\right]$, has proven to be competitive in solving the spent fuel cask loading problem with minimal storage cost and a minimum standard deviation of thermal load. This is confirmed through the experiments carried out with the database of Ascó NPP. It allows generating instances with industrial dimensions (e.g., 1200 fuel assemblies and from 1 to 30 classes of regionalized casks, which translates into a number of decay heat virtual regions between 2 and 60).
The method proposed here, $MS\left[{X}^{0},\pi \left(n\right)\right]$, to solve the singlestage cask loading of spent nuclear fuel is computationally competitive in its three phases: MILP1 mathematical program, deterministic algorithm $A1\left[\pi \left(n\right)\right]$, and local search heuristic algorithm $A2\left[\pi \left(n\right)\right]$.
(i) The MILP1 model is used to minimize the cost of casks required to host the nuclear fuel; it offers, as a solution, an optimal assignment of fuel assemblies to virtual thermal regions, in less than 0.5 CPU seconds, using instances with 1200 fuel assemblies, 6 types of regions, and 4 classes of casks. (ii) Algorithm
$A1\left[\pi \left(n\right)\right]$, which starts from an MILP1 solution, can assign the SFAs to the real regions of the casks in less than 0.25 s for the tested instances. (iii) The local search algorithm
$A2\left[\pi \left(n\right)\right],$ based on 1000 initial solutions generated by
$A1\left[\pi \left(n\right)\right]$ by slight mutations of the
$\pi \left(n\right)$ sequences, is capable of reducing the initial values of the standard deviation
$\sigma \left(Q\right)$ 20 times compared to the solutions provided by
$\mathrm{procedure}DP[\pi \left(n\right)]\mathrm{proposed}\mathrm{in}$ [
28], in an average CPU time equal to 4.24 min.
In other words, metaheuristic $MS\left[{X}^{0},\pi \left(n\right)\right]$ (made up MILP1 plus $A1\left[\pi \left(n\right)\right]$ plus $A2\left[\pi \left(n\right)\right]$) is capable of obtaining, on average, a solution with a Pearson’s coefficient of variation lower than 0.75% in less than 260s CPU (1000 iterations). In the slowest approximation, $MS\left[{X}^{0},\pi \left(n\right)\right]$ obtains a solution with a Pearson’s coefficient of variation lower than 2.4%, starting from around 15.5% in little more than 12 min CPU (1000 iterations).
Future working lines taking advantage of these results include the following: (1) the formulation and exploitation of other models based on MILP for the regionalized cask loading according to several optimization criteria, and (2) the extension of the above models and procedures to the multistage load case.