## 3 Proposed swarm intelligence approaches
### Enhanced firefly algorithm  
In the original FA, the exploitation and exploration balance mostly depends on the value of parameter \(\alpha\), which is in most studies dynamically adjusted during one run of the algorithm according to the following equation [49; 79; 80; 81]:  
\[\alpha(t)=(1-(1-((10^{-4}/9)^{1/t_{max}})))*\alpha(t-1), \tag{21}\]  
where \(t_{max}\) denotes the maximum number of iterations in one run. It means that at the beginning of a run, the value of \(\alpha\) is greater (higher exploration power), and as the search progresses during iterations, the value of \(\alpha\) is decreased (and thus, the exploration power decreases in favor of exploitation). Despite the fact that the original FA exhibits relatively stable and efficient exploitation, according to the results of the performed simulations on standard unconstrained benchmarks, we concluded that the exploitation process of the original FA could be further enhanced, as well as the intensification-diversification trade-off by incorporating an additional procedure in the original FA algorithm. Moreover, the original FA approach in some runs shows the behavior of premature convergence because the whole population converges towards the current best solutions. For this reason, we enhanced the exploration of the original FA by incorporating a procedure that introduced randomness in the population. By incorporating two procedures: one that enhances the exploitation and one that improves exploration, we created the exploitation and exploration enhanced FA (\(E^{3}\)-FA). The first procedure, the one that enhances the exploitation power of the original FA, introduces a new randomization parameter in the algorithm \(p\), which determines whether the position of a solution is being updated by Equation (20) or will be distributed around the current best solution by utilizing the normal distribution:  
\[x_{i}^{t+1}=x_{*,j}^{t}+N(x_{*,j}^{t},\sigma_{t}^{2}) \tag{22}\]  
where \(x_{i}^{t+1}\) is the new solution; \(x_{*,j}^{t}\) 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 iterations. The distribution around the current best solution is calculated as follows:  
\[N(x_{i}^{t};x_{*,j}^{t},\sigma_{t}^{2})=\frac{1}{\sigma\sqrt{2\pi}}e^{-\left( x_{i}^{t}-x_{*,j}^{t}\right)^{2}}\Big{/}2\sigma^{2} \tag{23}\]  
By incorporating Equation (23), 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{24}\]  
where \(t\) is the current iteration, \(\sigma_{0}\) indicates the initial step size, and \(t_{max}\) is the maximum iteration. The second procedure (one that enhances exploration) operates in a way that at the end of each iteration, the solutions are sorted according to their fitness value, and the last 20% of worst solutions are replaced by a new random solution utilizing the initialization formula (Equation (16)). In this way, if an algorithm converges to the wrong part of the search space, new, random solutions are generated, and the trap of being stuck in suboptimal regions is avoided. The pseudocode of the proposed \(E^{3}\)-FA is given in Algorithm 2.