/// <summary>
        /// Teaches the network.
        /// </summary>
        /// <param name="network">The network.</param>
        public void TeachNetwork(TeachableNetwork network)
        {
            int era = 0;
            double errorForWholeEra = 0;
            int currentIterationCount = 0;

            do
            {
                era++;
                errorForWholeEra = 0;
                TrainingCollection.Values.Shuffle();
                foreach (var trainingSet in TrainingCollection.Values)
                {
                    currentIterationCount++;
                    network.LearnSomething(trainingSet.Input, trainingSet.Response);
                }

                TrainingCollection.Values.Shuffle();
                errorForWholeEra = GiveErrorForWholeEra(network);
            }
            while(!Stop(errorForWholeEra, era, currentIterationCount));
        }