Progetto d'esame, in linguaggio Python, per la materia Artificial Intelligent System: Intelligent Models (A.A. 2022/2023).
- Castaldelli Luca
- Cerami Cristian
Epidemic Super Spreaders in Networks - Progetto 1
Social Graph and Complex Network
Lo scopo è quello di implementare un sistema per simulare la diffusione di un'epidemia in una rete complessa e di rilevarne i nodi Super Spreader.
Nel modello i nodi rappresentano individui che, per ogni passo temporale, possono essere infettati dal contatto con i loro nodi vicini nella rete.
Per la diffusione dell'infezione viene adottata una variante del modello SIR (Susceptible Infected Recover), dove ad ogni passo temporale viene calcolata la diffusione epidemica rispetto ai parametri di configurazione del sistema.
In particolare si ha che:
- Tutti i nodi sono inizialmente in stato
suscettibile (susceptible)
e possono diventare infetti - Una percentuale
p_init
di nodi iniziali viene messa in statoinfetto (infected)
- Se un nodo diventa infetto, passa allo stato
guarito (recovered)
dopo un arco temporale dit_rec
e nel mentre non può essere infettato - Un nodo guarito diventa nuovamente suscettibile dopo un arco temporale
t_sus
- Ad ogni step temporale
t_step
, per ogni nodo infetto, vi è una probabilitàp_trans
di trasmettere la malattia a ciascuno dei suoi vicini non infetti - I cambi di stato dei nodi sono
sincroni
ed avvengono tutti alla fine dello step temporale
Il sistema dovrebbe consentire:
- Il caricamento di qualsiasi grafo in formato CSV, sottoforma di lista di archi
- La configurazione dei parametri
- L'avvio ed esecuzione di una o più simulazioni con gli stessi stati iniziali del nodo
- La visualizzazione delle statistiche e metriche
- La visualizzazione e una rappresentazione grafica del grafo prima, durante o alla fine della simulazione colorando i nodi in base al loro stato
- Il candidato deve sviluppare una tecnica che, attraverso una serie di simulazioni casuali, permetta di trovare e mostrare i nodi
super spreader
più rilevanti del grafo passato in input
Questa installazione è per Linux.
Per Windows attualmente vi è un problema con il package PyGraphviz che a sua volta si basa sul software Graphviz che a sua volta basa il funzionamento di alcuni algoritmi implementati (come quello per la rimozione dell'overlap) su alcune librerie che purtroppo sono compatibili solo con Linux. Questo problema, rilevato per la prima volta nel 2017, risulta essere ancora un open issue
nel relativo repository Github.
Prima di scaricare questo repository è consigliato creare un ambiente virtuale sul quale verranno installati i packages necessari.
Se vuoi creare un ambiente virtuale esegui tutti gli step, altrimenti salta al punto 6.
Apri un terminale ed esegui:
python3 -m venv /path/to/<nome-virtual-envirnment>
cd /path/to/<nome-virtual-envirnment>
source bin/activate
git clone https://github.com/Meht-evaS/SNA-Project.git
cd SNA-Project
chmod +x install.sh
./install.sh