public CPath(CCities map)
        {
            distance = new double[map.Coordinate.Length, map.Coordinate.Length];

            for (int j = 0; j < map.Coordinate.Length; j++)
            {
                distance[j, j] = 0;

                for (int i = 0; i < map.Coordinate.Length; i++)
                {
                    double value = Math.Sqrt(Math.Pow(map.Coordinate[i].X - map.Coordinate[j].X, 2) +
                                             Math.Pow(map.Coordinate[i].Y - map.Coordinate[j].Y, 2));
                    distance[i, j] = distance[j, i] = value;
                }
            }

            //создаем начальный путь
            //массив на 1 больше кол-ва городов, а первый и последний индексы равны 0 - это сделано для того чтобы "замкнуть" путь
            Path = new int[map.Coordinate.Length + 1];
            for (int i = 0; i < map.Coordinate.Length; i++)
            {
                Path[i] = i;
            }
            Path[map.Coordinate.Length] = 0;
        }
Esempio n. 2
0
        static void SolveSalesmanProblem(string Path, int N, int length)
        {
            CCities Berlin = new CCities(N, $"/Users/admin/Desktop/Travelling Salesman Problem/{Path}.txt");
            CPath   path   = new CPath(Berlin);

            foreach (var city in path.Path)
            {
                Console.Write(city);
                Console.Write(" ");
            }

            Console.WriteLine();
            while (path.PathLength() > length)
            {
                path.FindBestPath();
                //Console.WriteLine(path.PathLength());
            }

            foreach (var city in path.Path)
            {
                Console.Write(city);
                Console.Write(" ");
            }
            Console.WriteLine(path.PathLength());
        }