## 2 Background
### Selecting a MOEA
#### 2.2.3 Moaghh  
Multi-Objective Agent-Based Hyper-Heuristic [28; 29] is a hyper-heuristic designed as a multi-agent system. According to [PERSON] [68], an agent is \"a computer system that is situated in some environment, and is capable of autonomous action in this environment in order to meet its objectives\".  
This hyper-heuristic is designed to consider LLHs and quality indicators as agents in one election, which means that LLHs are candidates to be voted by quality indicator agents (the voters). The election happens each \(g\) generations, and the outcome tells us which LLH is performing better. Then, the election winners generate more offspring after the election.  
MOABHH differs from HHCF, HHRL, and HHLA regarding how the current population is processed by the LLHs. In this algorithm, all LLH executes in parallel acting on a share of the main population and generating offspring in the same generation. This is performed by splitting the main population into subpopulations according to election outcomes where the best LLH receives a bigger subpopulation and can generate more offspring. In the beginning, this main population is equally split into subpopulations, each one processed by a different _LLH agent_, which will receive a sub-population, generate new offspring solutions, and find the surviving solutions.  
When it is the election time, all quality indicators' agents (voters) evaluate each LLH agent (candidate), rank them, and send their rank to the _HH agent_, which is responsible for taking all votes and processing them according to an election method in order to generate an election outcome. In our approach, we use the Copeland [69] voting method, in which candidates are ordered by the number of pairwise victories, minus the number of pairwise defeats. The election outcome is used by the _HH agent_ to increase the participation in generating offspring to the election winners and decreasing it to the losers in the next cycles.  
Algorithm 4 details MOABHH steps. First, all agents, components, and global variables are initialized (line 3). A random population of solutions is generated (line 4). The execution continues creating a _Participation_ array that is responsible for determining how many solutions each LLH can generate per generation. At this time, this array is created uniformly, assigning the same participation in generating offspring at the begging of the search.  
The algorithm continues by splitting the population into subpopulations according to the _Participation_ array. Then, all LLH generates offspring and updates the main population in parallel in a synchronized task.  
Each \(g\) generations the voting process then starts, and the _Voter_ agents evaluate the solutions produced by LLHs, rank them according to their preferences (line 18), and send them to the _HH_ agent. After that, the _HH_ agent calculates the social ranking according to the Copeland voting method (line 19) and assigns a bigger participation in the population for the election winner and a lower one for election losers (line 20).  
```
1 Input:
2 Problem;
3\(g\)--generations before evaluate an LLH;
4\(H\): set of LLHs \(\{h_{1},...,h_{i},...,h_{n}\}\);
5 begin
6 Initialize agents and components using \(H\);
7 Generate a random population of solutions \(Pop\);
8\(Participation\leftarrow\) Uniformly share the number of solutions to generate;
9 whileA stopping criterion is not reacheddo
10\(gen\gets 0\);
11 while\(gen<g\)do
12 Split \(Pop\) into subpopulations according to the \(Participation\);
13 LLH Agents execute for one generation;
14 LLH Agents update the main population;
15\(gen\gets gen+1\);
16
17 end while
18 ifIt is election timethen
19 Voter agents evaluate LLH agents outcomes and vote;
20 HH agent performs the voting method;
21 HH agent uses the election outcome to update the \(Participation\);
22
23 end if
24
25 end while
26
27 return\(Pop\)
28
29 end while
```  
**Algorithm 4**MOABHH pseudocode.