Exemple #1
0
        int ChooseMateIndex(int gen)
        {
            int   index        = 0;
            float mateNumber   = (float)MateSelectorRnd.NextDouble();
            float totalFitness = GetTotalFitness();

            while (mateNumber > 0)
            {
                mateNumber -= Generations[gen - 1][index].Fitness / totalFitness;
                index++;
            }
            return(--index);
        }
Exemple #2
0
        NetworkGenome ChooseMate()
        {
            int   index        = 0;
            float mateNumber   = (float)MateSelectorRnd.NextDouble();
            float totalFitness = GetTotalFitness();

            do
            {
                mateNumber -= Generations[NbGeneration - 1][index].Fitness / totalFitness;
                index++;
            } while (mateNumber > 0);
            return(Generations[NbGeneration - 1][--index]);
        }
Exemple #3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="gen"></param>
        /// <param name="indexPartner"></param>
        /// <returns></returns>
        int ChooseMateIndex(int gen, int indexPartner)
        {
            int   index        = 0;
            float totalFitness = GetTotalFitness();
            float mateNumber   = 0;

            do
            {
                index      = 0;
                mateNumber = (float)MateSelectorRnd.NextDouble();

                while (mateNumber > 0)
                {
                    mateNumber -= (Generations[gen - 1][index].Fitness) / totalFitness;
                    index++;
                }

                index--;
            }while (index == indexPartner);
            return(index);
        }