public Population Evolve(Population population) { population.EncodedProblems = population.GetOrderByMostProfitable(); var elitePopulation = population.EncodedProblems.Take(EliteSize).ToList(); var nonElitePopulation = population.EncodedProblems.Skip(EliteSize).Take(NonEliteSize).ToList(); var evolvedPopulation = new Population(elitePopulation); while (evolvedPopulation.CurrentPopulationSize() < PopulationSize) evolvedPopulation.EncodedProblems.Add(Mate(GetRandomItem(elitePopulation), GetRandomItem(nonElitePopulation))); Generation++; return evolvedPopulation; }
public Population Generate() { var population = new Population(); var randomGenerator = new Random(); for (var index = 0; index < PopulationSize; index++) { EncodedSolution encodedSolution; do { var randomVector = GenerateRandomVector(AmountOfDestinations, randomGenerator.Next()); encodedSolution = new EncodedSolution(ProblemDecoder, randomVector); } while (population.EncodedProblems.Any(ep => ep.IsEquivalenteTo(encodedSolution))); population.EncodedProblems.Add(encodedSolution); } return population; }