void populasyon_sirala(List <KromozomS> list) { List <SiralamaUzaklıkHesapla> uzaklikNesnesi = new List <SiralamaUzaklıkHesapla>(); for (int i = 0; i < list.Count; i++) { SiralamaUzaklıkHesapla a = new SiralamaUzaklıkHesapla(Math.Abs((double)(list[i].UygDegeri - fonksiyon.MinDeger)), list[i].UygDegeri); uzaklikNesnesi.Add(a); } for (int i = 0; i < uzaklikNesnesi.Count; i++) { for (int j = 0; j < uzaklikNesnesi.Count; j++) { if (uzaklikNesnesi[i].uzaklik < uzaklikNesnesi[j].uzaklik) { SiralamaUzaklıkHesapla temp = uzaklikNesnesi[i]; uzaklikNesnesi[i] = uzaklikNesnesi[j]; uzaklikNesnesi[j] = temp; } } } for (int i = 0; i < list.Count; i++) { for (int j = i; j < list.Count; j++) { if (uzaklikNesnesi[i].uygunluk == list[j].UygDegeri) { KromozomS temp = list[j]; list[j] = list[i]; list[i] = temp; } } } }
public void ilkPopulasyon() { FonkS fonksiyon = new EggHolder(); for (int i = 0; i < populasyonBuyuklugu; i++) { kromozom = new KromozomS(); for (int j = 0; j < fonksiyon.GenSayisi; j++) { kromozom.genEkle(new GenS(rnd.NextDouble() * (fonksiyon.UstSinir - fonksiyon.AltSinir) + fonksiyon.AltSinir)); } kromozom.UygDegeri = fonksiyon.hesapla(kromozom.Genler); populasyon.kromozomEkle(kromozom); } populasyon_sirala(populasyon.Kromozomlistesi); sonlanma_durumu(); bireyListele(dtIterasyon); enIyiUygunluklar.Add(populasyon.Kromozomlistesi[0].UygDegeri); }
public void iterasyon() { populasyon_sirala(populasyon.Kromozomlistesi); iterasyonSayisi++; bireySec = BireySec.yontem(); listeKopyala(); birey1 = bireySec.birey_sec(yedekPopulasyon); yedekPopulasyon.Remove(yedekPopulasyon[Form1.index]); birey2 = bireySec.birey_sec(yedekPopulasyon); CaprazlamaS cs = new CaprazlamaS(); caprazlamakromozomList = cs.caprazla(birey1, birey2, caprazlama); mutasyonOran *= 100; int a = rnd.Next(0, 101); if (a >= 0 && a < mutasyonOran) { mutasyon = MutasyonS.mutasyon_yontem(); caprazlamakromozomList = mutasyon.mutasyon_yap(caprazlamakromozomList, mutasyonKatsayi, fonksiyon.AltSinir, fonksiyon.UstSinir); mutasyonsayisi++; } foreach (var item in caprazlamakromozomList) { item.UygDegeri = fonksiyon.hesapla(item.Genler); } populasyon_sirala(caprazlamakromozomList); secilenCocukKromozom = caprazlamakromozomList[0]; populasyon_sirala(populasyon.Kromozomlistesi); populasyon.Kromozomlistesi.Remove(populasyon.Kromozomlistesi[populasyon.Kromozomlistesi.Count - 1]); populasyon.kromozomEkle(secilenCocukKromozom); populasyon_sirala(populasyon.Kromozomlistesi); enIyiUygunluklar.Add(populasyon.Kromozomlistesi[0].UygDegeri); }
public List <KromozomS> caprazla(KromozomS ilkbry, KromozomS ikincibry, double caprazlamaOran) { minnaklar.Clear(); int rastgele = rnd.Next(0, ilkbry.Genler.Count); for (int i = 0; i < 2; i++) { KromozomS kromozom = new KromozomS(); for (int j = 0; j < ilkbry.Genler.Count; j++) { if (i == 0) { if (rastgele == j) { kromozom.genEkle(ikincibry.Genler[rastgele]); } else { kromozom.genEkle(ilkbry.Genler[j]); } } else { if (rastgele == j) { kromozom.genEkle(ilkbry.Genler[rastgele]); } else { kromozom.genEkle(ikincibry.Genler[j]); } } } minnaklar.Add(kromozom); } return(minnaklar); }
public void kromozomEkle(KromozomS kromozom) { kromozomlistesi.Add(kromozom); }