## 2 Metaphorless Optimization Algorithms
### Rao Optimization Algorithms  
The Rao optimization algorithms [17] were proposed in 2020 by [PERSON], the same author of the Java algorithm, and are composed of three different optimization methods, denoted as Rao-1, Rao-2, and Rao-3. These algorithms represent a concerted endeavor to advance the field of optimization by devising simple and efficient metaphorless methodologies. A distinctive feature of these algorithms is their deliberate avoidance of algorithm-specific control parameters. This underscores an emphasis on common parameters such as population size and the number of iterations, guided by a simplicity-driven perspective. The motivation behind these developments is based on a broader strategy to foster optimization techniques that eschew reliance on metaphors while simultaneously maintaining algorithm robustness. The three Rao algorithms share the common approach of incorporating information about the current best and worst solutions and random factors to update and direct the population towards an optimal solution, but each algorithm uses different strategies. In the context of the Rao-1 algorithm, the updated value (\(X_{p,p,i}^{new}\)) is determined by the following equation:  
\[X_{p,p,i}^{new}=X_{p,p,i}+r_{7,p,i}(X_{best,v,i}-X_{worst,v,i}), \tag{10}\]  
where \(r_{7,p,i}\) is a randomly generated number uniformly distributed over the interval \([0,1]\). The Rao-2 and Rao-3 algorithms are extended versions of Rao-1 with an additional set of terms in their update equations that introduce a second random factor and random interactions between candidates based on fitness values. This additional set of terms of the Rao-2 and Rao-3 equations is contingent upon whether the fitness value of the current candidate solution, denoted as \(f(X_{p,v,i})\), is better than the fitness value of the randomly chosen solution, \(f(X_{t,v,i})\). The main functions of Rao-2 (Equation (11)) and Rao-3 (Equation (12)) are described below:  
\[ \begin{split} X_{p,p,i}^{new}&=X_{p,v,i}+r_{8,p,i} (X_{best,v,i}-X_{worst,v,i})\\ &+\begin{cases}r_{9,v,i}\big{(}\big{|}X_{p,v,i}\big{|}-\big{|}X_{ t,v,i}\big{|}\big{)}&\text{if }f(X_{p,v,j})\text{ better than }f(X_{t,p,i})\\ r_{9,v,i}\big{(}\big{|}X_{t,v,i}\big{|}-\big{|}X_{p,v,i}\big{|}\big{)}& \text{otherwise,}\end{cases}\\ X_{p,v,i}^{new}&=X_{p,v,i}+r_{10,v,i}(X_{best,v,i}-X_{worst,v,i})\\ &+\begin{cases}r_{11,v,i}\big{(}\big{|}X_{p,v,i}\big{|}-X_{t,v,i} \big{)}&\text{if }f(X_{p,v,i})\text{ better than }f(X_{t,v,i})\\ r_{11,v,i}\big{(}\big{|}X_{t,v,i}\big{|}-X_{p,v,i}\big{)}&\text{otherwise.} \end{cases}\end{split}  \tag{11}\]  
In this context, \(r_{8,p,i}\), \(r_{9,p,i}\), \(r_{10,v,i}\) and \(r_{11,v,i}\) are random variables uniformly distributed in a range from 0 to 1, and \(X_{t,p,i}\) denotes a randomly selected candidate solution from the population (i.e., \(t\in[1,popSize]\)) that is distinct from \(X_{p,v,i}\) (i.e., \(t\
eq p\)). A unified description of the pseudocode for the Rao-1, Rao-2, and Rao-3 algorithms is presented in Algorithm 6. ```
1:/* Initialization*/
2: Initialize \(numVar\), \(popSize\) and \(maxIter\);
3:X \(\leftarrow\) Generate_initial_population();
4: Evaluate fitness value \(f(X)\);
5:\(i\gets 1\);
6:/* Main loop*/
7:while\(i\leq maxIter\)do
8: Determine \(X_{best,v,i}\) and \(X_{worst,v,i}\);
9:for\(p\gets 1\), \(popSize\)do
10:ifalgorithm = 'Rao-2' or 'Rao-3' then
11:\(t\leftarrow\) Random candidate solution different than \(p\);
12:endif
13:for\(v\gets 1\), \(numVar\)do
14:ifalgorithm = 'Rao-1' then
15: Update population \(X_{p,v,i}^{new}\) by Equation (10);
16:elseifalgorithm = 'Rao-2' then
17: Update population \(X_{p,v,i}^{new}\) by Equation (11);
18:elseifalgorithm = 'Rao-3' then
19: Update population \(X_{p,v,i}^{new}\) by Equation (12);
20:endif
21: Check_boundary_integrity(\(X_{p,v,i}^{new}\));
22:endfor
23: Evaluate fitness value \(f(X_{p,v,i}^{new})\);
24:Greedy_selection(\(X_{p,v,i}\), \(X_{p,v,i}^{new}\));
25:endfor
26:\(i\gets i+1\);
27:endwhile
28:Output the best solution found and terminate.