Esempio n. 1
0
        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...");
        }
Esempio n. 2
0
 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();
     }
 }
Esempio n. 3
0
        private void PrintBestIndividualError(int iteration)
        {
            double error = PopulationList.First().Error;

            Console.WriteLine(error + " iteration N°: " + iteration);
        }