*2.4. Algorithm NSGA-II*

The NSGA-II [55] refers to evolutionary algorithms developed for solving the multicriteria optimization problem that implements the approximation of the Pareto set. It is based on three key components: fast non-dominated sorting, estimation of the solutions location density, and crowded-comparison operator. In the original algorithm, solutions are encoded as vectors of real numbers, and the objective functions are assumed to be realvalued.

#### 2.4.1. Fast Non-Dominated Sorting Approach

The basis of multi-criteria optimization is the selection of Pareto fronts [52] of different levels in the population of solutions. According to the intuitive approach, to isolate the nondominated front, it is necessary to compare each solution with any other in the population for determining a set of non-dominated solutions.

For problem (4), the solutions are patterns, and a solution *Pi* is non-dominated in a population of *N* solutions *P*1,..., *PN* if *j* ∈ 1, *N* :

$$\left(\mathbb{Cov}^+(P\_{\hat{\jmath}}) \ge \mathbb{Cov}^+(P\_{\hat{\imath}}) \text{ and } \mathbb{Cov}^-(P\_{\hat{\jmath}}) < \mathbb{Cov}^-(P\_{\hat{\jmath}})\right)$$
 
$$\text{or } \left(\mathbb{Cov}^+(P\_{\hat{\jmath}}) > \mathbb{Cov}^+(P\_{\hat{\jmath}}) \text{ and } \mathbb{Cov}^-(P\_{\hat{\jmath}}) \le \mathbb{Cov}^-(P\_{\hat{\jmath}})\right)$$

.

After defining the first front, it is necessary to exclude representatives of this front from consideration and re-define the non-dominated front. The procedure is repeated until each solution is attributed to some front.

A more computationally efficient approach assumes for each solution *Pj* to keep track of the number of solutions *nPj* that dominate *Pj*, as well as a set of solutions *SPj* dominated by *Pj*.

Thus, all decisions in the first non-dominated front will have a dominance number equal to zero. For every solution *Pj* satisfying *nPj* = 0, we visit each member *q* of its set *SPj* and decrease its dominance number *nq* by 1. Moreover, if for any member, the dominance number becomes zero, we put it in a separate list *Q*. Bypassing all the solutions of the first front, we find that the list *Q* contains solutions belonging to the second front. We repeat the procedure for these solutions similarly, looking through the dominated sets of solutions and reducing their dominance number until we identify all the fronts.
