Exemplo n.º 1
0
        // Gets the distance to given city
        public double distanceTo(City city)
        {
            //int xDistance = getX() - city.getX();
            //int yDistance = getY() - city.getY();
            //double distance = Math.Sqrt((xDistance * xDistance) + (yDistance * yDistance));

            return distacias[city.id];
        }
Exemplo n.º 2
0
        public static int[] tsp(Point[] cidades, int[][] adjacencyMatrix, int inicio)
        {
            TourManager.clear();

            for (int i = 0; i < cidades.Length; i++)
            {
                City city = new City(i, cidades[i].X, cidades[i].Y, adjacencyMatrix[i]);
                TourManager.addCity(city);
            }

            // Initialize population
            Population pop = new Population(3, true);
            Console.WriteLine("Initial distance: " + pop.getFittest().getDistance());

            // Evolve population for 100 generations
            pop = TSP_GA.evolvePopulation(pop);
            for (int i = 0; i < 1000; i++)
            {
                pop = TSP_GA.evolvePopulation(pop);
                Console.WriteLine("Intermediate distance: " + pop.getTour(0).getDistance());
            }

            // Print final results
            Console.WriteLine("Finished");
            Console.WriteLine("Final distance: " + pop.getFittest().getDistance());
            Console.WriteLine("Solution:");
            Console.WriteLine(pop.getFittest().ToString());

            int[] caminho = new int[cidades.Length + 1];

            caminho[caminho.Length - 1] = pop.getFittest().getDistance();

            List<int> per = pop.getFittest().getPercurso();

            for (int i = 0; i < caminho.Length-1; i++)
            {
                caminho[i] = per[i];
            }

            return caminho;
        }
Exemplo n.º 3
0
 // Adds a destination city
 public static void addCity(City city)
 {
     destinationCities.Add(city);
 }