public void wylosujPotencjalnychRodzicow() { Selekcja Selekcja = new Selekcja(populacja); Selekcja.obliczWartoscPopulacji(); Selekcja.obliczPrawdopodobienstwo(); Selekcja.setDystrybuantyDlaOsobnikow(); // tu można wybrać interesującą nas selekcje: //List<Osobnik> WylosowaniOsobnicySukcesji = Selekcja.obracanieRulatki(); List <Osobnik> WylosowaniOsobnicySukcesji = Selekcja.wyborOsobnikowMetodaRankingowaMalejaco(); //List<Osobnik> WylosowaniOsobnicySukcesji = Selekcja.wyborOsobnikowMetodaRankingowaRosnaco(); //List<Osobnik> WylosowaniOsobnicySukcesji = Selekcja.ZwracajacaWyborOsobnikowMetodaTurniejowaMalejaco(2); //w nawiasie ilość osób w grupie //List<Osobnik> WylosowaniOsobnicySukcesji = Selekcja.ZwracajacaWyborOsobnikowMetodaTurniejowaRosnaco(2); //List<Osobnik> WylosowaniOsobnicySukcesji = Selekcja.wyborOsobnikowMetodaTurniejowaMalejaco(2); //List<Osobnik> WylosowaniOsobnicySukcesji = Selekcja.wyborOsobnikowMetodaTurniejowaRosnaco(2); List <Osobnik> potencjalniRodzice = new List <Osobnik>(); for (int i = 0; i < WylosowaniOsobnicySukcesji.Count; i++) { string imie = "Potencjalny rodzic " + i; Osobnik potencjalnyRodzic = new Osobnik(imie, WylosowaniOsobnicySukcesji[i]); potencjalnyRodzic.SetIndex(i); potencjalniRodzice.Add(potencjalnyRodzic); } Populacja PopulacjaPotencjalnychRodzicow = new Populacja(); PopulacjaPotencjalnychRodzicow.SetListaOsobnikowNowaPopulacja(WylosowaniOsobnicySukcesji.Count, potencjalniRodzice, populacja.poczatkiLista, populacja.konceLista, populacja.precyzjaLista); this.PopulacjaPotencjalnychRodzicow = PopulacjaPotencjalnychRodzicow; }
public void krzyzujOsobnikow() { Selekcja Krzyzowanie = new Selekcja(PopulacjaPotencjalnychRodzicow); Krzyzowanie.wyborOsobnikowDoKrzyzowania(); List <Osobnik> przyszliRodzice = new List <Osobnik>(); for (int i = 0; i < Krzyzowanie.osobnicyDoSparowania.Count; i++) { string imie = "Rodzic " + i; Osobnik Rodzic = new Osobnik(imie, Krzyzowanie.osobnicyDoSparowania[i]); Rodzic.SetIndex(i); przyszliRodzice.Add(Rodzic); } Populacja PopulacjaRodzicow = new Populacja(); PopulacjaRodzicow = PopulacjaPotencjalnychRodzicow; PopulacjaRodzicow.SetListaOsobnikow(przyszliRodzice); Selekcja Parowanie = new Selekcja(PopulacjaRodzicow); Parowanie.SetOsobnicyDoSparowania(przyszliRodzice); List <Osobnik> PotomkowieKrzyzowania = new List <Osobnik>(); for (int i = 0; i < (Krzyzowanie.osobnicyDoSparowania.Count / 2); i++) { Parowanie.stworzPare(); // tu można wybrać interesujący nas rodzaj krzyżowania: //PopulacjaRodzicow.krzyzowanieJednopunktowe(Parowanie.para[0].calyLancuchBinarny, Parowanie.para[1].calyLancuchBinarny); //PopulacjaRodzicow.krzyzowanieDwupunktowe(Parowanie.para[0].calyLancuchBinarny, Parowanie.para[1].calyLancuchBinarny); //PopulacjaRodzicow.krzyzowanieWielopunktowe(Parowanie.para[0].calyLancuchBinarny, Parowanie.para[1].calyLancuchBinarny); PopulacjaRodzicow.krzyzowanieRownomierne(Parowanie.para[0].calyLancuchBinarny, Parowanie.para[1].calyLancuchBinarny); for (int j = 0; j < PopulacjaRodzicow.listaPotomkow.Count; j++) { PotomkowieKrzyzowania.Add(PopulacjaRodzicow.listaPotomkow[j]); } } List <Osobnik> Potomkowie = new List <Osobnik>(); for (int i = 0; i < PotomkowieKrzyzowania.Count; i++) { string imie = "Potomek " + i; Osobnik Potomek = new Osobnik(imie, PotomkowieKrzyzowania[i]); Potomek.SetIndex(i); Potomkowie.Add(Potomek); } Populacja PotomkowiePoKrzyzowaniu = PopulacjaRodzicow; PotomkowiePoKrzyzowaniu.SetListaOsobnikow(Potomkowie); this.PotomkowiePoKrzyzowaniu = PotomkowiePoKrzyzowaniu; }