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; } }
// 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)); }
public Individual[] OrderByFitness() { return(Individuals.OrderByDescending(x => x.Fitness).ToArray()); }
public Melody BestIndividual() { return(Individuals.OrderByDescending(i => i.Fitness).FirstOrDefault()); }
/** * Sort the individuals in this subspecies, the one with highest fitness * comes first. */ public void SortIndividuals() { Individuals = Individuals .OrderByDescending(x => ((NEATIndividual)x).AdjustedFitness) .ToList(); }
public Individual TheBestInPopulation() { return(Individuals.OrderByDescending(q => q.FunctionValue).FirstOrDefault()); }
public Individual GetSecondFittest() { var nextFittest = Individuals.OrderByDescending(i => i.Fitness).Skip(1).First(); return(nextFittest); }