Esempio n. 1
0
        /// <summary>
        /// Calculate individuals fitness by comparing it to our solution
        /// </summary>
        /// <param name="individual">Individual to check health from</param>
        /// <returns></returns>
        internal static int GetFitness(Individual individual)
        {
            int fitness = 0;

            //Loop through our individuals genes and compare them to our candidates
            for (int i = 0; i < individual.Size() && i < solution.Length; i++)
            {
                if (individual.GetGene(i) == solution[i])
                {
                    fitness++;
                }
            }
            return(fitness);
        }
Esempio n. 2
0
        /// <summary>
        /// Crossover individuals
        /// </summary>
        /// <param name="indiv1">Parent individual 1</param>
        /// <param name="indiv2">Parent individual 2</param>
        /// <returns>Child individual</returns>
        private static Individual Crossover(Individual indiv1, Individual indiv2)
        {
            Individual newSol = new Individual();

            // Loop through genes
            for (int i = 0; i < indiv1.Size(); i++)
            {
                // Crossover
                if (rnd.NextDouble() <= uniformRate)
                {
                    newSol.SetGene(i, indiv1.GetGene(i));
                }
                else
                {
                    newSol.SetGene(i, indiv2.GetGene(i));
                }
            }
            return(newSol);
        }