Simulazione sull’espansione del contagio da Coronavirus (COVID-19)

Se stai cercando informazioni sul Coronavirus (COVID-19) ti raccomando di visitare i seguenti siti ufficiali:

Informazioni sul Coronavirus in Italia (Ministero della Salute)

Informazioni sul Coronavirus nel mondo (Organizzazione Mondiale della Sanità)

Panoramica delle condizioni del Coronavirus (Organizzazione Mondiale della Sanità)

Domande e risposte sul Coronavirus (Organizzazione Mondiale della Sanità)

Io non sono un medico e il presente articolo è stato ispirato da quello pubblicato sul The Whashington Post: Why outbreaks like coronavirus spread exponentially, and how to “flatten the curve” 

Quello che mi interessa in questa sede è dare uno spunto di programmazione a tutti quelli che, come me, ora sono chiusi in casa ed hanno voglia di ingannare il tempo con qualcosa di diverso dal solito (insomma, buttandosi a fare un po’ di programmazione!).

Spero che questo sia anche un ottimo esempio del perché, in questo momento, dobbiamo fare di tutto per restare il più possibile a casa ed evitare il contatto con gli altri, per la nostra e la loro salute, anche se sono nostri familiari o amici.

Fatte queste premesse arriviamo a noi: quello che vogliamo fare è costruire un simulatore, similmente a quanto dimostrato dal The Whashington Post, su come si possa espandere un’epidemia e quanto sia utile ridurre al minimo l’interazione tra i vari membri della popolazione.

Il simulatore è costruito interamente in JavaScript utilizzando l’elemento canvas del HTML5.

La versione interattiva del simulatore, realizzato come illustrato nell’articolo, si trova in fondo all’articolo

Quello che vogliamo costruire è un simulatore come questo di seguito:

I parametri in input che vogliamo passare al simulatore saranno:

  1. la popolazione totale (800 nel mio caso)
  2. il numero di malati iniziali (ne basta anche solo 1)
  3. il numero di quelli che restano fermi
  4. il tempo di guarigione in millisecondi (3000 nel mio caso)

Giocando un po’ con il simulatore ci accorgeremo subito del perché restare a casa è in questo momento fondamentale.

Partendo dai parametri precedenti e impostando a 0 il numero di quelli fermi otterremo una curva simile alla seguente:

In questo caso il contagio ha raggiunto un picco massimo del 81% della popolazione, infettando tutti quanti alla fine della simulazione. Nella realtà questo picco rappresenta il massimo impatto sul sistema sanitario, che nella realtà sarebbe al collasso se dovesse avvenire qualcosa di simile.

Se aumentiamo il numero della popolazione che sta ferma (200 individui, ovvero il 25%) abbiamo una curva simile alla seguente:

Notiamo che il picco massimo è sceso leggermente, arrivando al 68%, ma restando comunque molto alto.

Attuando misure più restrittive e fermando il 75% della popolazione, ossia 600 individui su 800, avremo una curva come la seguente:

Il picco si è dimezzato in questo caso, arrivando ad un massimo del 39%. Con misure ancora più restrittive, arrivando a fermare 700 individui, quindi l’87,5% della popolazione, si arriva a picchi ancora inferiori, ma non inesistenti (si parla del 21%):

Questo modello rappresenta, sebbene in linea di massima, molto bene la situazione attuale. Le misure restrittive servono principalmente per evitare il collasso del sistema sanitario e dare la possibilità ai medici di occuparsi di tutti quanti i pazienti più gravi, cosa che in caso contrario sarebbe impossibile. Il contagio allungherà così la sua presenza nel tempo, ma verrà anche abbattuto il suo impatto sulla società.

Inutile dire come questa simulazione sia molto approssimativa e non tiene conto di altri fattori, tra il quale anche il decesso dei malati.

Detto tutto questo arriviamo al codice vero e proprio. Anzitutto creiamo l’interfaccia in HTML nel modo seguente:

Procediamo adesso con il codice in JavaScript, che riporto di seguito con i commenti all’interno del codice:

Infine riporto di seguito l’esempio funzionante, per chiunque lo volesse testare al volo (inserisci i parametri e premi INIZIA):

Popolazione Malati iniziali Fermi T. guarigione

Con un po’ di pazienza e qualche altro accorgimento (per esempio che i pallini non possano essere generati fuori dalle pareti) si può implementare la simulazione per avere anche diverse zone isolate.In questo caso notiamo come una zona isolata aiuti ulteriormente a ridurre il numero di contagiati e mantenere anche parte della popolazione sana, benché nessuno stia fermo.

Per costruire la zona isolata possiamo predisporre le pareti nel modo seguente:

Dobbiamo inoltre prendere qualche altro accorgimento, ma questo lo lascio per chi ha voglia di provarci per conto proprio. 🙂

Rispondi

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.