## Materials and Methods
### ANN Training Using Particle Swarm Optimization (PSO)  
In the training of ANNs using PSO, the training process is handled by an optimization approach. The objective of the optimization is to minimize prediction error by searching the optimum solution (variables) of the weights and biases of the ANNs. PSO was inspired by the collective behaviours of bird flocking and fish schooling. Each PSO particle represents the potential solution of a given optimization problem, and it consists of unique velocity and position components in search space. Suppose that the population size of PSO swarm and the dimensional size (i.e., number of variables to be optimized) of a given optimization problem are represented as N and D, respectively [29]. Denote that \(V_{i}\ =\ \left[V_{i,1},\ldots,V_{i,d},\ldots,V_{i,D}\right]\) and \(X_{i}\ =\ \left[X_{i,1},\ldots,X_{i,d},\ldots,X_{i,D}\right]\) represents the velocity and position of each \(i\)-th particle in the search space, respectively, where \(=1,\ldots,N\) and \(d\ =\ 1,\ldots,D\). The \(i\)-th PSO particle's best searching performance achieved so far is represented as \(P_{best,i}\ =\ \left[P_{best,i,1},\ldots,P_{best,i,d},\ldots,P_{best,i,D}\right]\). Meanwhile, the global best position refers to the so far best performance achieved by the entire PSO swarm, and it is denoted as \(G_{best}\ =\ \left[G_{best,1},\ldots,G_{best,d},\ldots,G_{best,D}\right]\). The new position of each \(i\)-th particle in search space is then determined based on the updated velocity vector. At the \((t+1)\)-th iteration of search process, the \(d\)-th dimension of velocity and position of each \(i\)-th particle, denoted as \(V_{i,d}(t+1)\) and \(X_{i,d}(t+1)\), respectively, are updated as follows [33]:  
\[V_{i,d}(t+1)\ =\ \omega V_{i,d}(t)+c_{1}r_{1}\big{(}P_{best,i,d}-X_{i,d}(t) \big{)}+c_{2}r_{2}\big{(}G_{best,d}-X_{i,d}(t)\big{)} \tag{15}\]  
Figure 3: Flowchart of the ANN-based model building process. \[X_{i,d}(t+1)\ =\ X_{i,d}(t)+V_{i,d}(t+1) \tag{16}\]  
where \(\omega\) is an inertia weight used to balance the exploration and exploitation searches of the particle by determining how much the previous velocity of a particle is preserved; \(c_{1}\) and \(c_{2}\) are the acceleration coefficients used to control the influence of self-cognitive (i.e., \(P_{best,i}\)) and social (i.e., \(G_{best}\)) component of the particle; \(r_{1}\) and \(r_{2}\) are two random numbers generated from a uniform distribution with the range of 0 to 1, where \(r_{1},r_{2}\in[0,1]\). A few main PSO parameters drive toward the optimum solution search, namely, \(\omega\) and \(c_{1}\) and \(c_{2}\). [PERSON] [30] in 2002 developed a constriction coefficient approach to guide the selection of these parameters to guarantee the convergence solution [34]. In the [PERSON]'s version of PSO, the particle velocity in Equation (15) is expressed as:  
\[V_{i,d}(t+1)\ =\ \chi\big{(}V_{i,d}(t)+c_{1}r_{1}\big{(}P_{best,i,d}-X_{i,d}(t )\big{)}+c_{2}r_{2}\big{(}G_{best,d}-X_{i,d}(t)\big{)}\big{)} \tag{17}\]  
\[\chi\ =\ \frac{2K}{\big{|}2-\phi-\sqrt{\phi^{2}-4\phi}\big{|}} \tag{18}\]  
with \(\phi\ =\ c_{1}+c_{2}\), typically \(K\ =\ 1\) and \(c_{1}\ =\ c_{2}\ =\ 2.05\) and therefore \(\chi\ =\ 0.73\)[34]. This version of PSO is used to train the ANNs in this study. There are three main components in optimization problems, namely, the solution variables (\(X\)), the cost function (\(F(X)\)) and the constraints. The implementation of the PSO for ANNs training is basically searching for the optimum ANNs weights and biases (the solution variables) to minimize the prediction error (the cost function) subject to the boundary constraints of the weights and biases (the constraint).