## 2 Materials and Methods
### Bio-Inspired Metaheuristic Optimization Method
Figure 1: Hunting behavior of the river perch; (**a**) creation a population by the uniform distribution law on a feasible solution set, (**b**) separation of the whole population into schools, (**c**) realization of the perch boiler in each school. In the end of the migration of all schools, the absolute leader is put into the _Pool_ set. Then, the division of the entire population into schools begins again. Therefore, another new global iteration starts until it reaches a given number. At the final step, leaders in the _Pool_ set (identified at each global iteration of the algorithm) interact with each other. After a given number of times in the _Pool_ set, three perches are chosen, and a path-relinking operation [26] is realized. As a result, this set is replenished by one more solution. After the end of the path-relinking operation among the _Pool_ set elements, the best answer is found, which is considered to be an approximate solution of the optimization problem. The proposed method corresponds to hybrid algorithms because it contains ideas described in Shuffled Frog-Leaping Optimization (division into schools) [28], Cuckoo Search (Levy flights) [29], Self-Organizing Migrating Algorithm (movement to the leader) [23] and the path-relinking algorithm [26] (searching in the _Pool_ set). Below is a detailed description of the algorithm. **Step 1. ** Set the parameters of the method:  
* Controlling parameter \(NStep\), which specifies number of steps before the end of the movement;
* Number of schools in the population, \(M\);
* Number of perches in a school, \(s\);
* Number of perches in the population, \(NP=s\cdot M\);
* Stop parameter \(Iter_{\max}\), which specifies the maximum number of iterations;
* Levy distribution parameter \(\lambda\);
* Step size \(\alpha\);
* Maximum number of path-relinking operations, \(PR_{\max}\);
* Number of steps in the path-relinking operation, \(\Delta_{pr}\). **Step 2. ** Creation of the initial perch population. Step 2.1. Create population \(I=\left\{x^{j}=(x_{1}^{j},x_{2}^{j},\ldots,x_{n}^{j})^{T},j=1,2,\ldots,NP \right\}\subset D\) of \(NP\) solutions (perches) with randomly generated coordinates \(x_{i}\) from the segment \([a_{i},b_{i}]\) using a uniform distribution:  
\[x_{i}^{j}=a_{i}+rand_{i}[0,\ 1]\cdot(b_{i}-a_{i}),i=1,\ldots,n;\ j=1,\ldots,NP\]  
where \(rand_{i}[0,\ 1]\) is the uniform distribution law on the segment \([0;1]\). Step 2.2. For each solution (perch) in the population, calculate the value of the objective function. Set the value: \(iter=0\) (global iteration count). **Step 3. ** Separation of the whole population into schools. Step 3.1. Arrange the solutions in the population in ascending order of objective function values. Step 3.2. Make \(M\)-many schools of \(s\) perches each: The best solution (with the smallest value of the objective function) is put into the first school, the next is put into the second, etc. The \(M\)-th is put into the \(M\)-th school, and the \(M+1\)-th is put into the first school, etc. As the result, there are \(M\)-many schools of \(s\) perches each, so \(NP=M\cdot s\). The first perch placed in a school is its leader \(x^{loc,m},\ m=1,\ldots,M\). The leader of the first school is also the leader of the whole population (the global leader): \(x^{loc,1}=x^{glob}\). **Step 4. ** Realization of the perch boiler in each school. Step 4.1. For each school \(m=1,\ldots,M\), do the following. Move each perch to the school's leader near its border:  
\[x^{j,m,k}=x^{j,m}+k\frac{\left(x^{loc,m}-x^{j,m}\right)}{Nstep}\,\ k=0,1, \ldots,[\sigma\cdot Nstep];\ j=1,\ldots,s;\]where \(x^{j,m}\) is the initial position of perch \(j\) in school \(m\); \(x^{j,m,k}\) is a position of this perch during movement; \(x^{loc,m}\) is a position of the school leader numbered \(m\); \([\cdot]\) is the integer part of a number; and boiler parameter \(\sigma\in[0,1;0,5]\) is generated via the uniform distribution law at each iteration for each school independently.