예제 #1
0
        public double[] aramaBaslat(int sayac)
        {
            int sayacIlkhali = sayac;

            populasyonOlustur();
            enIyiKedi = new Kedi(boyutSayisi, this.parametreAraliklari, this.goruntuIslemleri);
            double oncekiUygunluk = this.enIyiKedi.Uygunluk;

            while (sayac > 0)
            {
                if (oncekiUygunluk == this.enIyiKedi.Uygunluk)
                {
                    sayac--;
                }
                else
                {
                    oncekiUygunluk = this.enIyiKedi.Uygunluk;
                    sayac          = sayacIlkhali;
                }

                modlariAta();
                hareketEt();
                uygunluklariHesapla();
                //Console.WriteLine("En iyi değer kso: " + enIyiKedi.Uygunluk + " Params: " + enIyiKedi.Konum[0] + ":" + enIyiKedi.Konum[1] + ":" + enIyiKedi.Konum[2]);
            }

            return(this.enIyiKedi.Konum);
        }
예제 #2
0
        public void hizGuncelle(Kedi enIyi)
        {
            double r1 = r.NextDouble();

            for (int i = 0; i < konum.Length; i++)
            {
                this.hiz[i] += r1 * c1 * (enIyi.Konum[i] - this.konum[i]);
            }
        }
예제 #3
0
        public void populasyonOlustur()
        {
            populasyon = new Kedi[populasyonBuyuklugu];

            for (int i = 0; i < populasyonBuyuklugu; i++)
            {
                populasyon[i] = new Kedi(boyutSayisi, parametreAraliklari, goruntuIslemleri);
            }
        }
예제 #4
0
        public void izlemeModu(Kedi kedicik)
        {
            kedicik.hizGuncelle(enIyiKedi);

            for (int i = 0; i < boyutSayisi; i++)
            {
                kedicik.Konum[i] += kedicik.Hiz[i];
            }
            kedicik.Konum = konumlariNormalizeEt(kedicik.Konum);
        }
예제 #5
0
        public void aramaModu(Kedi kedicik)
        {
            Kedi[] adaylar = new Kedi[AHH];

            for (int i = 0; i < adaylar.Length; i++)
            {
                //adaylar[i] = (Kedi) kedicik.Clone();
                adaylar[i]          = new Kedi(boyutSayisi, parametreAraliklari, goruntuIslemleri);
                adaylar[i].Konum[0] = kedicik.Konum[0];
                adaylar[i].Konum[1] = kedicik.Konum[1];
                adaylar[i].Konum[2] = kedicik.Konum[2];

                adaylar[i].Uygunluk = kedicik.Uygunluk;
            }
            double[,] olasiKonumlar = new double[AHH, boyutSayisi];

            Kedi enIyi = new Kedi(boyutSayisi, parametreAraliklari, goruntuIslemleri);

            //Kedi enIyi = (Kedi)kedicik.Clone();
            enIyi.Konum[0] = adaylar[0].Konum[0];
            enIyi.Konum[1] = adaylar[0].Konum[1];
            enIyi.Konum[2] = adaylar[0].Konum[2];

            enIyi.Uygunluk = adaylar[0].Uygunluk;

            // Olası konumları üret.
            for (int i = 0; i < AHH; i++)
            {
                for (int j = 0; j < boyutSayisi; j++)
                {
                    olasiKonumlar[i, j] = rastgeleSayi(SBA[j, 0], SBA[j, 1]);
                    //Olası konumları yeni üretilen kedilere ata.
                    adaylar[i].Konum[j] += olasiKonumlar[i, j];
                }

                adaylar[i].Konum    = konumlariNormalizeEt(adaylar[i].Konum);
                adaylar[i].Uygunluk = goruntuIslemleri.ParametreleriDegerlendir(adaylar[i].Konum[0], adaylar[i].Konum[1], adaylar[i].Konum[2]);
                //secilmeIhtimaliHesapla(adaylar[i]);

                if (enIyi.Uygunluk < adaylar[i].Uygunluk)
                {
                    enIyi.Konum    = adaylar[i].getKonum();
                    enIyi.Uygunluk = adaylar[i].getUygunluk();
                }
            }
            kedicik.Konum    = enIyi.getKonum();
            kedicik.Uygunluk = enIyi.getUygunluk();
        }
예제 #6
0
 public void secilmeIhtimaliHesapla(Kedi kedicik)
 {
     kedicik.SecilmeIhtimali = kedicik.Uygunluk;
 }