The use of an ANN is a two-step process, training and testing stages. In the training stage, the ANN adjusts its weights until an acceptable error level between desired and predicted outputs is obtained. The difference between desired and predicted outputs is measured by the error function, also called the performance function. A common choice for the error function is *mean square error* (MSE). There are multiple training algorithms based on various implementations of the *back-propagation* algorithm [@HAGAN:backpropagation:1994], an efficient method for computing the gradient of error functions. These algorithms compute the *net* signals and outputs of each neuron in the network every time the weights are adjusted as in (\[eq:output\]), the operation being called the *forward pass* operation. Next, in the *backward pass* operation, the errors for each neuron in the network are computed and the weights of the network are updated as a function of the errors until the stopping criterion is satisfied. In the testing stage, the trained ANN is tested over new data that was not used in the training process. The predicted output is calculated using (\[eq:output\]). One of the known problems for ANN is overfitting: the error on the training set is within the 