1
Fork 0
mirror of https://github.com/Steffo99/turtle007.git synced 2024-11-21 20:44:20 +00:00
Una serie di progetti NetLogo realizzati per l'esame di Apprendimento ed evoluzione in sistemi artificiali
Find a file
2020-06-17 18:29:32 +02:00
Progetto.nlogo Importa progetto dal vecchio repository 2020-05-05 16:50:33 +02:00
README.md Update README.md 2020-06-17 18:29:32 +02:00

1-group-counter

Questo branch estende il progetto 1-base implementandovi la funzionalità di conteggio automatico magazzini.

Descrizione

Ad ogni patch che contiene cibo viene assegnato un valore unico, alle patch vuote viene assegnato il valore -1. Quando il cibo viene spostato, cambia il suo id con quello del mucchio di cui fa parte, e ad ogni tick viene contato il numero di valori unici (0 escluso). Questo permette di calcolare il numero di mucchi in tempo reale, con un errore massimo di 1.

Il comportamento delle termiti rimane immutato.

Aggiunte / Modifiche

Aggiunto: variabili globali e delle patch

+ globals [step carry groups]
+ patches-own [id]

Modificato: setup

 to setup
   clear-all
   crt n_termiti
   ask turtles [set color white]
   ask turtles [setxy random-xcor random-ycor]
   ask turtles [set size 5]
   ask turtles [set shape "bug"]
   ask patches[
     if random-float 100 < densita_cibo[
       set pcolor yellow
     ]
   ]
+  let counter 0
+  ask patches with [pcolor = yellow] [set id counter
+    set counter counter + 1
+  ;set plabel id
+  ]
   set carry 0
   reset-ticks
 end

Aggiunge ad ogni patch un identificativo univoco.

Aggiunto: locate-group

+ to locate-group
+   ask patches with [pcolor = yellow]
+   [let tmp max-one-of neighbors [id]
+     set id [id] of tmp
+   ;set plabel id
+   ]
+   let _unique remove-duplicates [id] of patches
+   set groups length _unique
+   ask patches with [pcolor = black and id != -1] [set id -1]
+ end

Questa funzione permette di aggiornare gli id delle patch.

Modificato: go

 to go ;; questa è una procedura turtle
+  ifelse step < max_step or max_step = 0 [
+    ask turtles [cerca-cibo]
+    locate-group
+    ;plotxy step groups
+    set step step + 1
+    tick
+  ]
+  [ user-message (word "La simulazione ha raggiunto i " max_step " passi.")]
 end

Il go strutturato in questo modo permette di gestire il numero massimo di passi per la simulazione e richiama locate-groups ad ogni tick.