Example #1
0
        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);
        }
Example #2
0
        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);
        }