Jedną z metod epidemiologii jest modelowanie badanego zjawiska przez symulacje komputerowe. W trakcie symulacji obserwujemy rozprzestrzenianie się chorób wśród populacji, spośród której każdy osobnik jest reprezentowany w systemie jako agent. Możliwe interakcje między agentami wyznaczone są przez sieć społecznościową (reprezentowaną jako graf nieskierowany) oraz rodzaj agenta. Wynikiem symulacji jest poziom rozprzestrzenienia się zagrożenia oraz śmiertelność wśród agentów.
Należy napisać program Symulator Epidemii, który dla zadanych parametrów wejściowych przeprowadzi symulację na podstawie opisanego niżej modelu, a następnie stworzy raport z wynikiem.
akładamy, że epidemia rozwija się w populacji agentów, którzy zorganizowani są w sieć społecznościową zdefiniowaną jako graf nieskierowany. Symulacja zaczyna się od wylosowania tego grafu tak żeby średnia liczba znajomych była maksymalnie zbliżona do wartości śrZnajomych (tzn. żadna inna liczba krawędzi nie dawała innego lepszej średniej). W chwili obecnej rozważamy dwa rodzaje agentów: zwykłych i towarzyskich. Rodzaj agenta określany jest przez losowanie przy użyciu parametru prawdTowarzyski. Agenci w populacji mogą być zdrowi, zarażeni lub mieć odporność (są to grupy rozłączne). Wszyscy poza jednym wylosowanym agentem zaczynają jako zdrowi (bez odporności), a jeden zaczyna jako zarażony.
Na początku każdego dnia każdy zarażony agent może umrzeć (z prawd. śmiertelność) lub wyzdrowieć (z prawd. prawdWyzdrowienia). Agent, który umarł przestaje uczestniczyć w symulacji, a agent który wyzdrowiał nabiera odporność i już nigdy nie zachoruje.
Każdego dnia symulacji każdy agent może umawiać się na spotkanie z innymi agentami. Agent z prawd. prawdSpotkania decyduje czy chce się spotkać i jeżeli tak to losuje jednego ze swoich znajomych w przypadku agenta zwykłego lub ze swoich znajomych i znajomych swoich znajomych w przypadku agenta towarzyskiego (można planować spotkania i spotykać się z tym samym agentem wiele razy danego dnia). Następnie agent losuje jeden z pozostałych dni symulacji kiedy do takiego spotkania dojdzie. Agent powtarza planowanie spotkań dopóki nie wylosuje, że nie chce się spotykać.
Gdy już wszystkie nowe spotkania zostały zaplanowane, to dochodzi spotkań przypadających na dany dzień. Jeżeli któryś ze spotykających się agentów jest zarażony a drugi nie ma odporności, to z prawd. prawdZarażenia może dojść do zarażenia, wpp. takie spotkanie nie ma żadnego efektu. Zarażenie agenta ma następujące konsekwencje. Jeżeli to agent zwykły to dopóki nie wyzdrowieje będzie planował nowe spotkania z dwa razy mniejszym prawdopodobieństwem. Jeżeli to agent towarzyski to dopóki nie wyzdrowieje będzie planował się spotykać tylko ze swoimi bezpośrednimi znajomymi (nie ma to wpływu na to czy inni będą się decydować spotykać z nim i na spotkania, które już zaplanowano).