Class SEIRSModel

java.lang.Object
org.episteme.natural.medicine.epidemiology.SEIRSModel
All Implemented Interfaces:
UniversalDataModel

public class SEIRSModel extends Object implements UniversalDataModel
SEIRS (Susceptible-Exposed-Infected-Recovered-Susceptible) epidemic model.

Extends SEIR model by allowing loss of immunity, causing recovered individuals to return to the susceptible pool over time.

S → E → I → R → S

dS/dt = -βSI/N + ξR
dE/dt = βSI/N - σE
dI/dt = σE - γI
dR/dt = γI - ξR
*

Reference:
Zeigler, B. P., Praehofer, H., invalid input: '&' Kim, T. G. (2000). Theory of Modeling and Simulation. Academic Press.

Since:
1.0
Author:
Silvere Martin-Michiellot, Gemini AI (Google DeepMind)
  • Constructor Details

    • SEIRSModel

      public SEIRSModel(int population, int initialExposed, int initialInfected, Quantity<Frequency> transmissionRate, Quantity<Frequency> incubationRate, Quantity<Frequency> recoveryRate, Quantity<Frequency> immunityLossRate)
      Creates a SEIRS model.
      Parameters:
      population - total population
      initialExposed - initial exposed individuals
      initialInfected - initial infectious individuals
      transmissionRate - β
      incubationRate - σ (1/latent period)
      recoveryRate - γ (1/infectious period)
      immunityLossRate - ξ (1/immunity duration)
  • Method Details

    • getR0

      public Real getR0()
      Basic reproduction number R₀ = β/γ
    • getImmunityDuration

      public double getImmunityDuration()
      Average immunity duration in days
    • step

      public void step(Quantity<Time> dt)
      Advance simulation by dt
    • simulate

      public Real[][] simulate(Quantity<Time> duration, Quantity<Time> dt)
      Run simulation for duration
    • reset

      public void reset()
    • getSusceptible

      public Real getSusceptible()
    • getExposed

      public Real getExposed()
    • getInfected

      public Real getInfected()
    • getRecovered

      public Real getRecovered()
    • getTime

      public Quantity<Time> getTime()
    • getPopulation

      public int getPopulation()
    • getBeta

      public Quantity<Frequency> getBeta()
    • getSigma

      public Quantity<Frequency> getSigma()
    • getGamma

      public Quantity<Frequency> getGamma()
    • getXi

      public Quantity<Frequency> getXi()
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • seasonalFlu

      public static SEIRSModel seasonalFlu(int population, int initialCases)
      Seasonal flu: ~6 month immunity
    • commonCold

      public static SEIRSModel commonCold(int population, int initialCases)
      Common cold: ~2 week immunity
    • covidWaning

      public static SEIRSModel covidWaning(int population, int initialCases)
      COVID-19 variant with waning immunity (~1 year)
    • getModelType

      public String getModelType()
      Description copied from interface: UniversalDataModel
      Returns a unique identifier for the type of data model. Examples: "SPATIAL_GEOMETRY", "ECONOMIC_PORTFOLIO", "ARCHITECTURAL_PLAN".
      Specified by:
      getModelType in interface UniversalDataModel
    • getQuantities

      public Map<String, Quantity<?>> getQuantities()
      Description copied from interface: UniversalDataModel
      Returns the primary physical values associated with this model. This allows generic tools to extract and convert measurements.
      Specified by:
      getQuantities in interface UniversalDataModel