## 3 Materials and Methods
### Neural Network Modeling
These locations are only used when \(nl=2\);
* \(w_{h2\text{-}o}\): the weight values associated with the connections between the neurons of the second hidden layer (\(h2\)) and the neurons of the output layer (\(o\)). These locations are always used in the solution array. If the second hidden layer does not exist (\(nl=1\)), then these locations represent the weights associated with the connections between the neurons of the first hidden layer (\(h1\)) and the neurons of the output layer (\(o\));
* \(bh1\), \(bh2\), \(bo\): the biases of neurons in each layer. The locations for \(bh2\) are only used when \(nl=2\). * The MMA data set we use has three inputs (\(ni=3\)) and three outputs (\(no=3\)). Therefore, we define certain limits on the number of neurons in each layer of the neural network as follows:
* \(nl\in[nl_{min}=1\), \(nl_{max}=2]\): neural networks always have at least one hidden layer and at most two hidden layers. These limits are recommended in [44];
* \(nhl\in[hl1_{min}=7\), \(nh1_{max}=12]\): in the first hidden layer, the neural networks can have a minimum of seven and a maximum of twelve neurons. These limits are recommended in [45] as \(nh1_{min}=2\cdot ni+1\) and \(nh1_{max}=no\cdot(ni+1)\);
* \(nh2\in[nh2_{min}=2\), \(nh2_{max}=4]\): in the second hidden layer, neural networks can have a minimum of two and a maximum of four neurons. These limits are recommended in [45] as \(nh1_{min}=3\cdot nh2_{min}\) and \(nh1_{max}=3\cdot nh2_{max}\) (i.e., the number of neurons in the second hidden layer is three times smaller than the number of neurons in the first hidden layer);
* The values of weights and biases are real values in the range \([-3,3]\). Limiting the number of neurons in each layer of the neural network implies limiting the search space of the algorithms. Depending on the defined limits and the characteristics of the data set, the maximum length of the solution array is determined using the Equation (3), where the value 3 represents the locations assigned to the structural information (i.e., \(nl\), \(nh1\), \(nl2\)), \(nw_{max}\) and \(nb_{max}\) represents the maximum number of locations assigned for the weights and biases, \(ni\) in the Equation (4) represents the number of input features, and \(no\) in the Equations (4), (5) represents the number of output features specific to the data set:  
\[len=3+nw_{max}+nb_{max} \tag{3}\]  
\[nw_{max}=\left\{ \begin{array}{ll}ni\cdot nh1_{max}+nh1_{max}\cdot no,&\quad nl =1\\ ni\cdot nh1_{max}+nh1_{max}\cdot nh2_{max}+nh2_{max}\cdot no,&\quad nl=2\\ \end{array} \right. \tag{4}\]  
\[nb_{max}=\left\{ \begin{array}{ll}nh1_{max}+no,&\quad nl=1\\ nh1_{max}+nh2_{max}+no,&\quad nl=2\\ \end{array} \right. \tag{5}\]  
The limits chosen for each location of the solution array are constant throughout the simulations. The operators of the algorithms can change the value of any location in the array. However, these changes are limited by the predefined range of each location. Since the coding has a fixed-length representation, there may be unused locations for some neural network structures. For example, consider the case of MLPs with one input (\(ni=1\)), one hidden layer (\(nl=1\)), at most four neurons in the hidden layer (\(nh1_{max}=4\)), and one output (\(no=1\)). Based on these bounds, the MLPs [1-4-1] and [1-2-1] are associated with an array of the same length (Figure 3). One can see in Figure 3 that MLP [1-2-1] contains unused locations (grey colored) for some weights and biases. A particular case can occur when two solutions must be combined. Since the algorithms do not check for invalid or unused locations, the combination of two individuals can unintentionally behave as a mutation operator when the value of a used location (i.e., meaningful data) is combined with the value of an unused location (i.e., noise).