Class SimulationEngine

java.lang.Object
epidemic.engine.SimulationEngine
All Implemented Interfaces:
Subject

public class SimulationEngine extends Object implements 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 Details

    • world

      private final WorldMap world
    • virus

      private final Virus virus
    • stats

      private final Statistics stats
    • observers

      private final List<Observer> observers
    • totalVirusDeaths

      private int totalVirusDeaths
    • totalNaturalDeaths

      private int totalNaturalDeaths
    • currentEpoch

      private int currentEpoch
    • vaccineAvailable

      private boolean vaccineAvailable
    • paused

      private boolean paused
    • behaviourManager

      private final BehaviourManager behaviourManager
    • movementManager

      private final MovementManager movementManager
    • infectionManager

      private final InfectionManager infectionManager
    • medicalManager

      private final MedicalManager medicalManager
    • reproductionManager

      private final ReproductionManager reproductionManager
    • mortalityManager

      private final MortalityManager mortalityManager
  • Constructor Details

  • 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

      private WorldContext 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

      public void addObserver(Observer observer)
      Rejestruje nowego obserwatora nasłuchującego zmian statystycznych.
      Specified by:
      addObserver in interface Subject
      Parameters:
      observer - Obiekt implementujący interfejs Observer (np. moduł statystyk).
    • removeObserver

      public void removeObserver(Observer observer)
      Wyrejestrowuje istniejącego obserwatora.
      Specified by:
      removeObserver in interface Subject
      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:
      notifyObservers in interface Subject
    • setVaccineAvailable

      public void setVaccineAvailable(boolean vaccineAvailable)
    • getStats

      public Statistics getStats()
    • isPaused

      public boolean isPaused()
    • setPaused

      public void setPaused(boolean paused)