Exemple #1
0
        public Population(int n, int[] m, float elitism, float mutationRate, GA_NN_Settings.SelectionMethod selectionMethod)
        {
            MutationRate = mutationRate;
            Elitism      = elitism;

            GeneratePopulation(n, m);
            recordSolution = Individuals[0];
            nElite         = (int)(Individuals.Length * Elitism);

            tournamentGroupSize = (int)(Individuals.Length * 0.02f);

            OnSelectionEvent += () => Individuals = Individuals.OrderByDescending(x => x.Fitness).ToArray();

            switch (selectionMethod)
            {
            case GA_NN_Settings.SelectionMethod.Tournament:
            {
                SelectIndividual = SelectIndividualByTournament;

                //System.Windows.MessageBox.Show("Metoda turniejowa");
            } break;

            case GA_NN_Settings.SelectionMethod.Ranking:
            {
                SelectIndividual  = ChooseRandomIndividual;
                OnSelectionEvent += CalculateFitnessBasedOnRanking;

                //System.Windows.MessageBox.Show("Metoda Rankingowa");
            }
            break;
            }
        }
Exemple #2
0
        // Finds the fittest individual
        public Individual GetFittest()
        {
            var fittest = Individuals.OrderByDescending(i => i.Fitness).First();

            FitnessValue = fittest.Fitness;
            return(fittest);
        }
        /// <summary>
        /// Picks the given number of individuals with the best scores.
        /// </summary>
        /// <param name="WinnersCount"></param>
        /// <returns>List of genomes</returns>
        public IEnumerable <string> PickWinners(int WinnersCount)
        {
            var minScore = Individuals.Min(i => i.Score);

            return(Individuals.OrderByDescending(i =>
            {
                var randomNumber = _rng.NextDouble();
                return (1 + i.AverageScore - minScore) * randomNumber;
            }).Take(WinnersCount).Select(i => i.Genome));
        }
        public IEvolvable FindMate(IEvolvable evolvable)
        {
            // return IndividualsSortedByFitness.Take(10).MaxElement(a => evolvable.DifferenceTo(a));

            // sort by difference and then take the best out of the top 10! :D
            return(Individuals.OrderByDescending(a => evolvable.DifferenceTo(a)).Take(10).OrderByDescending(a => a.Fitness).First());

            //return IndividualsSortedByFitness.Take(3).MaxElement(a => evolvable.DifferenceTo(a));
            //return Best;
            //return IndividualsSortedByFitness.MaxElement(a => evolvable.DifferenceTo(a));
        }
Exemple #5
0
 public Individual[] OrderByFitness()
 {
     return(Individuals.OrderByDescending(x => x.Fitness).ToArray());
 }
Exemple #6
0
 public Melody BestIndividual()
 {
     return(Individuals.OrderByDescending(i => i.Fitness).FirstOrDefault());
 }
Exemple #7
0
 /**
  * Sort the individuals in this subspecies, the one with highest fitness
  * comes first.
  */
 public void SortIndividuals()
 {
     Individuals = Individuals
                   .OrderByDescending(x => ((NEATIndividual)x).AdjustedFitness)
                   .ToList();
 }
Exemple #8
0
 public Individual TheBestInPopulation()
 {
     return(Individuals.OrderByDescending(q => q.FunctionValue).FirstOrDefault());
 }
Exemple #9
0
        public Individual GetSecondFittest()
        {
            var nextFittest = Individuals.OrderByDescending(i => i.Fitness).Skip(1).First();

            return(nextFittest);
        }