public Populacja(Selekcja s, Krzyzowanie k, Mutacja m, int wielkosc = 100, int liczbaEpok = 10) //domyslne wartosci dla populacji { this.metodaSelekcji = s; this.metodaKrzyzowania = k; this.metodaMutacji = m; this.wielkoscPopulacji = wielkosc; this.liczbaPokolen = liczbaEpok; populacja = losujPopulacje(wielkosc); }
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"); } } }