public void RunGenerations(int iterations, List <double[]> inputTrainSet, List <double[]> outputTarget, int maxAge) { _inputTrainSet = inputTrainSet; _outputTarget = outputTarget; for (int i = 0; i < iterations; i++) { EvaluatePopulation(); SortPopulation(); //CopyRightKill(); if (PopulationList.First().Error <= 0.1) { break; } PrintBestIndividualError(i); SurvivalOfTheFitest(0.01d, PopulationSize, maxAge); Mutation(0.05d, 0.1d); CrossPopulation(); DieOfAge(maxAge); } EvaluatePopulation(); SortPopulation(); PrintBestIndividualError(iterations); Console.WriteLine("End..."); }
private void DieOfAge(int maxAge) { if (PopulationList.Exists(x => x.Age > maxAge)) { PopulationList = PopulationList.OrderBy(x => x.Age).ToList(); NeuronNet firstOld = PopulationList.First(x => x.Age > maxAge); int index = PopulationList.IndexOf(firstOld); PopulationList.RemoveRange(index, PopulationList.Count - index); PopulationList = PopulationList.OrderBy(x => x.Error).ToList(); } }
private void PrintBestIndividualError(int iteration) { double error = PopulationList.First().Error; Console.WriteLine(error + " iteration N°: " + iteration); }