static void Main(string[] args)
        {
            // Açıklama
            // Girdi dosyalarını, proje klasörü içerisindeki bin / Debug / Input klasörüne eklemeniz gereklidir.
            // Çıktı dosyaları bin / Debug / Output klasörüne verilecektir.

            // KRZYSZTOF SCHIFF, ANT COLONY OPTIMIZATION ALGORITHM FOR THE 0 - 1 KNAPSACK PROBLEM
            // Bu makaledeki algoritma kullanıldı.

            int    karincaSayisi = 200;
            int    ITERASYON     = 500;
            double ALFA          = 0.5;
            double BETA          = 0.5;
            double PHI           = 0.2;
            int    DENEME_SAYISI = 10;

            VeriOkuma     veri  = new VeriOkuma();
            DosyayaYazdir dosya = new DosyayaYazdir();

            for (int i = 1; i <= 10; i++)
            {
                string dosyaYolu      = Path.Combine(Environment.CurrentDirectory, @"Input\", "test" + i + ".txt");
                string ciktiDosyaYolu = Path.Combine(Environment.CurrentDirectory, @"Output\", "test" + i + "_4_results.txt");

                List <Esya> esyaList = veri.elemanlarListesi(dosyaYolu);

                KarincaKolonisi karincaKolonisi = new KarincaKolonisi(karincaSayisi, ITERASYON, esyaList, veri.Kapasite, PHI, ALFA, BETA);

                Console.WriteLine("test" + i + ".txt" + " " + esyaList.Count + " " + veri.Kapasite);

                for (int j = 0; j < DENEME_SAYISI; j++)
                {
                    karincaKolonisi.Optimizasyon();

                    if (j == DENEME_SAYISI - 1)
                    {
                        karincaKolonisi.CiktiVer(karincaKolonisi.EnIyiCozumlerListesi, karincaKolonisi.ZamanFarklariListesi, ciktiDosyaYolu, dosya);
                    }
                }
            }

            Console.WriteLine("\nProgram çalışmayı durdurdu.");
            Console.ReadKey();
        }
        static void Main(string[] args)
        {
            int    karincaSayisi = 200;
            int    ADIM_SAYISI   = 500;
            double ALFA          = 0.5;
            double BETA          = 0.5;
            double PHI           = 0.2;
            int    DENEME_SAYISI = 10;

            // Kullandığımız algoritmada Q sabiti olmadığı için
            // dahil edilmedi
            //double Q = 100;

            VeriOkuma     veri  = new VeriOkuma();
            DosyayaYazdir dosya = new DosyayaYazdir();

            for (int i = 1; i <= 10; i++)
            {
                string dosyaYolu      = Path.Combine(Environment.CurrentDirectory, @"Input\", "test" + i + ".txt");
                string ciktiDosyaYolu = Path.Combine(Environment.CurrentDirectory, @"Output\", "test" + i + "_4_results.txt");

                List <Esya> esyaList = veri.elemanlarListesi(dosyaYolu);

                KarincaKolonisi karincaKolonisi = new KarincaKolonisi(karincaSayisi, ADIM_SAYISI, esyaList, veri.Kapasite, PHI, ALFA, BETA);

                Console.WriteLine("test" + i + ".txt" + " " + esyaList.Count + " " + veri.Kapasite);

                for (int j = 0; j < DENEME_SAYISI; j++)
                {
                    karincaKolonisi.Optimizasyon();

                    if (j == DENEME_SAYISI - 1)
                    {
                        karincaKolonisi.CiktiVer(karincaKolonisi.EnIyiCozumlerListesi, karincaKolonisi.ZamanFarklariListesi, ciktiDosyaYolu, dosya);
                    }
                }
            }

            Console.WriteLine("\nProgram çalışmayı durdurdu.");
            Console.ReadKey();
        }
示例#3
0
        public void CiktiVer(List <double> enIyiCozum, List <TimeSpan> zamanFarki, string dosyaAdi, DosyayaYazdir dosya)
        {
            // dosya yazma islemleri
            Dictionary <double, TimeSpan> ciktilar = new Dictionary <double, TimeSpan>();
            double toplamDeger = 0, ortalamaDeger;

            for (int i = 0; i < enIyiCozum.Count; i++)
            {
                ciktilar.Add(enIyiCozum[i], zamanFarki[i]);
            }

            for (int i = 0; i < ciktilar.Count; i++)
            {
                toplamDeger += ciktilar.ElementAt(i).Key;
            }

            ortalamaDeger = toplamDeger / ciktilar.Count;

            double   enIyiCiktiDegeri = ciktilar.Keys.Max();
            TimeSpan enIyiCiktiSuresi = ciktilar[enIyiCiktiDegeri];

            dosya.Yaz(dosyaAdi, ortalamaDeger, enIyiCiktiDegeri, enIyiCiktiSuresi);
        }