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;
        }
Example #2
0
        public void wybierzNastepnePokolenie()
        {
            List <Osobnik> nowePokolenie = new List <Osobnik>();

            for (int i = 0; i < populacja.listaOsobnikow.Count; i++)
            {
                string  imie    = "Krolik " + i;
                Osobnik Potomek = new Osobnik(imie, WszyscyOsobnicy[i]);
                Potomek.SetIndex(i);
                nowePokolenie.Add(Potomek);
            }

            List <Osobnik> Potomkowie = new List <Osobnik>();

            for (int i = 0; i < nowePokolenie.Count; i++)
            {
                string  imie    = "Krolik " + i;
                Osobnik Potomek = new Osobnik(imie, nowePokolenie[i]);
                Potomek.SetIndex(i);
                Potomkowie.Add(Potomek);
            }

            Populacja NowePokolenie = populacja;

            NowePokolenie.SetListaOsobnikow(Potomkowie);

            this.populacja = NowePokolenie;
        }
Example #3
0
        public void wybierzNastepnePokolenie()
        {
            List <Osobnik> nowePokolenie = new List <Osobnik>();
            var            rng           = new Random(Guid.NewGuid().GetHashCode());

            for (int i = 0; i < populacja.listaOsobnikow.Count; i++)
            {
                int     index   = rng.Next(0, (WszyscyOsobnicy.Count - 1));
                string  imie    = "Krolik " + i;
                Osobnik Potomek = new Osobnik(imie, WszyscyOsobnicy[index]);
                Potomek.SetIndex(i);
                nowePokolenie.Add(Potomek);
            }

            List <Osobnik> Potomkowie = new List <Osobnik>();

            for (int i = 0; i < nowePokolenie.Count; i++)
            {
                string  imie    = "Krolik " + i;
                Osobnik Potomek = new Osobnik(imie, nowePokolenie[i]);
                Potomek.SetIndex(i);
                Potomkowie.Add(Potomek);
            }

            Populacja NowePokolenie = populacja;

            NowePokolenie.SetListaOsobnikow(Potomkowie);

            this.populacja = NowePokolenie;
        }
Example #4
0
        public void wybierzNastepnePokolenie()
        {
            List <Osobnik> nowePokolenie = WszyscyOsobnicy;

            nowePokolenie = usunPodobnychOsobnikow(nowePokolenie);

            var rng = new Random(Guid.NewGuid().GetHashCode());

            while (nowePokolenie.Count < populacja.listaOsobnikow.Count)
            {
                for (int i = 0; i < (populacja.listaOsobnikow.Count - nowePokolenie.Count); i++)
                {
                    int     index   = rng.Next(0, (nowePokolenie.Count - 1));
                    string  imie    = "Krolik " + i;
                    Osobnik Potomek = new Osobnik(imie, nowePokolenie[index]);
                    Potomek.SetIndex(i);
                    nowePokolenie.Add(Potomek);
                }

                nowePokolenie = usunPodobnychOsobnikow(nowePokolenie);
            }

            if (nowePokolenie.Count > populacja.listaOsobnikow.Count)
            {
                List <Osobnik> nowePokoleniePoOdjeciuNadmiaru = new List <Osobnik>();

                for (int i = 0; i < populacja.listaOsobnikow.Count; i++)
                {
                    nowePokoleniePoOdjeciuNadmiaru.Add(nowePokolenie[i]);
                }

                nowePokolenie = nowePokoleniePoOdjeciuNadmiaru;
            }

            List <Osobnik> Potomkowie = new List <Osobnik>();

            for (int i = 0; i < nowePokolenie.Count; i++)
            {
                string  imie    = "Krolik " + i;
                Osobnik Potomek = new Osobnik(imie, nowePokolenie[i]);
                Potomek.SetIndex(i);
                Potomkowie.Add(Potomek);
            }

            Populacja NowePokolenie = populacja;

            NowePokolenie.SetListaOsobnikow(Potomkowie);

            this.populacja = NowePokolenie;
        }