/// <summary>Evaluates the current population and updates their fitness values.</summary> /// <remarks> /// Evaluates the current population and updates their fitness values. This /// method may be overridden by subclasses to customize GA behavior. /// </remarks> protected internal virtual void Evaluate() { double totalFitness = 0; _bestMeanFitness = float.MaxValue; for (int n = 0; n < _populations[_currentPopulation].Length; n++) { GAIndividual i = _populations[_currentPopulation][n]; EvaluateIndividual(i); totalFitness += i.GetFitness(); if (i.GetFitness() < _bestMeanFitness) { _bestMeanFitness = i.GetFitness(); _bestIndividual = n; _bestErrors = i.GetErrors(); } } _populationMeanFitness = totalFitness / _populations[_currentPopulation].Length; }
protected internal override void Evaluate() { float totalFitness = 0; _bestMeanFitness = float.MaxValue; for (int n = 0; n < _populations[_currentPopulation].Length; n++) { GAIndividual i = _populations[_currentPopulation][n]; EvaluateIndividual(i); totalFitness += i.GetFitness(); // fitness is minimized. if (i.GetFitness() < _bestMeanFitness) { _bestMeanFitness = i.GetFitness(); _bestIndividual = n; _bestSize = ((PushGPIndividual)i)._program.ProgramSize(); _bestErrors = i.GetErrors(); } } _populationMeanFitness = totalFitness / _populations[_currentPopulation].Length; }