1
Fork 0
mirror of https://github.com/Steffo99/turtle007.git synced 2024-11-22 04:54:19 +00:00
Una serie di progetti NetLogo realizzati per l'esame di Apprendimento ed evoluzione in sistemi artificiali
Find a file
2020-05-05 16:50:33 +02:00
img Importa progetto dal vecchio repository 2020-05-05 16:44:57 +02:00
Progetto.nlogo Importa progetto dal vecchio repository 2020-05-05 16:50:33 +02:00
README.md Importa progetto dal vecchio repository 2020-05-05 16:44:57 +02:00

Da insiemi di agenti a sistemi swarm adattativi

Di Balugani Lorenzo, Calzolari Chiara e Pigozzi Stefano

Descrizione

Il progetto complessivo consiste in una serie di realizzazioni di un modello multiagente e di esperimenti su di esso; ogni nuova versione del modello è più raffinata della precedente. La versione iniziale non è un sistema collettivo; la versione finale realizza un sistema collettivo i cui elementi sono capaci di evolvere e di adattarsi allambiente.

Ambiente

Lambiente è un toroide composto da 150x150 patch.

Dopo il setup dell'ambiente, una percentuale configurabile di patch conterrà cibo (gialle), mentre le restanti saranno vuote (nere).

Termiti

Dopo il setup, nell'ambiente saranno presenti un numero configurabile di termiti.

Le termiti normalmente sono bianche, ma diventano arancioni quando trasportano cibo.

Esse (una alla volta, in ordine casuale) effettueranno ad ogni tick le seguenti azioni:

  1. Ricerca: la termite vaga per l'ambiente fino a quando non incontra un pezzo di cibo, che raccoglie, per poi allontanarsi dalla sua posizione attuale.
    1. Vaga: la termite ruota di un angolo configurabile di gradi, poi avanza di un passo.
    2. Raccoglie: la termite rimuove il cibo dalla patch in cui si trova e inizia a trasportarlo, cambiando colore.
    3. Allontana: la termite si gira in una direzione casuale, ed effettua un numero configurabile di passi in avanti detto rg_inerzia.
  2. Deposito: la termite vaga per l'ambiente fino a quando non trova un posto dove depositare il cibo, lo deposita e poi si allontana dalla sua posizione attuale.
    1. Vaga: la termite ruota di un angolo configurabile di gradi, poi avanza di un passo.
    2. Deposita: la termite inserisce il cibo nella patch in cui si trova, e smette di trasportarlo, tornando al suo colore originale.
    3. Allontana: la termite si gira in una direzione casuale, ed effettua un numero configurabile di passi in avanti detto rg_libera.

Dinamica del sistema

Le termiti spostano ad ogni tick un pezzo di cibo da una patch a un'altra, che si trova ad una certa distanza dalla prima, effettuando una unità di lavoro.

Così facendo, le termiti raccolgono il cibo in magazzini progressivamente sempre più compatti e vicini tra loro, che lentamente si uniscono fino a formare un unico magazzino comprendente tutto il cibo dell'ambiente.

Feedback del sistema

Nel sistema sono presenti due tipi di feedback:

  • Positivo: Più grande è un magazzino, più probabilità una termite avrà di capitarci sopra ed appoggiare lì il proprio cibo, portandolo a ingrandirsi nel tempo.
  • Negativo: Meno grande è un magazzino, meno probabilità una termite avrà di capitarci sopra ed appoggiare lì il proprio cibo, portandolo a ridursi nel tempo.

Esperimenti

Tutti gli esperimenti sottostanti sono stati eseguiti con i parametri di default qui elencati:

  • densita_materiale: 20
  • numero_termiti: 100
  • rg_inerzia: 20
  • rg_libera: 20
  • angolo_virata: 100

Esperimento 1: Variazioni al valore di rg_inerzia

Si sono misurati i magazzini formatosi dopo 1000 tick al variare del parametro rg_inerzia.

Dai dati sperimentali emerge che il parametro non influenza particolarmente il numero di magazzini; eventuali variazioni sono da ricondursi alla casualità dello stato iniziale di questo modello.

Tentativi di interpolazione non hanno fornito nessun risultato con i dati raccolti: il best fit è stato con la curva logaritmica, avente un misero R^2 = 0.263.

Dati sperimentali
rg_inerzia Run 1 Run 2 Run 3 Run 4 Run 5 Run 6 Run 7 Run 8 Run 9 Run 10 Media
5 4 6 6 6 7 6 6 6 4 5 5.6
25 4 5 4 5 4 5 5 4 4 4 4.4
45 6 4 2 5 4 7 6 7 4 6 5.1
55 4 5 4 5 3 5 4 4 4 6 4.4
65 5 5 5 7 6 6 5 5 5 6 5.5
85 4 4 4 4 6 5 5 3 4 3 4.2
Grafico

Esperimento 2: Variazioni al valore di rg_libera

Si sono misurati i magazzini formatosi dopo 1000 tick al variare del parametro rg_libera.

Dai dati sperimentali emerge che il valore del parametro rg_libera è inversamente proporzionale al numero di magazzini creatosi dopo 1000 tick.

Probabilmente l'andamento è esponenziale: con il parametro impostato a 5 i magazzini sono ancora talmente tanti da risultare incalcolabili, ma aumentarla anche solo a 10 e li rende un numero definito.
Interpolando con una curva esponenziale, si è ottenuto un R^2 = 0.989.

Dati sperimentali
rg_libera Run 1 Run 2 Run 3 Run 4 Run 5 Run 6 Run 7 Run 8 Run 9 Run 10 Media
5 N/D N/D N/D N/D N/D N/D N/D N/D N/D N/D N/D
10 7 9 9 7 9 7 8 9 8 8 8.1
15 7 6 7 7 6 7 6 8 7 7 6.8
20 5 5 6 5 5 7 6 6 4 5 5.4
25 4 5 4 4 5 4 4 4 4 5 4.3
30 4 3 3 3 3 2 3 4 4 3 3.2
35 3 2 2 2 2 2 3 3 2 3 2.4
40 1 2 1 2 1 2 2 3 2 1 1.7
Grafico

Esperimento 3: Variazioni al numero di termiti nel sistema

Si è misurato il tempo necessario perchè quantità le termiti formassero 6 raggruppamenti di cibo al variare delle quantità di termiti.

Si è ipotizzato che formare 6 raggruppamenti richieda un numero di unità di lavoro costante (dipendente dalla disposizione iniziale del cibo).

Effettuando gli esperimenti, si è verificata questa ipotesi: si è notata una dipendenza inversa tra il numero di tick richiesti e il numero di termiti presenti nel modello secondo la formula termiti * tick_richiesti = costante

Si è riusciti a determinare il valore della costante (con un margine di errore): esso è ~79875 unità di lavoro.

Dati sperimentali
Termiti Run 1 Run 2 Run 3 Run 4 Run 5 Run 6 Run 7 Run 8 Run 9 Run 10 Media tick Media unità di lavoro
10 7000 6000 6000 7500 6000 8000 9000 10000 6000 7000 7250 72500
100 700 800 800 700 900 800 900 600 700 700 760 76000
250 320 440 360 400 320 440 360 360 240 320 356 89000
500 180 160 120 120 180 200 160 240 160 120 164 82000
Media 79875
Grafico

Esperimento 4: Variazioni al valore angolo_virata

Si sono misurati i magazzini formatosi dopo 1000 tick al variare del parametro angolo_virata.

Dai dati sperimentali si nota che la variazione del numero dei magazzini è pressochè nulla; si può quindi dire che la variazione dell'angolo di virata non influenza il numero magazzini creati dalle termiti.

Dati sperimentali
Angolo_virata Valore medio magazzini Run 1 Run 2 Run 3 Run 4 Run 5
45 5 6 5 6 5 5.4
90 5 6 6 7 6 6.0
135 6 7 5 6 8 6.4
180 7 7 6 6 6 6.4
225 5 5 6 7 7 6.0
270 6 6 6 7 7 6.4
315 5 6 6 7 5 5.8
360 6 7 6 6 6 6.2

Grafico

Branches

Sono disponibili vari branch con variazioni a questo progetto: