Package epidemic.engine
Class SimulationEngine
java.lang.Object
epidemic.engine.SimulationEngine
- All Implemented Interfaces:
Subject
Główny koordynator cyklu życia symulacji (wzorzec Fasada / Orchestrator).
Zarządza sekwencyjnym wywoływaniem poszczególnych menedżerów w obrębie pojedynczej
epoki (kroku czasowego). Gwarantuje deterministyczną kolejność faz:
zachowanie -> ruch -> infekcje -> medycyna -> rozród -> zgony.
Implementuje wzorzec Obserwatora (Subject), rozgłaszając zagregowane statystyki populacji po pomyślnym zakończeniu każdej epoki.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final BehaviourManagerprivate intprivate final InfectionManagerprivate final MedicalManagerprivate final MortalityManagerprivate final MovementManagerprivate booleanprivate final ReproductionManagerprivate final Statisticsprivate intprivate intprivate booleanprivate final Virusprivate final WorldMap -
Constructor Summary
ConstructorsConstructorDescriptionSimulationEngine(WorldMap world, Virus virus, MortalityStrategy mortalityStrategy, AgentFactory factory) -
Method Summary
Modifier and TypeMethodDescriptionvoidaddObserver(Observer observer) Rejestruje nowego obserwatora nasłuchującego zmian statystycznych.private WorldContextGeneruje globalny kontekst informacyjny dla bieżącej epoki.getStats()booleanisPaused()voidOblicza bieżące podsumowanie demograficzne (zdrowi, chorzy, zmarli) i wysyła je do wszystkich zarejestrowanych obserwatorów.voidremoveObserver(Observer observer) Wyrejestrowuje istniejącego obserwatora.voidUruchamia pojedynczy cykl symulacji.voidsetPaused(boolean paused) voidsetVaccineAvailable(boolean vaccineAvailable)
-
Field Details
-
world
-
virus
-
stats
-
observers
-
totalVirusDeaths
private int totalVirusDeaths -
totalNaturalDeaths
private int totalNaturalDeaths -
currentEpoch
private int currentEpoch -
vaccineAvailable
private boolean vaccineAvailable -
paused
private boolean paused -
behaviourManager
-
movementManager
-
infectionManager
-
medicalManager
-
reproductionManager
-
mortalityManager
-
-
Constructor Details
-
SimulationEngine
public SimulationEngine(WorldMap world, Virus virus, MortalityStrategy mortalityStrategy, AgentFactory factory)
-
-
Method Details
-
runNextEpoch
public void runNextEpoch()Uruchamia pojedynczy cykl symulacji. Przetwarza logikę biznesową dla wszystkich agentów, aplikuje zmiany na mapie i powiadamia podpiętych obserwatorów o nowym stanie środowiska. -
calculateContext
Generuje globalny kontekst informacyjny dla bieżącej epoki. Kontekst ten służy agentom jako "wiedza o świecie" (np. stopień rozprzestrzenienia wirusa), na podstawie której podejmują decyzje behawioralne.- Returns:
- Obiekt agregujący globalne parametry w danej epoce.
-
addObserver
Rejestruje nowego obserwatora nasłuchującego zmian statystycznych.- Specified by:
addObserverin interfaceSubject- Parameters:
observer- Obiekt implementujący interfejs Observer (np. moduł statystyk).
-
removeObserver
Wyrejestrowuje istniejącego obserwatora.- Specified by:
removeObserverin interfaceSubject- Parameters:
observer- Obiekt do usunięcia z listy subskrybentów.
-
notifyObservers
public void notifyObservers()Oblicza bieżące podsumowanie demograficzne (zdrowi, chorzy, zmarli) i wysyła je do wszystkich zarejestrowanych obserwatorów.- Specified by:
notifyObserversin interfaceSubject
-
setVaccineAvailable
public void setVaccineAvailable(boolean vaccineAvailable) -
getStats
-
isPaused
public boolean isPaused() -
setPaused
public void setPaused(boolean paused)
-