public SolutionRepresentation Solve() { var bestSolution = new SolutionRepresentation(); var listOfSolutions = GenerateParents(); int i = 0; while (i < MAX_ITERATIONS) { for (int j = 0; j < MAX_PARENTS; j++) { var currentParents = listOfSolutions.Shuffle(_random).Take(2).ToList(); var newIndividual = Crossover(currentParents.First(), currentParents.Last()); listOfSolutions.Add(newIndividual); if (newIndividual.Sum < bestSolution.Sum) { bestSolution.Cities = newIndividual.Cities; bestSolution.Sum = newIndividual.Sum; } } listOfSolutions = listOfSolutions.Shuffle(_random).ToList(); i++; } return(bestSolution); }
private List <SolutionRepresentation> GenerateParents() { var parents = new List <SolutionRepresentation>(); for (int i = 0; i < MAX_PARENTS; i++) { var parent = new SolutionRepresentation(); var cities = Enumerable.Range(0, 15).ToArray(); cities = cities.Shuffle(_random).ToArray <int>(); parent.Cities = cities; parent.Sum = GetTotalDistance(cities); parents.Add(parent); } return(parents); }