// 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); }
/* * 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); }