TEMAT: Problem podziału zbioru

Transkrypt

TEMAT: Problem podziału zbioru
TEMAT: Problem podziału zbioru
REALIZACJA: Michał Mańkowski, Mateusz Madej, Piotr Sobierajski
Problem podziału zbioru polega na próbie podziału skończonego zbioru liczb całkowitych
na n podzbiorów, gdzie suma składników każdego z podzbiorów jest równa.
Program najpierw losuje populacje początkową (bazową), z której powstaje pokolenie
drugie, z drugiego trzecie aż do zadanej głębokości. Następnym krokiem jest krzyżowanie i
mutacja. Każde losowanie populacji początkowej to kolejna iteracja.
Krzyżowanie polega na kopiowaniu osobnika z rodzica P1 lub P2 w zależności od tego,
który z nich cechuje się mniejszym błędem. Dodatkowo zapobiega sytuacji gdy będziemy chcieli
kopiować tego samego osobnika po raz drugi do danego dziecka.
Mutacja polega na usuwaniu losowym przenoszeniu losowego osobnika do losowego
dziecka. Liczba mutacji zależy od błędu podziału. Im większy tym więcej mutacji.
Dane reprezentowane są przez klasę zawierającej jako element klasę biblioteki stl set<int>.
Jako wynik program generuje plik zawierający zbiory oraz ilość iteracji, ilość pokoleń i dokładność.
Wyniki przedstawiane są graficznie jako wykres kolumnowy pokazujący rozłożenie wartości liczb.
Każda kolumna to kolejny podzbiór.

Podobne dokumenty