public void usunTakichSamychOsobnikow() { List <Osobnik> wszyscyOsobnicy = WszyscyOsobnicy; Osobnik Wybraniec; Osobnik doWyrzucenia; for (int i = 0; i < wszyscyOsobnicy.Count; i++) { Wybraniec = wszyscyOsobnicy[i]; for (int j = i; j < wszyscyOsobnicy.Count; j++) { doWyrzucenia = WszyscyOsobnicy[j]; if (Wybraniec.Equals(doWyrzucenia)) { wszyscyOsobnicy = wyrzucanieOsobnika(doWyrzucenia, wszyscyOsobnicy); // bo wyrzucani są wszyscy, a powinien zostać jeden taki osobnik, dlatego należy go później na nowo dodać wszyscyOsobnicy.Add(doWyrzucenia); } } } this.WszyscyOsobnicy = wszyscyOsobnicy; }
public void wybierzNastepnePokolenie() { List <Osobnik> nowePokolenie = new List <Osobnik>(); List <Osobnik> listaOsobnikow = populacja.listaOsobnikow; List <Osobnik> listaRodzicow = PopulacjaPotencjalnychRodzicow.listaOsobnikow; List <Osobnik> listaPotomkow = PotomkowiePoKrzyzowaniu.listaOsobnikow; Osobnik Wybraniec; Osobnik rodzicDoWyrzucenia; Osobnik potomekDoWyrzucenia; for (int i = 0; i < listaOsobnikow.Count; i++) { Wybraniec = listaOsobnikow[i]; for (int j = 0; j < listaRodzicow.Count; j++) { rodzicDoWyrzucenia = listaRodzicow[j]; potomekDoWyrzucenia = listaPotomkow[j]; if (Wybraniec.Equals(rodzicDoWyrzucenia)) { nowePokolenie.Add(potomekDoWyrzucenia); listaOsobnikow = wyrzucanieOsobnika(Wybraniec, listaOsobnikow); listaRodzicow = wyrzucanieOsobnika(rodzicDoWyrzucenia, listaRodzicow); listaPotomkow = wyrzucanieOsobnika(potomekDoWyrzucenia, listaPotomkow); } } } for (int i = 0; i < listaOsobnikow.Count; i++) { nowePokolenie.Add(listaOsobnikow[i]); } Populacja PopulacjaZPotomkami = new Populacja(); PopulacjaZPotomkami.SetListaOsobnikowNowaPopulacja(populacja.listaOsobnikow.Count, nowePokolenie, populacja.poczatkiLista, populacja.konceLista, populacja.precyzjaLista); this.populacja = PopulacjaZPotomkami; }
public void wybierzNastepnePokolenie() { List <Osobnik> nowePokolenie = new List <Osobnik>(); List <Osobnik> WszyscyOsobnicyBezTychZPierwotnejPopulacji = WszyscyNowiOsobnicy; Osobnik doWyrzucenia; Osobnik Wybraniec; for (int i = 0; i < populacja.listaOsobnikow.Count; i++) { Wybraniec = populacja.listaOsobnikow[i]; for (int j = 0; j < WszyscyOsobnicyBezTychZPierwotnejPopulacji.Count; j++) { doWyrzucenia = WszyscyOsobnicyBezTychZPierwotnejPopulacji[j]; if (Wybraniec.Equals(doWyrzucenia)) { WszyscyOsobnicyBezTychZPierwotnejPopulacji = wyrzucanieOsobnika(doWyrzucenia, WszyscyOsobnicyBezTychZPierwotnejPopulacji); } } } // tu można wybrać rodzaj sortowania osobników: //WszyscyOsobnicyBezTychZPierwotnejPopulacji = posortujOsobnikowRosnaco(WszyscyOsobnicyBezTychZPierwotnejPopulacji); WszyscyOsobnicyBezTychZPierwotnejPopulacji = posortujOsobnikowMalejaco(WszyscyOsobnicyBezTychZPierwotnejPopulacji); var rng = new Random(Guid.NewGuid().GetHashCode()); int iloscOsobnikowZNastepnejPopulacji = rng.Next(0, (populacja.listaOsobnikow.Count - 1)); int iloscOsobnikowZPierwotnejPopulacji = populacja.listaOsobnikow.Count - iloscOsobnikowZNastepnejPopulacji; int index = 0; for (int i = 0; i < iloscOsobnikowZPierwotnejPopulacji; i++) { string imie = "Krolik " + i; Osobnik Potomek = new Osobnik(imie, populacja.listaOsobnikow[i]); Potomek.SetIndex(i); nowePokolenie.Add(Potomek); } for (int i = 0; i < iloscOsobnikowZNastepnejPopulacji; i++) { index = rng.Next(0, (WszyscyOsobnicyBezTychZPierwotnejPopulacji.Count - 1)); string imie = "Krolik " + i; Osobnik Potomek = new Osobnik(imie, WszyscyOsobnicyBezTychZPierwotnejPopulacji[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 = new Populacja(); NowePokolenie.SetListaOsobnikowNowaPopulacja(populacja.listaOsobnikow.Count, Potomkowie, populacja.poczatkiLista, populacja.konceLista, populacja.precyzjaLista); this.populacja = NowePokolenie; }