## 2 Background
### Selecting a MOEA
#### 2.2.1 Hhcf  
[PERSON] et al. [6] proposed an online selection hyper-heuristic based on the Choice Function [7] named Hyper-Heuristic based on Choice Function. Their work aimed to select, one at a time, an LLH from a set \(H\) (with size \(n\)), and apply it along with \(g\) generations. To evaluate the performance of the LLHs, this approach uses a two-level-ranking system. First, each LLH is evaluated according to a group of \(m\) quality indicators, here composed by Hypervolume, RNI, UD, and AE.  
Each quality indicator evaluates every LLH assigning a performance value to each of them. Then, LLHs are _ranked_, by the quality indicator, from the best performing LLH (rank 1) to the worst (rank \(n\)). At this point, a table containing all the quality indicators values for each LLH is created, a table with size \(n*m\). This paper defines \(RNI_{rank}(h)\) as the function that returns, for a given LLH \(h\), his rank according to the RNI quality indicator. A second table (\(Freq_{rank}\)) is generated by computing how many times each LLH has the best value for each quality indicator. This is how HHCF summarizes several quality indicator preferences.  
In order to select which LLHs to execute, HHCF selects a LLH that maximizes Equation (1), which is composed of an exploitation term \(f_{1}\) and an exploration term \(f_{2}\) weighted by a parameter \(\alpha\), a fixed parameter for this algorithm:  
\[F(h_{i})=\alpha f_{1}(h_{i})+f_{2}(h_{i}) \tag{1}\]  
The exploitation term \(f_{1}\) is calculated by Equation (2). In this equation, \(n\) is the number of low-level heuristics, \(Freq_{rank}(h_{i})\) is the number of times that a given low-level heuristic \(h\) is the best one according to all quality indicators, and \(RNI_{rank}(h_{i})\) is the rank of the low-level heuristic according to the RNI quality indicator:  
\[f_{1}(h_{i})=2*(n+1)-(Freq_{rank}(h_{i})+RNI_{rank}(h_{i})) \tag{2}\]The exploration term \(f_{2}\) is the computational waiting time (\(WT\)) that a given algorithm has waited inactive. In this present paper, due to the different computational effort demanded by the problems, we normalize \(f_{2}\) using Equation (3):  
\[f_{2}(h_{i})=\frac{WT_{h_{i}}}{\sum_{j=0}^{n}WT_{h_{j}}}*100 \tag{3}\]  
Algorithm 1 illustrates how HHCF works. First, a random population of solutions is generated (Line 7) and used in the initialization process (Line 8). In this process, each \(h\in H\) executes for \(g\) generations(Line 9), the current population \(Pop\) is updated and the values of quality indicators for \(Pop\) are computed and stored (Line 10). Afterwards, the algorithm continues with the process until the stopping criteria are met, by ranking each \(h\in H\) (Line 12) and calculating Equation (2) (Line 13) and Equation (3) (Line 14). With this information, the LLH which maximizes Equation (1) is selected (Line 15) and used to generate solutions during \(g\) generations (Line 16). Finally, the new population \(Pop^{\prime}\) is created using \(Pop\) and the offspring population (Line 17), and all the quality indicators are recalculated for \(h_{i}\) using \(Pop^{\prime}\) (Line 18).  
```
1 Input:
2 Problem;
3\(g\)--generations before evaluate an LLH;
4\(H\): set of LLHs \(\{h_{1},...,h_{i},...,h_{n}\}\);
5\(\alpha\) exploitation parameter;
6 begin
7 Generate a random population of solutions \(Pop\);
8 Initialize components using \(H\);
9 All \(h\in H\) uses \(Pop\) to generate \(Pop^{\prime}\) during \(g\) generations;
10 Compute all quality indicators for all \(h\in H\);
11 whileA stopping criterion is not reacheddo
12 Compute \(Freq_{rank}\) and \(RNI_{rank}\) for all \(h\in H\);
13 Equation (2) is computed for all \(h\in H\);
14 Equation (3) is computed for all \(h\in H\);
15 Select \(h_{i}\) according to Equation (1);
16\(h_{i}\) executes for \(g\) generations and generates \(Pop^{\prime}\);
17\(Pop\leftarrow Pop^{\prime}\) //acceptance criterion;
18 Compute all quality indicators for \(h_{i}\);
19
20 end while
21 return\(Pop\)
22
23 end while
```  
**Algorithm 1**HHCF pseudocode.