and an output layer. The neurons in the input layer receive the data from outside and transmit the data via weighted connections to the neurons in the hidden layer, which, in turn, transmit the data to the next layer. Each layer transmits the data to the next layer. Finally, the neurons in the output layer give the results. The type of ANN, which propagates the input through all the layers and has no *feed-back* loops is called a *feed-forward* multi-layer ANN. For simplicity, throughout this paper we adopt and work with a *feed-forward* ANN. For other types of ANN, see [@BISHOP:ANN:1995][@HAYKIN:ANN:1999]. Figure \[fig:ANN\] shows an example of a *feed-forward* three-layer ANN. It contains one input layer, one hidden layer and one output layer. The input layer has $n$ ANs, the hidden layer has $m$ ANs and the output layer has $p$ ANs. The connections between the neurons are weighted as follows: $v_{ji}$ are the weights between the input layer and the hidden layer, and $w_{kj}$ are the weights between the hidden layer and the output layer, where ($i = 1, ..., n$), ($j = 1, ..., m$) and ($k = 1, ..., p$). In this example, the input layer has 