protected virtual void Select() { Parents.Clear(); var competition = new List <IChromosome <TVertex, TEdge> >(); while (Population.Count > 0) { competition.Clear(); var competitionSize = Random.Next(2, 4); for (var i = 0; i < competitionSize && Population.Count > 0; i++) { competition.Add(Population.First.Value); Population.RemoveFirst(); } competition.Sort(); Parents.AddLast(competition.First()); } }