Esempio n. 1
0
        // List<chromosome> -> One Generation
        public static List <Generation> ProducerGenerations(GeneticCreater geneticCreater)
        {
            List <Generation> generations = new List <Generation>(geneticCreater.numberOfGeneration);

            for (int i = 0; i < geneticCreater.numberOfGeneration; i++)
            {
                TurningWheelRoulette(geneticCreater);
                CrossingOperation(geneticCreater);
                // Last generation mustn't  mutation operation.
                if (i != (geneticCreater.numberOfGeneration - 1))
                {
                    MutationOperation(geneticCreater);
                }
                geneticCreater.NewGenerationCalculater();
                AddNewGeneration(generations, geneticCreater, i);
                geneticCreater.chromosomesWriter(true);
            }
            geneticCreater.chromosomesWriter(true);
            return(generations);
        }
Esempio n. 2
0
        /*
         * Random values are generated as much as the population size. Chromosomes are matched according to these values.
         */
        private static void TurningWheelRoulette(GeneticCreater geneticCreater)
        {
            if (GeneticCreater.writeActive)
            {
                Console.WriteLine("\n***********Turning Wheel Roulette***********\n");
            }
            List <double> rndDoubles = GetRandomDoubles(geneticCreater.popopulationSize);
            List <int>    matchList  = GetMatchList(geneticCreater.chromosomes, rndDoubles);

            geneticCreater.chromosomes = chromosomesMatch(geneticCreater.chromosomes, matchList);
            geneticCreater.chromosomesWriter(false);
        }