private void kontrolEt(int i, int j, Kromozom k1, Kromozom k2, int rastgelesayi, Kromozom kromozom) { if (i == 0) { if (rastgelesayi == j) { kromozom.genEkle(k2.genler[rastgelesayi]); } else { kromozom.genEkle(k1.genler[j]); } } else { if (rastgelesayi == j) { kromozom.genEkle(k1.genler[rastgelesayi]); } else { kromozom.genEkle(k2.genler[j]); } } }
void populasyon_sirala(List <Kromozom> 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].UygulukDegeri - fonksiyon.MinimumDegeri)), list[i].UygulukDegeri); 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].UygulukDegeri) { Kromozom temp = list[j]; list[j] = list[i]; list[i] = temp; } } } }
private void BirbirineKopyala(int i, Kromozom k1, Kromozom k2, int rastgelesayi) { Kromozom kromozom = new Kromozom(); for (int j = 0; j < k1.genler.Count; j++) { kontrolEt(i, j, k1, k2, rastgelesayi, kromozom); } adaylar.Add(kromozom); }
public List <Kromozom> Caprazla(Kromozom k1, Kromozom k2) { adaylar.Clear(); int rastgelesayi = rnd.Next(0, k1.genler.Count); for (int i = 0; i < 2; i++) { BirbirineKopyala(i, k1, k2, rastgelesayi); } return(adaylar); }
public void iterasyon() { random_secimler(); populasyon_sirala(populasyon.KromozomList); iterasyonSayısı++; bireySec = BireySecimi.birey_secimi_yontem_sec(bireySecimi); caprazlamaSec = Caprazlama.caprazlama_secimi_yontem_sec(caprazlamaCesiti); listeKopyala(); birey1 = bireySec.birey_sec(yedekPopulasyon); yedekPopulasyon.Remove(yedekPopulasyon[Form1.index]); birey2 = bireySec.birey_sec(yedekPopulasyon); caprazlamakromozomList = caprazlamaSec.caprazlama_yap(birey1, birey2, caprazlamaOrani); mutasyonOrani *= 100; int a = rnd.Next(0, 101); if (a >= 0 && a < mutasyonOrani) { mutasyon = Mutasyon.mutasyon_yontem_sec(mutasyonSecimi); caprazlamakromozomList = mutasyon.mutasyon_yap(caprazlamakromozomList, mutasyonKatsayisi, fonksiyon.Altsinir, fonksiyon.Ustsinir); mutasyonsayisi++; } foreach (var item in caprazlamakromozomList) { item.UygulukDegeri = fonksiyon.hesapla(item.GenListesi); } populasyon_sirala(caprazlamakromozomList); secilenCocukKromozom = caprazlamakromozomList[0]; populasyon_sirala(populasyon.KromozomList); populasyon.KromozomList.Remove(populasyon.KromozomList[populasyon.KromozomList.Count - 1]); populasyon.kromozomEkle(secilenCocukKromozom); populasyon_sirala(populasyon.KromozomList); enIyiUygunluklar.Add(populasyon.KromozomList[0].UygulukDegeri); }
public Kromozom kromozom_sec(String method, List <Kromozom> kromozomlar) { Kromozom kromozom = null; switch (method) { case "Random": kromozom = Random(kromozomlar); break; case "Turnuva": kromozom = Turnuva(kromozomlar); break; } return(kromozom); }
private void CreatePopulation() { int sayac = 0; while (sayac < populationSizeBox.Value) { double[] dizi = new double[30]; for (int j = 0; j < dizi.Length; j++) { dizi[j] = RandomUret(); } Kromozom birey = new Kromozom(dizi); populationList.Add(birey); sayac++; } }
public int CompareTo(object obj) { Kromozom kr = (Kromozom)obj; if (this.fitness < kr.fitness) { return(1); } else if (this.fitness == kr.fitness) { return(0); } else { return(-1); } }
private void CrossOver() { temporaryList.AddRange(populationList); //liste2 for crossover populationList.Clear(); populationList.AddRange(EliteList); while (temporaryList.Count != 0) { Kromozom parent1 = temporaryList[carkifelek(temporaryList)]; temporaryList.Remove(parent1); Kromozom parent2 = temporaryList[carkifelek(temporaryList)]; temporaryList.Remove(parent2); if (rnd.NextDouble() < Convert.ToDouble(crossOverBox.Value)) { double[] childGen = new double[30]; double[] childGen2 = new double[30]; for (int i = 0; i < 30; i++) { if (i < 15) { childGen[i] = parent1.genList[i]; childGen2[i] = parent2.genList[i]; } else { childGen[i] = parent2.genList[i]; childGen2[i] = parent1.genList[i]; } childGen[i] = Mutation(childGen[i]); childGen2[i] = Mutation(childGen2[i]); } Kromozom child = new Kromozom(childGen); Kromozom child2 = new Kromozom(childGen2); populationList.Add(child); populationList.Add(child2); } else { populationList.Add(parent1); populationList.Add(parent2); } } }
public Kromozom TeknoktaMutasyonla(Kromozom kromozom, double x_min, double xmax) { //Tek nokta mutasyonlayıcı int i = new Random().Next(0, 30); kromozom.genler[i].deger = kromozom.genler[i].deger - 1; if (kromozom.genler[i].deger > xmax) { kromozom.genler[i].deger = xmax; } if (kromozom.genler[i].deger < x_min) { kromozom.genler[i].deger = x_min; } return(kromozom); }
public void ilk_populasyon_olustur() { fonksiyon = Fonksiyonlar.fonksiyon_olustur(fonksiyonSecimi); for (int i = 0; i < populasyonBuyuklugu; i++) { kromozom = new Kromozom(); for (int j = 0; j < fonksiyon.GenSayisi; j++) { kromozom.genEkle(new Gen((rnd.NextDouble() * (fonksiyon.Ustsinir - fonksiyon.Altsinir) + fonksiyon.Altsinir))); } kromozom.UygulukDegeri = fonksiyon.hesapla(kromozom.GenListesi); populasyon.kromozomEkle(kromozom); } populasyon_sirala(populasyon.KromozomList); sonlanma_durumu(); bireyListele(dgwiterasyon); enIyiUygunluklar.Add(populasyon.KromozomList[0].UygulukDegeri); }
//Cift nokta mutasyonlayıcı public Kromozom IkıNoktaMutasyonla(Kromozom kromozom, double x_min, double xmax) { for (int x = 0; x < 2; x++) { int i = new Random().Next(0, 30); kromozom.genler[i].deger = kromozom.genler[i].deger - 2; if (kromozom.genler[i].deger > xmax) { kromozom.genler[i].deger = xmax; } if (kromozom.genler[i].deger < x_min) { kromozom.genler[i].deger = x_min; } } return(kromozom); }
public override List <Kromozom> caprazlama_yap(Kromozom birey1, Kromozom birey2, double caprazlamaOrani) { cocukBireyler.Clear(); int rastgelesayi = rnd.Next(0, birey1.GenListesi.Count); for (int i = 0; i < 2; i++) { Kromozom kromozom = new Kromozom(); for (int j = 0; j < birey1.GenListesi.Count; j++) { if (i == 0) { if (rastgelesayi == j) { kromozom.genEkle(birey2.GenListesi[rastgelesayi]); } else { kromozom.genEkle(birey1.GenListesi[j]); } } else { if (rastgelesayi == j) { kromozom.genEkle(birey1.GenListesi[rastgelesayi]); } else { kromozom.genEkle(birey2.GenListesi[j]); } } } cocukBireyler.Add(kromozom); } return(cocukBireyler); }
public void kromozomEkle(Kromozom kromozom) { KromozomList.Add(kromozom); }
abstract public List <Kromozom> caprazlama_yap(Kromozom birey1, Kromozom birey2, double caprazlamaOrani);