internal List <Osobnik> dokonajMutacji(List <Osobnik> populacja) { List <Osobnik> zmutowanaPopulacja = new List <Osobnik>(); foreach (Osobnik os in populacja) { Osobnik zmutowany = zmutujOsobnika(os); zmutowanaPopulacja.Add(zmutowany); } return(zmutowanaPopulacja); }
virtual internal bool sprawdz(Osobnik osobnik) { if (osobnik.SilaPrzetrwania > progPrzetrwania) //przykladowa, domyslna selekcja { return(true); } else { return(false); } }
static void Main(string[] args) { int rozmiarPopulacji = 10; int rozmiarChromosomu = 8; int liczbaPokolen = 1; List <List <Osobnik> > populacja = new List <List <Osobnik> >(); for (int i = 0; i < rozmiarPopulacji; i++) { populacja.Add(Osobnik.InicjalizacjaOsobnika(8)); } for (int i = 0; i < liczbaPokolen; i++) { for (int populacjaIndex = 0; populacjaIndex < rozmiarPopulacji; populacjaIndex++) { int wylosowanaOperacjaGenetyczna = new Random().Next(2); if (wylosowanaOperacjaGenetyczna == 0) { OperacjeGenetyczne.Mutacja(populacja.ElementAt(populacjaIndex)); } else { OperacjeGenetyczne.Krzyzowanie(populacja.ElementAt(populacjaIndex), populacja.ElementAt(new Random().Next(rozmiarPopulacji)), rozmiarChromosomu); } } List <double> wynikiZFunkcjiPrzystosowania = new List <double>(); for (int index = 0; index < rozmiarPopulacji; index++) { wynikiZFunkcjiPrzystosowania.Add(Przystosowanie.FunkcjaPrzystosowania(populacja.ElementAt(index))); } HashSet <int> wyniki = Selekcja.MetodaKolaRuletki(wynikiZFunkcjiPrzystosowania, rozmiarPopulacji); for (int index = 0; index < wyniki.Count; index++) { List <Osobnik> chromosom = populacja.ElementAt(wyniki.ElementAt(index)); chromosom.ForEach(e => { Console.Write(e.Wartosc); }); Console.WriteLine("\n"); } } }
private Osobnik zmutujOsobnika(Osobnik osobnik) { Osobnik zmutowany = osobnik.mutacja(); //mutacja zalezy od pol danych Osobnika, dlatego dalem ja do osobnika, a nie mutuje tutaj return(zmutowany); }
private Osobnik krzyzuj(Osobnik ojciec, Osobnik matka) { Osobnik dziecko = new Dziecko(ojciec, matka); return(dziecko); }
public Dziecko(Osobnik ojciec, Osobnik matka) { this.ojciec = ojciec; this.matka = matka; }