/// <summary> /// Adjust each species score. /// </summary> public void AdjustSpeciesScore() { foreach (ISpecies s in Population.Species) { // loop over all genomes and adjust scores as needed foreach (IGenome member in s.Members) { double score = member.Score; // apply a youth bonus if (s.Age < Population.YoungBonusAgeThreshold) { score = Comparator.ApplyBonus(score, Population.YoungScoreBonus); } // apply an old age penalty if (s.Age > Population.OldAgeThreshold) { score = Comparator.ApplyPenalty(score, Population.OldAgePenalty); } double adjustedScore = score / s.Members.Count; member.AdjustedScore = adjustedScore; } } }