public void Epoch() { Debug.Log("Finished generation " + nGeneration + " with a total fitness of " + GetFitness()); PopulationHistory.AddIndividuals(Individuals); nGeneration++; DestroyGameObjects(); Individuals = Individuals.OrderByDescending(o => o.Fitness).ToList(); List <Individual> newIndividuals = new List <Individual>(); newIndividuals.AddRange(CloneElite(ConfigManager.config.geneticAlgorithm.nElite)); newIndividuals.AddRange(ReproductionHelper.Reproduce(Individuals, ConfigManager.config.geneticAlgorithm.nIndividuals - ConfigManager.config.geneticAlgorithm.nElite, GetFitness())); MutationHelper.Mutate(newIndividuals.GetRange(ConfigManager.config.geneticAlgorithm.nElite, newIndividuals.Count - ConfigManager.config.geneticAlgorithm.nElite)); for (int i = 0; i < newIndividuals.Count; i++) { newIndividuals[i].Index = i; } Individuals = new List <Individual>(newIndividuals); CreateGameObjects(); }