 
Modellazione, analisi ed ottimizzazione di un piano di evacuazione della popolazione dalla zona rossa e gialla dei Campi Flegrei, utilizzando un algoritmo di Quickest Flow su una rete stradale reale.
Autori
- Obiettivo del Progetto
- Riferimenti Accademici
- Struttura del Progetto
- Flusso di Lavoro
- Dettagli dei Notebook
- creazione_grafo.ipynb
- fleg_flow.ipynb
- Scenari avversi
 
 
- Installazione ed Esecuzione
Lo scopo di Fleg-Flow è applicare un modello di ottimizzazione su rete per analizzare il piano di evacuazione previsto per la crisi vulcanica dei Campi Flegrei. Il progetto si propone di:
- Calcolare il tempo minimo stimato per evacuare l'intera popolazione della zona rossa e gialla, data la rete stradale e le sue capacità.
- Identificare i colli di bottiglia (strade critiche) che limitano la velocità dell'intera operazione.
- Simulare scenari avversi (es. blocco di strade o capacità ridotte) per valutare la resilienza del piano.
- Fornire una visualizzazione chiara ed interattiva del piano di flusso risultante.
La metodologia implementata trae ispirazione principale da:
- Fleischer, L., & Skutella, M. (2007). Quickest Flows Over Time.
Questo paper fornisce il framework teorico fondamentale per il progetto. Nello specifico, è stato implementato l'algoritmo di 2-approssimazione descritto nella Sezione 3, che riduce il complesso problema del flusso più rapido a una serie di problemi di flusso a costo minimo, risolvibili efficientemente. Nella cartella riassunto_paperè possibile leggerne i passaggi principali.
La repository è organizzata come segue:
fleg-flow/
│
├── creazione_grafo.ipynb       # (FASE 1) Prepara i dati e crea il grafo
├── fleg_flow.ipynb             # (FASE 2) Esegue l'ottimizzazione e l'analisi
│
├── campi_flegrei_features.json # Input: dati ufficiali della Protezione Civile
│
├── grafo_flegreo.graphml       # Output Fase 1: Grafo della rete stradale
├── sorgenti_pozzi.json         # Output Fase 1: Dati su sorgenti e pozzi
│
├── 📂 risultati/
│   └── mappa_evacuazione.html      # Output Fase 2: Mappa interattiva del piano
│
├── requirements.txt                # Lista delle dipendenze Python per pip
│
├──📂 riassunto_paper/
│    └──Quickest_Flow_Over_Time_paper_resume.pdf #Riassunto articolo di riferimento
│
└── README.md                       # Questo fileIl progetto è diviso in 2 fasi computazionali distinte, implementate in 2 notebook separati.
- Input: Un file GeoJSON contenente le aree di incontro e i comuni associati. Per il piano ufficiale, il file è scaricabile dal repository della Protezione Civile.
- Processo:
- Utilizza OSMnx per scaricare la rete stradale reale dell'area flegrea.
- Processa il grafo calcolando attributi personalizzati per ogni strada: tempo di transito (tau) e capacità di flusso (capacity).
- Legge il file GeoJSON per identificare le coordinate delle aree di incontro (pozzi) e i nomi dei comuni da evacuare (sorgenti).
- Mappa sorgenti e pozzi ai nodi più vicini sulla rete stradale scaricata.
 
- Output:
- grafo_flegreo.graphml: Un file che contiene il grafo della rete stradale completo e processato.
- sorgenti_pozzi.json: Un file che contiene i dizionari con le informazioni su sorgenti (ID del nodo e popolazione) e pozzi (ID del nodo e nome dell'area).
 
- 
Input: I file .graphmle.jsongenerati dalla Fase 1.
- 
Processo:
- Carica il grafo e i dati di sorgenti/pozzi.
- Implementa una ricerca binaria sul tempo totale di evacuazione T.
- Ad ogni iterazione, risolve un problema di flusso a costo minimo utilizzando il solutore Gurobi per determinare se un piano è fattibile per il tempo Tdato.
- Una volta trovato il tempo minimo di riferimento $$T^*$$ , calcola il piano di flusso ottimale associato.
- Analizza il piano, calcolando la saturazione di ogni strada per identificare i colli di bottiglia.
 
- 
Output:
- Analisi stampata a console con il tempo di evacuazione stimato e le strade più critiche.
- 
mappa_evacuazione.html: Una mappa interattiva (creata con Folium) che visualizza le rotte di evacuazione, colorandole in base al livello di saturazione.
 
Questo notebook è il motore di preparazione dei dati. La sua esecuzione è necessaria solo una volta o ogni volta che si desidera aggiornare la mappa stradale o i dati di input. Contiene tutte le logiche di interfacciamento con OSMnx e GeoPandas.
Per utilizzare il file ufficiale del Piano Nazionale Campi Flegrei, è possibile scaricarlo da questo link:
Riferimenti protezione civile:
Questo è il notebook principale per l'analisi. Una volta che i file di input sono stati generati, può essere eseguito più volte per testare diversi scenari senza dover riscaricare o riprocessare la mappa.
Il notebook è strutturato per facilitare l'analisi di scenari avversi. Modificando il grafo caricato prima dell'ottimizzazione, è possibile simulare:
- Blocco di strade critiche
- Riduzione della capacità
Il confronto tra i risultati del caso base e quelli degli scenari avversi permette di valutare la resilienza del piano di evacuazione.
- Python 3.9 o superiore
- Git
- Gurobi Optimizer installato e licenza attiva (la licenza accademica è gratuita).
- 
Clonare la repository git clone [https://github.com/vlb20/Fleg-Flow.git](https://github.com/vlb20/Fleg-Flow.git) cd fleg-flow
- 
Creare ed attivare l'ambiente virtuale: # Crea un ambiente virtuale chiamato 'fleg-env' python -m venv fleg-env # Attiva l'ambiente # Su Windows: .\fleg-env\Scripts\activate # Su macOS/Linux: source fleg-env/bin/activate 
- 
Installare le dipendenze: pip install -r requirements.txt