AForge.Genetic.Population.FindBestChromosome C# (CSharp) Метод

FindBestChromosome() приватный Метод

private FindBestChromosome ( ) : void
Результат void
        private void FindBestChromosome( )
        {
            bestChromosome = population[0];
            fitnessMax = bestChromosome.Fitness;
            fitnessSum = fitnessMax;

            for ( int i = 1; i < size; i++ )
            {
                double fitness = population[i].Fitness;

                // accumulate summary value
                fitnessSum += fitness;

                // check for max
                if ( fitness > fitnessMax )
                {
                    fitnessMax = fitness;
                    bestChromosome = population[i];
                }
            }
            fitnessAvg = fitnessSum / size;
        }
    }

Usage Example

Пример #1
0
#pragma warning disable CS0436 // Type conflicts with imported type
        /// <summary>
        /// Perform migration between two populations.
        /// </summary>
        ///
        /// <param name="anotherPopulation">Population to do migration with.</param>
        /// <param name="numberOfMigrants">Number of chromosomes from each population to migrate.</param>
        /// <param name="migrantsSelector">Selection algorithm used to select chromosomes to migrate.</param>
        ///
        /// <remarks><para>The method performs migration between two populations - current and the
        /// <paramref name="anotherPopulation">specified one</paramref>. During migration
        /// <paramref name="numberOfMigrants">specified number</paramref> of chromosomes is choosen from
        /// each population using <paramref name="migrantsSelector">specified selection algorithms</paramref>
        /// and put into another population replacing worst members there.</para></remarks>
        ///
        public void Migrate(Population anotherPopulation, int numberOfMigrants, ISelectionMethod migrantsSelector)
#pragma warning restore CS0436 // Type conflicts with imported type
        {
            int currentSize = this.size;
            int anotherSize = anotherPopulation.Size;

            // create copy of current population
            List <IChromosome> currentCopy = new List <IChromosome>( );

            for (int i = 0; i < currentSize; i++)
            {
                currentCopy.Add(population[i].Clone( ));
            }

            // create copy of another population
            List <IChromosome> anotherCopy = new List <IChromosome>( );

            for (int i = 0; i < anotherSize; i++)
            {
                anotherCopy.Add(anotherPopulation.population[i].Clone( ));
            }

            // apply selection to both populations' copies - select members to migrate
            migrantsSelector.ApplySelection(currentCopy, numberOfMigrants);
            migrantsSelector.ApplySelection(anotherCopy, numberOfMigrants);

            // sort original populations, so the best chromosomes are in the beginning
            population.Sort( );
            anotherPopulation.population.Sort( );

            // remove worst chromosomes from both populations to free space for new members
            population.RemoveRange(currentSize - numberOfMigrants, numberOfMigrants);
            anotherPopulation.population.RemoveRange(anotherSize - numberOfMigrants, numberOfMigrants);

            // put migrants to corresponding populations
            population.AddRange(anotherCopy);
            anotherPopulation.population.AddRange(currentCopy);

            // find best chromosomes in each population
            FindBestChromosome( );
            anotherPopulation.FindBestChromosome( );
        }
All Usage Examples Of AForge.Genetic.Population::FindBestChromosome