Skip to content

xZekro51/EpidemiologicSimulator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Epidemiologic Simulator

Un simulatore Epidemiologico basilare sviluppato per un progetto durante il CdL "Metodologie di Programmazione". Il simulatore prende in input vari parametri, elencati qui di seguito.

  • Numero persone nella Popolazione (P)
  • Costo del tampone (C)
  • Risorse dello stato (R)
  • Infettività della malattia (I)
  • Possibilità di sviluppo di sintomi (S)
  • Letalità (inteso nel senso di possibilità che un malato muoia) (L)
  • Durata della malattia (D)
  • Incontri medi delle persone ogni giorno (V)

Inoltre vi è un parametro Strategy che gestisce la strategia che il governo attuerà contro l'epidemia. In un paragrafo seguente illustrerò come funziona e come ampliarlo.

Dependencies

Il simulatore utilizza solo la libreria esterna org.reflections, reperibile al seguente link.

Interfaccia Grafica

L'interfaccia grafica è stata sviluppata utilizzando Swing. E' stata aggiunta anche una helper class per aggiungere facilmente un label vicino ad un JComponent.

Progettazione

Il simulatore è stato sviluppando seguendo il principio che ogni oggetto dovrebbe gestirsi autonomamente, ciò implica che ad esempio il metodo Tampone() che controlla se un individuo è contagioso o meno, è dichiarata all'interno della classe Person.

Strategie

Le strategie sono state implementate dinamicamente. Per aggiungere una nuova strategia è necessario aggiungere una nuova classe che implementi l'interfaccia Strategy ed i metodi ApplyStrategy e Subscribe. In particolare il metodo Subscribe riceve in input un oggetto di tipo StrategyListener che viene utilizzato per rendere dinamica l'applicazione delle strategie. Queste infatti possono essere attivate in 5 momenti diversi a seconda dello StrategyDelegate a cui la nostra strategia si iscriverà. Questi sono:

  • OnBeforeContagion
  • OnAfterContagion
  • OnAfterHealthUpdate
  • OnAfterResourceUpdate
  • OnDayEnd

Il simulatore implementa già 4 tipi di strategie.

Di seguito si trovano elencati i parametri utilizzati, ed i valori medi su 10 simulazioni.

P = 10000, C = 5, R = 450000, I = 70, S = 20, L = 10, D = 45, V = 2

Strategy\Values Common Outcome Positive Outcome Dead Final Resources
No Action Economy_Collapse 1 191 -11657
Light Social Distancing Eradicated 10 2 220534
Heavy Social Distancing Eradicated 10 1 74353
Encounter Tracing Economy_Collapse 4 88 168790

Da questa tabella si può notare come noonostante la strategia dell'Heavy Social Distancing sia quella più vessante a livello economico, è anche la migliore in quanto quella che genera meno morti.

Considerazioni

Come visto dalle simulazioni, il simulatore non è adatto per effettuare stime realistiche, in quanto basato su un modello che prende in considerazione solo alcuni fattori. Nonostante ciò si può comunque vedere, seppur sommariamente, come alcune strategie siano più efficaci di altre oppure le falle di logica in alcune strategie.

About

A basic Epidemiologic simulator made in the degree course "Metodologie di Programmazione".

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages