## 3 Proposed swarm intelligence approaches
### Enhanced tree growth algorithm  
In every metaheuristics algorithm, it is essential to maintain the trade-off between the exploration and exploitation processes. The identified deficiencies of the original TGA metaheuristics refer to the insufficient exploitation power and to the inappropriate balance between exploitation and exploration. More about TGA's deficiencies can be found in [77; 78].  
In this work, we propose a modified TGA algorithm that enhances the exploitation capability of the original TGA with an additional operation in the algorithm's procedure. The proposed novel enhanced algorithm is named exploitation enhanced TGA (EE-TGA). The modification speeds up the convergence rate of the algorithm, and at the same time, the search process reaches the global optima faster.  
In the best solution group (\(N_{1}\)), the first 40% of solutions in the subpopulation are scattered around the current best solution by using a normal distribution. The solution's position is updated according to the following formula:  
\[T_{i}^{j+1}=T_{GB}^{j}+N(T_{GB}^{j},\sigma_{t}^{2}) \tag{13}\]  
where \(T_{i}^{j+1}\) is the new solution; \(T_{GB}^{j}\) denotes the current best solution; \(N(\cdot)\) is the normal distribution, where the mean is the current best solution and the variance at iteration \(t\) is \(\sigma^{2}\). The variance determines the step size, and it is decreasing over the course of the iteration.  
The distribution around the current best solution is calculated as follows:  
\[N(T_{i}^{j+1};T_{GB}^{j},\sigma_{t}^{2})=\frac{1}{\sigma\sqrt{2\pi}}e^{-\left( T_{i}^{j}-T_{GB}^{j}\right)^{2}}\Big{/}2\sigma^{2} \tag{14}\]  
Due to the implementation of the normal distribution, the new solutions are closer to the best solution, which yields increasing the possibility to find the global optimum faster.  
As mentioned above, the step size (\(\sigma\)) is decreasing as the algorithm approaches the maximum iteration and gets closer to zero, \(\sigma_{t}\to 0\). The step size updates at every iteration \(t\) according to the following equation:  
\[\sigma_{t+1}=\sigma_{0}-\sigma_{0}t/t_{max} \tag{15}\]  
where \(t\) is the current iteration, \(\sigma_{0}\) indicates the initial step size, and \(t_{max}\) is the maximum iteration.  
The pseudocode of the proposed EE-TGA optimization algorithm is shown in Algorithm 1.  
```
Initialization: Randomly generate the initial population of \(N\) trees \(x_{i}\), \(i=1,2,\ldots,n\)  Define the initial step size \(\sigma\)  Set the number of maximum iterations (\(t_{max}\))  Set the current iteration (\(t\)) to 1  Calculate the fitness of each solution  Sort the population according to the fitness value while\(t_{max}\)do for\(i=1\) to \(ceil(N_{1}*0.4)\)do  Perform local search by using Equation (13)  If the new solution has a better fitness value than the current solution, replace the current solution with the new one  Update the step size by utilizing Equation (15) endfor for\(i=ceil(N_{1}*0.4)\) to \(N_{1}\)do  Perform local search by using Equation (6)  If the new solution has a better fitness value than the current solution, replace the current solution with the new one endfor for\(i=N_{1}\) to \(N_{2}\)do  Calculate the distance between the solutions by using Equation (7) and Equation (8)  Move solutions between the two nearest solutions by using Equation (9) and Equation (10)  If the new solution has a better fitness value than the current solution, replace the current solution with the new one endfor  Remove \(N_{3}\) worst solutions, and replace with new random solutions  Create new population \(N\) by using Equation (12)  Generate \(N_{4}\) subpopulation and apply the mask operator  Evaluate the fitness of each solution  Sort the population according to the fitness value  Select \(N\) best solutions for the next iteration endwhile  Return the best solution
```  
**Algorithm 1** Pseudocode of the exploitation enhanced TGA (EE-TGA).  
In the presented pseudocode, \(t_{max}\) represents the maximum number of iterations in one algorithm's run.