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; } } } }
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; }
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]); }