public void kemotaksi()
        {
            double Jlast;
            Hucre  yenhucre = new Hucre(boyutSayisi, adimBuyuklugu, parametreAraliklari, goruntuIslemleri);

            for (int i = 0; i < populasyonBuyuklugu; i++)
            {
                etkilesim(populasyon[i]);
                Jlast = populasyon[i].Uygunluk;
                yuvarlanma(yenhucre, populasyon[i]);
                populasyon[i].Cost = goruntuIslemleri.ParametreleriDegerlendir(populasyon[i].Konum[0], populasyon[i].Konum[1], populasyon[i].Konum[2]);
                enIyiyiKontrolEt(populasyon[i]);
                etkilesim(yenhucre);

                for (int j = 0; j < boyutSayisi; j++)
                {
                    populasyon[i].Konum[j] = yenhucre.Konum[j];
                }

                populasyon[i].Cost     = yenhucre.Cost;
                populasyon[i].Uygunluk = yenhucre.Uygunluk;
                populasyon[i].Can     += populasyon[i].Uygunluk;

                for (int m = 0; m < yuzmeUzunlugu; m++)
                {
                    if (yenhucre.Uygunluk < Jlast)
                    {
                        Jlast = yenhucre.Uygunluk;
                        yuzme(yenhucre, populasyon[i]);
                        populasyon[i].Cost = goruntuIslemleri.ParametreleriDegerlendir(populasyon[i].Konum[0], populasyon[i].Konum[1], populasyon[i].Konum[2]);
                        enIyiyiKontrolEt(populasyon[i]);
                        etkilesim(yenhucre);

                        for (int j = 0; j < boyutSayisi; j++)
                        {
                            populasyon[i].Konum[j] = yenhucre.Konum[j];
                        }

                        populasyon[i].Cost     = yenhucre.Cost;
                        populasyon[i].Uygunluk = yenhucre.Uygunluk;
                        populasyon[i].Can     += populasyon[i].Uygunluk;
                    }
                    else
                    {
                        break;
                    }
                }
            }
        }
Ejemplo n.º 2
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();
        }
        public Hucre(int boyut_sayisi, double adım, double[,] parametreAraliklari, GoruntuIslemleri goruntuIslemleri)
        {
            r = new Random();

            this.konum = new double[boyut_sayisi];
            double aralik;
            double minimum;

            for (int i = 0; i < boyut_sayisi; i++)
            {
                aralik        = parametreAraliklari[i, 1] - parametreAraliklari[i, 0];
                minimum       = parametreAraliklari[i, 0];
                this.Konum[i] = r.NextDouble() * (aralik) + minimum;
            }
            this.cost            = goruntuIslemleri.ParametreleriDegerlendir(this.konum[0], this.konum[1], this.konum[2]);
            this.uygunluk        = 0;
            this.can             = 0;
            this.adım_buyukulugu = adım;
        }
Ejemplo n.º 4
0
        public Kedi(int boyut_sayisi, double[,] parametreAraliklari, GoruntuIslemleri goruntuIslemleri)
        {
            this.boyut_sayisi        = boyut_sayisi;
            this.parametreAraliklari = parametreAraliklari;
            this.goruntuIslemleri    = goruntuIslemleri;
            r               = new Random();
            c1              = 0.01; // Arama modundaki hızın ivmesi.
            this.konum      = new double[boyut_sayisi];
            secilmeIhtimali = 0;
            hiz             = new double[boyut_sayisi];

            double aralik;
            double minimum;

            for (int i = 0; i < boyut_sayisi; i++)
            {
                aralik        = parametreAraliklari[i, 1] - parametreAraliklari[i, 0];
                minimum       = parametreAraliklari[i, 0];
                this.konum[i] = r.NextDouble() * (aralik) + minimum;
                this.hiz[i]   = 0;
            }
            this.uygunluk = goruntuIslemleri.ParametreleriDegerlendir(this.konum[0], this.konum[1], this.konum[2]);
        }