Пример #1
0
        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);
        }
Пример #2
0
 virtual internal bool sprawdz(Osobnik osobnik)
 {
     if (osobnik.SilaPrzetrwania > progPrzetrwania) //przykladowa, domyslna selekcja
     {
         return(true);
     }
     else
     {
         return(false);
     }
 }
Пример #3
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");
                }
            }
        }
Пример #4
0
        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);
        }
Пример #5
0
        private Osobnik krzyzuj(Osobnik ojciec, Osobnik matka)
        {
            Osobnik dziecko = new Dziecko(ojciec, matka);

            return(dziecko);
        }
Пример #6
0
 public Dziecko(Osobnik ojciec, Osobnik matka)
 {
     this.ojciec = ojciec;
     this.matka  = matka;
 }