public double AskNeuralNetwork(double[] input)
 {
     Network.Network network = new Network.Network(_inputData[0].Length, _numberOfHiddenLayers, _networkTopology);
     network.InitializeNetwork();
     network.SetWeights(_archive[0]);
     return network.CalculateOutputForOneExample(input);
 }
 double CalculateMaeForAllExamples(Network.Network network)
 {
     //double error = _inputData.Select((t, i) => Math.Abs(_desiredOutput[i] - network.CalculateOutputForOneExample(t))).Sum();
     double error = 0.0;
     for (int i = 0; i < _desiredOutput.Length; i++)
     {
         double networkOutput = network.CalculateOutputForOneExample(_inputData[i]);
         double absError = Math.Abs(_desiredOutput[i] - networkOutput);
         if ((_desiredOutput[i] > 0 && networkOutput > 0) || (_desiredOutput[i] < 0 && networkOutput < 0))
         {
             error += absError;
         }
         else
         {
             error += 10*absError;
         }
     }
     return error / _inputData.Length;
 }