From 35eed557aa3244f316274182ad9fd5224e491ea6 Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Mon, 8 Jun 2020 17:20:01 +0200 Subject: [PATCH] Integra README nel file NetLogo --- Progetto.nlogo | 119 +++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 101 insertions(+), 18 deletions(-) diff --git a/Progetto.nlogo b/Progetto.nlogo index 2596b7f..b72ad07 100644 --- a/Progetto.nlogo +++ b/Progetto.nlogo @@ -1140,41 +1140,124 @@ partner-radius Number @#$#@#$#@ -## WHAT IS IT? +# `2-evoluzione` -(a general understanding of what the model is trying to show or explain) +Questo progetto estende il progetto [`2-metabolismo`](https://github.com/Steffo99/turtle007/tree/2-metabolismo). In questa versione vengono aggiunti i parametri riproduttivi e i meccanismi di scelta del partner, che portano ad un’evoluzione del formicaio nel suo complesso. -## HOW IT WORKS +## Ambiente -(what rules the agents use to create the overall behavior of the model) +### Variabili globali -## HOW TO USE IT +Sono state aggiunte al modello le seguenti variabili globali: -(how to use the model, including a description of each of the items in the Interface tab) +- `reproduction-hunger`, la quantità di `hunger` al di sopra della quale una formica può tentare di riprodursi; +- `reproduction-cost`, la quantità di `hunger` che sarà sottratta alle formiche dopo essersi riprodotte; +- `partner-radius`, la distanza massima a cui una formica può scegliere il suo partner. -## THINGS TO NOTICE +### Comportamento delle formiche -(suggested things for the user to notice while running the model) +Il comportamento delle formiche è stato cambiato nei seguenti modi: -## THINGS TO TRY +#### Modificato: `t-die` -(suggested things for the user to try to do (move sliders, switches, etc.) with the model) +``` +to t-die + set ant-deaths ant-deaths + 1 + set ants-to-respawn ants-to-respawn + 1 + ; Die interrompe la funzione! + die +end +``` -## EXTENDING THE MODEL +Dopo che sono morte, le formiche non respawnano più. -(suggested things to add or change in the Code tab to make the model more complicated, detailed, accurate, etc.) +#### Modificato: `t-consume-food` -## NETLOGO FEATURES +``` +to t-consume-food + set hunger hunger - metabolism + if hunger <= 0 [ + t-die + ] + if hunger >= reproduction-hunger [ + t-hatch + ] +end +``` -(interesting or unusual features of NetLogo that the model uses, particularly in the Code tab; or where workarounds were needed for missing features) +Se le formiche hanno abbastanza cibo per riprodursi, chiameranno la procedura `t-hatch` descritta in seguito. -## RELATED MODELS +#### Aggiunto: `t-partners` -(models in the NetLogo Models Library and elsewhere which are of related interest) +``` +to-report t-partners + report other turtles in-radius partner-radius with [hunger >= reproduction-hunger] +end +``` -## CREDITS AND REFERENCES +Nella scelta dei partner, le formiche considerano solo le altre formiche entro `partner-radius` patch di distanza aventi abbastanza `hunger` per riprodursi. -(a reference to the model's URL on the web if it has one, as well as any other necessary credits, citations, and links) +> Nota: La funzione `in-radius` rallenta significativamente il modello all'aumentare delle formiche presenti dall'interno di esso. +> +> È possibile realizzare una versione più efficiente utilizzando: +> ``` +> to-report t-partners +> report other turtles-here with [hunger >= reproduction-hunger] +> end +> ``` +> +> Ciò però sacrifica la possibilità di decidere il raggio a cui le formiche si possono riprodurre, limitandolo al valore "0" (ovvero, la patch stessa in cui si trova attualmente la formica). + +#### Aggiunto: `t-hatch` + +``` +to t-hatch + let partners t-partners + if any? partners [ + let partner item 0 sort-on [hunger] partners + let parents (turtle-set self partner) + ask parents [ + set hunger hunger - reproduction-cost + ] + hatch-ants 1 [ + t-setup-ant + t-inherit parents + ] + set ant-hatches ant-hatches + 1 + ] +end +``` + +Se le formiche trovano almeno un partner con cui riprodursi, scelgono il partner con il valore di `hunger` più alto e creano una nuova formica, che eredita i valori di `speed` e `metabolism` dei genitori con `t-inherit` (descritta sotto). + +### Aggiunto: `t-inherit` + +``` +to t-inherit [parents] + let top-speed max [speed] of parents + let bottom-speed min [speed] of parents + set speed (bottom-speed + random (top-speed - bottom-speed + 1)) + + let top-metabolism max [metabolism] of parents + let bottom-metabolism min [metabolism] of parents + set metabolism (bottom-metabolism + random (top-metabolism - bottom-metabolism + 1)) +end +``` + +Le nuove formiche nate prendono come `speed` e `metabolism` un valore casuale tra i valori dei rispettivi parametri posseduti dai genitori. + +## Feedback del sistema + +In aggiunta ai feedback precedenti, in questo progetto abbiamo nuovi feedback: + +- **Positivo**: Le formiche con più `hunger` (praticamente la funzione *fitness* del modello), hanno più possibilità di riprodursi e passare i loro parametri ai figli. +- **Negativo**: Il `reproduction-cost` fa diminuire l'`hunger` dei genitori, rendendo più probabile la loro morte (e quindi sostituzione). + +## Dinamica del sistema + +Le formiche con i parametri migliori si riprodurranno più spesso, e passeranno i loro parametri ai loro figli. + +*Il sistema tende all’ottimo*: dopo un certo numero di ticks (~2100 con la configurazione predefinita), le uniche formiche restanti nel sistema saranno quelle con valori ideali per le variabili `speed` e `metabolism`; tutte le altre si saranno **estinte**. @#$#@#$#@ default true