Beispiel #1
0
        /// <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++;
        }