**3. Algorithms**

The method that we are presenting herein (ILS-MOEA/D) is a particularisation of MOEA/D that has been specifically designed to deal with the multi-objective constrained MPP proposed in the previous section. MOEA/D is an EA for multi-objective optimisation proposed in [9], where the underlying idea is to decompose a Multi-objective Optimisation Problem (MOP) into a number of scalar optimisation sub-problems and optimise them simultaneously.

MOEA/D is a population-based EA that maintains *N* candidate solutions in the population. The decomposition approach is applied to generate *N* sub-problems that are simultaneously optimised. Specifically, each individual is associated to one of the generated sub-problems (a one-to-one mapping is performed). Furthermore, it establishes some relationships between sub-problems and organises them into neighbourhoods. These neighbourhoods are defined in terms of the weight vectors used to decompose the problem. The optimisation of each sub-problem is influenced by information of its neighbouring sub-problems. The principle for organising the optimisation process in this way is that the optimal solution for two neighbouring sub-problems is expected to be similar [9]. Furthermore, the process of decomposing an MOP into *N* scalar optimisation sub-problems can be done by applying different approaches.

In this paper, our strategy relies on the Tchebycheff decomposition approach [38]. Let *λ* = {*λ*1,..., *λ<sup>N</sup>*} be a set of even spread weight vectors. In this approach, the scalar objective function associated to the *j*-th sub-problem, with *j* = 1, . . . , *N*, is defined as follows:

$$\lg^{t\varepsilon}(\mathbf{x}|\lambda^j, \mathbf{z}^\*) = \max\_{i=1}^m \{\lambda\_j^j|f\_i(\mathbf{x}) - z\_i^\*|\}\tag{10}$$

where *x* ∈ Ω is a solution to a multi-objective problem with *m* original objectives; *z*<sup>∗</sup> = (*z*<sup>∗</sup>1, ... , *<sup>z</sup>*<sup>∗</sup>*m*) is the reference point with the best solution found so far for each of the *i* = 1, ... , *m* original objectives and *λj* = (*λj*1, ... , *<sup>λ</sup>jm*). We note that MOEA/D minimises all those *N* scalar optimisation sub-problems simultaneously.

Since the MPP formulation considered in this work implies handling the feasibility constraints, the replacement of any individual from the population must satisfy certain criteria. For example, given two individuals *S*1 and *S*2:


Moreover, our novel ILS-MOEA/D includes two main improvements to speed up the achievement of high-quality solutions. First, the Similarity-based Crossover (SX) proposed in [3] is used as the only genetic operator that produces new individuals. Second, an adapted version of the ILS (Algorithm 1), which was also proposed in [3], was integrated as the intensification phase of ILS-MOEA/D. This ILS

is based on the well-known First-Improvement Hill Climbing approach (line 3). It explores the neighbourhood of a solution in a random way by accepting any movement that improves the current solution, and stopping after reaching a local optimum. The key difference of the ILS applied herein in comparison to the one proposed in [3] is that the procedure evaluates each improvement by using the Tchebycheff decomposition approach (Equation (10)) in a similar way as MOEA/D. Furthermore, the reference point *z*<sup>∗</sup> is also updated if any objective improves the current reference point In addition, for any solution, instead of using the neighbourhood structure of MOEA/D, the neighbours are generated by modifying a single course of the menu plan. As a result, the number of neighbours of any solution is *n* × (*lf c* + *lsc* + *lds* − <sup>3</sup>), where *lf c*, *lsc* and *lds* are the number of options for starters, main courses and desserts, respectively. Finally, the procedure Perturb makes use of problem-dependent information of the MPP, since it identifies the potential problems in a menu plan in order to mitigate them. However, this procedure does not guarantee that the algorithm will not stagnate in local optima solutions. Additionally, since this MPP formulation has not been solved with any exact method, there is not any certainty that the solutions found by either ILS-MOEA/D or MA are global optima. The Perturb (line 7) procedure is the same as the one applied in [3]. The above steps are repeated *Iterations* times.


The proposed ILS-MOEA/D outlined in Algorithm 2 involves similar steps as the standard MOEA/D [9]:


```
Algorithm 2: ILS-MOEA/D
```

```
Input: N, L,
                 λ
1 EP =
        ∅;
2 B = GenerateNeighbourhood(N, L,
                                         λ);
3 z∗ = InitialiseZ();
4 Population = InitialisePopulation(N,
                                           λ, z∗);
5 while StoppingCriterion is not satisfied do
6 for j ← 1 to
                    N do
 7 Offspring = Reproduce(B, j);
 8 Offspring = ILS(Offspring, 100,
                                             λj
                                               , z∗);
 9 z∗ = UpdateZ(Offspring);
10 Population = UpdateNeighbouringSolutions(Offspring);
11 EP = UpdateExternalPopulation(Offspring);
12 end
13 end
14 return EP
```
Afterwards, the main loop of the MOEA/D performs the updating phase of the algorithm by carrying out the following steps until the stopping criterion is met:

