Witam mam do napisania o to taki program
Napisać program symulujący ewolucję populacji osobników. Populacja może liczyć dowolną liczbę osobników. Każdy osobnik zawiera chromosom, który jest ciągiem liczb naturalnych. Chromosomy mogą być różnej długości. W każdym pokoleniu wylosowywanych jest k par osobników, które się następnie krzyżują. Krzyżowanie polega na tym, że u każdego osobnika dochodzi do pęknięcia chromosomu w dowolnym miejscu. Część początkowa chromosomu jednego osobnika łączy się z częścią końcową drugiego. Inaczej mówiąc: osobniki wymieniają się fragmentami swoich chromosomów. Jeden osobnik może być wylosowany do kilku krzyżowań. Po dokonaniu wszystkich krzyżowań w pokoleniu sprawdzane jest przystosowanie osobników do warunków środowiska. W tym celu dla każdego osobnika wyznaczana jest wartość f ∈ [0, 1] funkcji dopasowania. Osobniki, dla których wartość f < w (gdzie w jest progiem wymierania), są usuwane z populacji. Osobniki, dla których f > r (gdzie r jest progiem rozmnażania) są klonowane. A osobniki, dla których w 6 f 6 r pozostają w populacji, ale się nie rozmnażają.
Program uruchamiany jest z linii poleceń z wykorzystaniem następujących przełączników (kolejność przełączników jest dowolna):
- i plik wejściowy z populacją
- o plik wyjściowy z populacją
- w współczynnik wymierania w ∈ [0, 1]
- r współczynnik rozmnażania r ∈ [0, 1]
- p liczba pokoleń p
- k liczba k par osobników losowanych do krzyżowania
Plik wejściowy ma następującą postać: Każda linia zawiera jednego osobnika. Osobnik charakteryzowany jest chromosomem, który jest przedstawiony jako ciąg liczb naturalnych rozdzielonych białymi znakami. Przykładowy plik wejściowy zawierający populację złożoną z czterech osobników:
2 9 84 9 5 6 25 12 2 98 56 2 54 5 2 8 5 22 5 48 6 1 9 8 7 554 25 235 32
Plik wyjściowy ma identyczny format.
i mam do tego narzucone o takie wymagania:
- Celem projektu jest przećwiczenie implementacji i korzystania z dynamicznych
struktur danych (np. listy, drzewa) i zarządzania pamięcią w programie. Warunkiem sine qua non jest użycie w programie tych struktur. - Użycie bibliotecznych kontenerów (np. vector, list itd.) ani dynamicznie alokowanych tablic nie spełnia warunku z pkt. 1.
- Typu string można używać wyłącznie do przechowywania napisów, np. nazw plików itd. Nie jest dopuszczalne użycie tego typu do przechowywania ciągów danych,
np. ciągu liczb. - Przed implementacją konieczna jest akceptacja struktury danych przez prowadzącego zajęcia.
- Program powinien być podzielony na pliki z deklaracjami (.h) i definicjami
(.cpp). - Wszystkie funkcje muszą być skomentowane w doxygenie.
Ogólnie mówiąc mam problem z wymyśleniem funkcji która wygeneruje mi listę z losową ilością elementów (osobników) a każdy z elementów będzie kolejną listą z losową ilością liczb oraz z tym jak listy mają pękać w losowych punktach i wymieniać się z inną losową częścią w innej liście.
Bardzo prosił bym o pomoc w napisaniu tych kilku funkcji z resztą już sobie dam radę.