예제 #1
0
 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);
 }
예제 #2
0
        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");
                }
            }
        }