Studio del comportamento di swarm intelligence ai fini di ottenere la sincronizzazione di un sistema. Analisi sperimentali relativi ad un software sviluppato tramite Netlogo.
3. Firefly Sinchronization
Algoritmo basato sui concetti delle Swarm
Intelligence, ispirato al comportamento
naturale di alcune specie di lucciole.
Usato per ottenere la sincronizzazione dei
nodi di un sistema distribuito.
Funzionamento fondato su tre princìpi:
1. Feedback
2. Casualità
3. Elevata popolazione
4. Firefly Sinchronization
Esistono tre modelli differenti che
implementano la Firefly Sinchronization:
1. Phase Advance/Phase Delay
2. Mirollo-Strogatz
3. Ermentrout
5. Phase Advance/Phase Delay
Il modello più semplice.
Ogni nodo dispone di due parametri:
1. Lunghezza ciclo Δ
2. Fase φ
Si assume che tutti i nodi abbiano cicli
della stessa lunghezza Δ.
Alla rilevazione di un flash, ciascuna
lucciola imposta la propria fase a 1 (o
a 0).
Modello che ha molti limiti.
6. Mirollo-Strogatz Model
Estende il modello Phase Advance
Ogni nodo dispone di tre parametri:
1. Lunghezza ciclo Δ
2. Fase φ
3. Voltaggio
Si assume che tutti i nodi abbiano cicli
della stessa lunghezza Δ
Alla rilevazione di un flash, ciascuna
lucciola incrementa la propria fase di un
valore determinato dal Voltaggio
7. Ermentrout Model
Modello differente dai precedenti, su cui
è basato il lavoro del Caso-Studio
assegnatoci.
Ogni nodo ha cicli di lunghezza differente
Ogni nodo dispone di tre parametri:
1. Lunghezza ciclo naturale Δ
2. Lunghezza ciclo dinamica δ
3. Fase φ
Alla rilevazione di un flash, ciascun nodo
modifica la propria lunghezza ciclo di
una quantità variabile.
8. Ermentrout Model
La lunghezza variabile del ciclo per
ciascun nodo rende il modello di
Ermentrout molto adattivo.
Il modello di Ermentrout garantisce la
sincronizzazione anche in caso di:
1. Errori di comunicazione (crash dei nodi)
2. Aggiunta di nuovi nodi al sistema
3. Presenza di nodi con parametri differenti
9. Risultati del Caso-Studio
Il nostro Caso-Studio ha preso in considerazione una rete
con 1024 elementi, ciascuno con un valore δ compreso tra
0.85s e 1.15s, ottenendo i seguenti risultati:
Grafico relativo alle emissioni dei nodi dopo 60
secondi
Grafico relativo alle emissioni dei nodi in un
intervallo di 30ms centrato sul 60° secondo
10. Il nostro Progetto
Scopo del nostro progetto era ricreare
una simulazione di Netlogo che
riproponga il modello di Ermentrout
del Firefly Synchronization.
Per fare ciò, ci siamo basati sul
modello, presente di default nella
libreria di Netlogo, della Firefly
Synchronization, che proponeva il
modello di Phase Advance/Phase
Delay.
11. Il nostro Progetto
Lo skeleton del nostro codice può
essere riassunto in questo modo:
12. Il nostro Progetto
In particolare, nella procedura “look” è
presente la formula che si occupa di
modificare la δ delle lucciole. Tale
formula è la seguente:
Dove:
e
13. Il nostro Progetto
Nel nostro algoritmo di Netlogo è
possibile impostare diversi parametri:
14. Il nostro Progetto
Importante è l’impostazione della
“sync-window”, utilizzata per
analizzare quella da noi definita come
“Sincronizzazione Parziale”.
15. Il nostro Progetto
L’analisi dei dati delle simulazioni è
facilitata dall’impiego di due grafici,
uno mostrante la Sincronizzazione
Totale ed uno mostrante la
Sincronizzazione Parziale.
16. Il nostro Progetto
Ci siamo presi la libertà di inserire una
funzionalità aggiuntiva, rispetto al
modello analizzato dal Caso-Studio, al
nostro progetto.
Infatti, sebbene il nostro algoritmo si
fondi sul modello di Ermentrout,
abbiamo inserito la possibilità di
applicare il modello Phase
Advance/Phase Delay nel caso tutte le
lucciole si ritrovino ad avere la stessa
δ.
17. Test Effettuati
Ci siamo posti l’obiettivo di ottenere una
sincronizzazione parziale del 80% o
superiore del sistema.
Abbiamo eseguito 10 test per ciascuna
situazione iniziale così da ottenere un
banco dati sufficiente a trarre le nostre
osservazioni.
I test terminavano col raggiungimento della
sincronizzazione totale o al raggiungimento
del ciclo 10000.
18. Caso I
Sistema composto da 50 elementi,
Cycle-Length [9,16], Sync-Window=3, ε=0
Sync-Parziale media pari a 5608,4.
Sync-Totale mai ottenuta.
4030
5490
6160
6440
4060
8870
7650
3370
4406
5608.444444
0
1000
2000
3000
4000
5000
6000
7000
8000
9000
10000
1 2 3 4 5 6 7 8 9 10 media
Sync-Parziale
Sync-Totale
19. Caso II
Sistema composto da 70 elementi,
Cycle-Length [10,15], Sync-Window=3,
ε=0.
Sync-Parziale media pari a 1061,3.
Sync-Totale media pari a 1061,3.
1058
1087
1171
1072
1063 1060
1004
1028
1004
1066 1061.3
900
950
1000
1050
1100
1150
1200
1 2 3 4 5 6 7 8 9 10 media
Sync-Parziale
Sync-Totale
20. Caso III
Sistema composto da 25 elementi,
Cycle-Length [8,12], Sync-Window=3, ε=0.
Sync-Parziale media pari a 2652.
Sync-Totale media pari a 3269,1.
2800 2810
2280
2570
3560
2700
2250
2850 2870
1830
2652
3100
3500
2800
3150
3560
3900
3231
3950
3120
2380
3269.1
0
500
1000
1500
2000
2500
3000
3500
4000
4500
1 2 3 4 5 6 7 8 9 10 media
Sync-Parziale
Sync-Totale
21. Caso III.b
Variando solo ε: ε=1*10^-4
Sync-Parziale media pari a 3155,7.
Sync-Totale mai ottenuta.
2659 2730
3754
2801
4499
2930
3132
3560
2999
2493
3155.7
0
500
1000
1500
2000
2500
3000
3500
4000
4500
5000
1 2 3 4 5 6 7 8 9 10 media
Sync-Parziale
Sync-Totale
22. Caso III.c
Variando solo ε: ε=5*10^-4
Sync-Parziale media non calcolabile.
Sync-Totale mai ottenuta.
2890
3975
0
500
1000
1500
2000
2500
3000
3500
4000
4500
1 2 3 4 5 6 7 8 9 10 media
Sync-Parziale
Sync-Totale
23. Osservazioni
Tempo di sincronizzazione
inversamente proporzionale al numero
di fireflies.
Cycle-Length più performante [8,12].
Parametro ε ha una rilevanza
importante
Sincronizzazione anomala in alcuni
casi (e.g. caso II).
24. Possibile Lavoro Futuro
Sebbene il nostro algoritmo lo
permetta, non si sono analizzati casi
che prevedevano la rimozione o
l’aggiunta di nodi a simulazione in
corso.
Il parametro “Vision” è stato sempre
mantenuto al valore 50, in modo che
ciascuna lucciola vedesse ogni altra
lucciola nello spazio di simulazione.
25. Conclusioni
Si è sviluppato un algoritmo di Netlogo
basato sul Modello Ermentrout sulla
Sincronizzazione delle Lucciole.
I dati ottenuti mostrano che, impostando in
modo ponderato i parametri, l’algoritmo
funzioni con una certa efficienza.
A causa dei limiti prestazionali delle
macchine impiegate, non è stato possibile
effettuare test aventi popolazioni elevate
(>1000). Siamo però confidenti, a fronte dei
risultati ottenuti, che il nostro algoritmo sia
utilizzabile anche per la simulazione di reti
reali.