/// <summary> /// Next we will generate a new population based on algorithmic logic of crossover between two random DNA sequences and adding some mutation into it. /// </summary> public void Generate() { for (int i = 0; i < population.Count; i++) { { int a = RandomProvider.RND.Next(matingPool.Count); int b = RandomProvider.RND.Next(matingPool.Count); // TODO: Avoid duplicates DNA partnerA = matingPool[a]; DNA partnerB = matingPool[b]; DNA child = (DNA)partnerA.Crossover(partnerB); child.Mutate(mutationRate); child.EvalutateFitness(); population[i] = child; } } this.generations++; }