コード例 #1
0
        private void RankPopulation()
        {
            m_totalFitness = 0;
            for (int i = 0; i < m_populationSize; i++)
            {
                Genome g = ((Genome)m_thisGeneration[i]);
                g.Fitness       = FitnessFunction(g.Genes());
                m_totalFitness += g.Fitness;
                ///
                ///
            }
            m_thisGeneration.Sort(new GenomeComparer());

            int fitness = 0;

            m_fitnessTable.Clear();

            if (ellit != null && m_elitism && ((Genome)m_thisGeneration[m_populationSize - 1]).Fitness < ellit.Fitness)
            {
                m_thisGeneration[m_populationSize - 1] = ellit;
            }

            for (int i = 0; i < m_populationSize; i++)
            {
                fitness += ((Genome)m_thisGeneration[i]).Fitness;
                m_fitnessTable.Add(fitness);
            }
        }
コード例 #2
0
        /// <summary>
        /// Rank population and sort in order of fitness.
        /// </summary>
        private void RankPopulation()
        {
            m_totalFitness = 0;
            for (int i = 0; i < m_populationSize; i++)
            {
                Genome g = ((Genome)m_thisGeneration[i]);
                g.Fitness       = FitnessFunction(g.Genes());
                m_totalFitness += g.Fitness;
            }
            m_thisGeneration.Sort(new GenomeComparer());

            //  now sorted in order of fitness.
            double fitness = 0.0;

            m_fitnessTable.Clear();
            for (int i = 0; i < m_populationSize; i++)
            {
                fitness += ((Genome)m_thisGeneration[i]).Fitness;
                m_fitnessTable.Add((double)fitness);
            }
        }