public virtual void PerformIteration() { foreach (var chromosome in Population) { chromosome.FittnessValue = FittnessFunction.Calculate(chromosome); } var selection = Selection.Select(Population); var crossover = Crossover.Perform(selection); foreach (var chromosome in crossover) { Mutation.Mutate(chromosome); } Population.Remove(Population.FirstOrDefault( x => x.FittnessValue == Population.Min(y => y.FittnessValue))); Population.Remove(Population.FirstOrDefault( x => x.FittnessValue == Population.Min(y => y.FittnessValue))); Population.AddRange(crossover); }