TdP-prove-finali / Introduzione

Istruzioni e documentazione per la proposta e lo svolgimento delle prove finali relative al corso di Tecniche di Programmazione.
http://bit.ly/tecn-progr
Apache License 2.0
4 stars 13 forks source link

s244685 Simulatore di quarantena #50

Closed Debe98 closed 4 years ago

Debe98 commented 4 years ago

Studente proponente

s244685 Luca Debernardi

Titolo della proposta

Quarantine Simulator

Descrizione del problema proposto

Fornire uno strumento utile alla simulazione della diffusione di un virus all'interno del territorio italiano.

Descrizione della rilevanza gestionale del problema

Un simulatore come questo, malgrado tutte le ovvie semplificazioni del caso, fornisce uno strumento per simulare lo sviluppo di una pandemia sul territorio nazionale. La simulazione permetterebbe di analizzare i mutamenti della diffusione sulla base di alcune decisioni prese, sia a priori, sia in diretta. Ovviamente, data la scarsa conoscenza che conosciamo del virus, i risultati non sarebbero 100% confrontabili con la realtà, ma permetterebbero di comprendere come alcune decisioni possano influenzare in maniera determinante l'evolversi della pandemia.

Descrizione dei data-set per la valutazione

-Varie ed eventuali ritenute necessarie in corso d'opera.

Descrizione preliminare degli algoritmi coinvolti

Sarebbe una simulazione ad eventi che stima, giorno per giorno, l'evoluzione della diffusione a partire da un punto 0. La difficoltà è gestire un grafo di grandi dimensioni (8000 nodi (comuni)), impossibile anche solo immaginare un grafo completo. 2 possibilità (da verificare sperimentalmente):

La simulazione in quanto tale, per descrivere l'evolversi della situazione, deve aggiornare ad ogni iterazione 8000 nodi, più tutte le interazioni tra i nodi vicini --> Complessità iterazione O(V+A). Il numero di iterazioni dipende dall'obiettivo che viene dato e dai parametri e quindi non è stimabile a priori. Alla fine viene fornito un report con i principali avvenimenti e date le statistiche richieste.

Descrizione preliminare delle funzionalità previste per l’applicazione software

-Pagina parametri virus e simulazione. -Pagina simulazione (sia con parametri preimpostati, sia con la possibilità di prendere una decisione in corso d'opera). -Pagina risultati e possibilità di stampare un report della simulazione. -(Altro eventualmente ritenuto necessario).

Mail che avevo provato ad inviare

Vista una grave mancanza di idee (e la crisi attuale) avevo pensato di fare un "Simulatore di coronavirus".

L'idea sarebbe di creare un grafo con come nodi i comuni (le province e le regioni, a seconda del livello di aggregazione e della complessità).

Come archi (undirected e pesati) invece pensavo di usare un indice di contagio, direttamente proporzionale alle popolazioni dei due comuni (DB) e inversamente proporzionale alla distanza (LatLong dal DB).

Poiché sarebbe un ingestibile grafo completo pensavo o di limitare gli archi a tot km di distanza massima, con eccezione dei capoluoghi;

oppure optare per un modello a più aggregazioni:

comune: (comuni vicini, capoluogo provincia e cap regione),

provincia: (altre province regione),

regioni: (altre regioni).

L'obiettivo sarebbe fare una simulazione (con parametri il più possibile reali, ma in caso modificabili) di come si evolverebbero i contagi se mettessi in un comune n persone infette.

Mi piacerebbe fare sia una modalità con parametri di prevenzione impostati ante (es: lockdown provincia a 10k casi) sia con possibilità di agire in diretta attivando alcuni indicatori (es chiusura scuole, chiusura regioni...).

La difficoltà sarebbe stimare quanto questi interventi possano pesare sul contagio, non avendo dati certi cercherei valori verosimili.

Inoltre ragionavo anche di dividere (percentualmente, non ho trovato valori puntuali) la popolazione in macroetà (scuola 0-23 lavoro 23-65 etc..) per poter valutare l'impatto di alcune situazioni (es chiusura scuole o maggiore mortalità anziani).

Finita la simulazione fornirei delle statistiche di come si è sviluppata l'epidemia e di come è stata gestita.

Ho trovato un DB di base valido (https://raw.githubusercontent.com/Debe98/Comuni-Italiani-2018-Sql-Json-excel/master/create-database-comuni-italiani-2018.sql) che non saprei se integrare con altro, ma come base per il grafo va bene.

fulcorno commented 4 years ago

Caro Luca, innanzitutto scusa per il ritardo nella risposta. La proposta va bene, tenendo conto delle necessarie approssimazioni che hai già provato a descrivere. La parte più interessante e valutare l'andamento i funzione delle "strategie" adottate e che verranno simulate. Riguardo alla costruzione del grafo, il modo migliore sarebbe collegare i comuni confinanti, ma questa informazione mi pare difficile da ottenere: la distanza max può andare bene, ed in più collegherei in modo completo i capoluoghi di provincia (tra i quali solitamente ci si sposta in modo diretto anche in aereo o con treni o bus a lunga percorrenza).

Con queste precisazioni, la proposta è approvata.