Пример #1
0
        /// <summary>
        /// Fitness Function
        /// </summary>
        /// <returns>Between 0 and 1 with 1 being being most fit</returns>
        private double CalculateFitness(Chromosome chromosome)
        {
            int[] arr = new int[25];
            int   i   = 0;

            foreach (Gene gene in chromosome)
            {
                arr[i] = (int)gene.ObjectValue;
                i++;
            }

            double fitnessValue = -1;

            if (chromosome != null)
            {
                int fitness = ClickOMania.Game(arr, gameBoard.GetBoardAsArray());

                double adjustedFitness = (50 - fitness);        // fitness is how many squares are empty, not how many are left
                adjustedFitness = adjustedFitness * (1F / 50F); // fitness needs to be between 0 and one, so multiply by min/max

                fitnessValue = adjustedFitness;
            }
            else
            {
                //chromosome is null
                throw new ArgumentNullException("chromosome", "The specified Chromosome is null.");
            }

            return(fitnessValue);
        }