コード例 #1
0
        public void bruteForce()
        {
            List <int> Yol = new List <int>();

            for (int i = 0; i < GidilenTumSehirler.Count(); i++)
            {
                double KayıtUzunluk1 = 0, KayıtUzunluk2 = 0;

                for (int j = 0; j < 1000; j++)
                {
                    int random1 = random.Next(1, GidilenTumSehirler[i].Count() - 1);
                    int random2 = random.Next(1, GidilenTumSehirler[i].Count() - 1);
                    swap(GidilenTumSehirler[i], random1, random2);

                    if (j == 0)
                    {
                        KayıtUzunluk1 = yolHesapla(GidilenTumSehirler[i]);
                        Yol           = GidilenTumSehirler[i];
                    }
                    else
                    {
                        KayıtUzunluk2 = yolHesapla(GidilenTumSehirler[i]);
                        if (KayıtUzunluk1 > KayıtUzunluk2)
                        {
                            KayıtUzunluk1 = KayıtUzunluk2;
                            Yol           = GidilenTumSehirler[i].ToList();
                        }
                    }
                }

                ToplamMesafe.Add(KayıtUzunluk1);
                GidilenTumSehirler[i] = Yol.ToList();
            }
        }
コード例 #2
0
        public void OptimumSonuclar()
        {
            List <int> Yol = new List <int>();

            for (int i = 0; i < GidilenTumSehirler.Count(); i++)
            {
                for (int j = i + 1; j < GidilenTumSehirler.Count(); j++)
                {
                    if (ToplamMesafe[i] > ToplamMesafe[j])
                    {
                        double temp = ToplamMesafe[i];
                        ToplamMesafe[i] = ToplamMesafe[j];
                        ToplamMesafe[j] = temp;

                        Yol = GidilenTumSehirler[i];
                        GidilenTumSehirler[i] = GidilenTumSehirler[j];
                        GidilenTumSehirler[j] = Yol;
                    }
                }
            }

            for (int i = ToplamMesafe.Count() - 1; i > 0; i--)
            {
                if (ToplamMesafe[i] == ToplamMesafe[i - 1])
                {
                    GidilenTumSehirler.RemoveAt(i - 1);
                    ToplamMesafe.RemoveAt(i - 1);
                    i = ToplamMesafe.Count() - 1;
                }
            }

            for (int i = 0; i < Optimumincrease; i++)
            {
                ToplamOptimumMesafe.Add(ToplamMesafe[i]);
                GidilenOptimumSehirler.Add(GidilenTumSehirler[i]);
            }
        }