## 4 Methodology
Therefore, the candidate position \(\vec{y}_{n}(t)\) is determined by 'balancing' (crossover operation) the components of the \(n\)-th current position \(\vec{x}_{n}(t)\) and its immediately preceding position \(\vec{x}_{n}(t-1)\), such as

\[\vec{y}_{n}(t)=\vec{m}\odot\vec{x}_{n}(t-1)+(1-\vec{m})\odot\vec{x}_{n}(t), \tag{11}\]

where \(\vec{m}\in\mathbb{Z}_{2}^{D}\) is the crossover mask vector calculated such as \(\vec{m}=H(p_{\text{CR}}-\vec{\tau})\) by employing \(H:\mathbb{R}^{D}\rightarrow\mathbb{Z}_{2}^{D}\) as the element-wise Heaviside step function with \(H(0)=1\), and \(\vec{\tau}\in\mathbb{R}^{D}\) is a vector of i.i.d. uniformly random variables in \([0,1]\), \(\vec{\tau}\
i r_{i}\sim\mathcal{U}(0,1)\). \(p_{\text{CR}}\) is the crossover probability that depends of the constant \(\text{CR}\in[0,1]\) and indicates if an element mutates. Its formula varies according to the crossover type [57], i.e., _Binomial crossover_ or _Exponential crossover_. It is worth mentioning that **DC** has shown poor performance when it is utilised apart from **DM**. For that reason, we disregarded this perturbator from the selected ones in our implementation. Notwithstanding, and for comparison purposes, we employed binomial variant of this heuristic when implementing the basic version of DE. **Particle Swarm Dynamic (PS):** The candidate position \(\vec{y}_{n}(t)\) for the \(n\)-th agent is rendered via the swarm dynamic operation using its current position \(\vec{x}_{n}(t)\) and velocity \(\vec{v}_{n}(t)\), such as

\[\vec{y}_{n}=\vec{x}_{n}(t)+\vec{v}_{n}(t). \tag{12}\]

This velocity can be determined through different approaches from the literature. The most common and simplest ones, widely implemented in several practical problems, are the _inertial_ and _constrained_ approaches, which follow the expression

\[\vec{v}_{n}(t)=\alpha_{0}\vec{v}_{n}(t-1)+\alpha_{1}\phi_{1}\vec{r}_{1}\odot (\vec{x}_{n,*}(t)-\vec{x}_{n}(t))+\alpha_{2}\phi_{2}\vec{r}_{2}\odot(\vec{x} _{*}(t)-\vec{x}_{n}(t)). \tag{13}\]

In this formula, \(\alpha_{i}\in[0,1]\) are velocity scale coefficients, \(\forall\,i\in\{0,1,2\}\), \(\phi_{1},\phi_{2}\in[0,4]\), are known as the self and swarm confidence coefficients, respectively, and \(\vec{r}_{j}\in\mathbb{R}^{D}\) are i.i.d. random vectors with \(\mathcal{U}(0,1)\), \(\forall\,j\in\{1,2\}\)[58]. Now, depending of the \(\alpha_{i}\) values set, the velocity is determined using whether the _inertial_ or _constrained_ approach, as detail below. * _Inertial approach_ employs \(\alpha_{0}\in[0,1]\), \(\alpha_{2}=\alpha_{3}=1\). In this case, \(\alpha_{0}\) is called inertial weight and can be used as a fixed value, a time-dependent function, or a random number [59; 60]. * _Constrained approach_ utilises \(\alpha_{0}=\alpha_{1}=\alpha_{2}=\chi\), since \(\chi\) is known as the constriction factor determined by \(\chi=2\kappa H(\phi-4)/(\phi-2-\sqrt{\phi(\phi-4)})+\sqrt{\kappa}(1-H(\phi-4))\), since \(\phi=\phi_{1}+\phi_{2}\) and \(\kappa\in[0,1]\)[39; 59]. Moreover, \(\vec{v}_{n}(t-1)\) corresponds to the velocity of the \(n\)-th agent, whilst \(\vec{x}_{n,*}(t)\) and \(\vec{x}_{*}(t)\) are the best position found by each individual and by the entire population, respectively. The main trade-off of this heuristic for its mathematical simplicity is the requirement of memory to preserve the previous velocity \(\vec{v}_{n}(t-1)\) and the particular best solution \(\vec{x}_{n,*}(t)\) for each agent \(n\in\{1,\ldots,N\}\). **Firefly Dynamic (FD):** The candidate solution \(\vec{y}_{n}(t)\) obtained via the firefly dynamic operator, which compares the current agent position \(\vec{x}_{n}(t)\) with that of the other agents, such as

\[\vec{y}_{n}=\vec{x}_{n}(t)+\alpha_{0}\vec{r}+\alpha_{1}\sum_{k=1}^{N}H(-(I_{k }-I_{n}))(\vec{x}_{k}(t)-\vec{x}_{n}(t))e^{-\alpha_{2}||\vec{x}_{k}(t)-\vec{x} _{n}(t)||_{2}^{2}},\] (A9)

where \(\alpha_{0},\alpha_{1}\in[0,1]\) and \(\alpha_{2}\in[0,1000]\) are constant factors, \(\vec{r}\) is a vector of i.i.d.