1
Fork 0
mirror of https://github.com/Steffo99/turtle007.git synced 2024-11-25 06:24:20 +00:00

Scrivi README.md

This commit is contained in:
Cookie 2020-06-08 16:25:20 +02:00 committed by Stefano Pigozzi
parent 715ef08370
commit 71c444cdb6
Signed by: steffo
GPG key ID: 896A80F55F7C97F0

View file

@ -1,102 +1,47 @@
# `2-metabolismo` # `2-evoluzione`
Questo progetto estende il progetto [`2-base`](https://github.com/Steffo99/turtle007/tree/2-base) aggiungendo nuovi parametri alle formiche del sistema. 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 unevoluzione del formicaio nel suo complesso.
## Ambiente ## Ambiente
### Ricomparsa del cibo ### Variabili globali
Se attivata tramite lo switch `food-respawn`, questa feature fa ricomparire il cibo all'interno dell'ambiente dopo `food-r-*` tick (con un offset di `food-o-*` tick). Sono state aggiunte al modello le seguenti variabili globali:
- `sgl_scorta`, che rappresenta la quantità di risorse al di sopra della quale una formica può tentare la riproduzione;
- `prezzo`: funzione della variabile turtles-own `scorta`, rappresenta il costo in risorse della riproduzione. Solitamente è settata a `1/10*scorta`.
```lisp ### Variabili delle formiche
to try-respawn-food-*
if ticks mod food-r-* = food-o-* [
add-food-*
]
end
```
_L'asterisco indica il numero della pila di cibo, da 1 a 3._ Le formiche hanno le stesse variabili turtles-own dei precedenti modelli. In particolare, per questo progetto ci saranno utili:
### Velocità delle formiche - `angolo_virata`;
- `velocità`;
- `metabolismo`.
Alle formiche è stato aggiunto il parametro `speed`. ###Comportamento delle formiche
```lisp al modello sono state aggiunte queste nuove funzionalità:
ants-own [speed]
```
Esso è inizializzato a un **numero intero casuale** tra `min-speed` (1) e `max-speed` (2) al momento di creazione della formica, e rappresenta quante volte una formica può agire in un tick. - `cerca-partner`: se la `scorta` di una formica eccede `sgl_scorta` e essa sta trasportando del cibo con sé (quindi `ant color = ant-carrying-color`), essa può cercare un partner per la riproduzione. Per fare ciò, individua tutte le formiche nei dintorni, in un range di TODO caselle, le ordina in base alla loro `scorta` e, se la formica con `scorta` maggiore ha un numero di risorse maggiore di `sgl_scorta`, sceglierà quella come partner.
```lisp ```TODO: funzione apposita```
repeat speed [
fd 1
t-try-pick-up-food
if t-try-drop-food [
t-resupply
]
]
```
### Metabolismo delle formiche - `crea_figlio`: viene creata una nuova formica. Creare un figlio è un processo dispendioso, la `scorta` dei genitori viene infatti diminuita in funzione della variabile `prezzo`. Ciascuna delle variabili turtles-own della nuova formica (ossia `velocità`, `metabolismo` e `angolo_virata`) assumerà il valore della corrispondente variabile di uno dei due genitori, scelto a caso.
Alle formiche sono stati aggiunti i parametri `metabolism` e `hunger`. ```TODO: funzione apposita```
```lisp
ants-own [metabolism hunger]
```
Il parametro `hunger` rappresenta quanta "fame" ha una formica; alla creazione, le formiche partiranno con `max-hunger` (400) punti.
Ogni tick, l'`hunger` di ogni formica perde `metabolism` punti, che saranno ripristinati a `max-hunger` solo se la formica porterà una patch di cibo al formicaio.
Se una formica scende sotto 1 punto `hunger`, essa morirà, e un'altra sarà creata nel nido al suo posto con parametri diversi.
```lisp
to t-consume-food
set hunger hunger - metabolism
if hunger <= 0 [
t-die
]
end
to t-resupply
set hunger max-hunger
end
to t-die
set ant-deaths ant-deaths + 1
set ants-to-respawn ants-to-respawn + 1
die
end
to respawn-ants
create-ants ants-to-respawn [t-setup-ant]
set ants-to-respawn 0
end
```
## Feedback del sistema ## Feedback del sistema
In aggiunta ai feedback precedenti, in questo progetto abbiamo nuovi feedback: In aggiunta ai feedback precedenti, in questo progetto abbiamo nuovi feedback:
- <span style="background-color: lightcoral; color: darkred;">**Negativo**: Le formiche con `metabolism` troppo alto o `speed` troppo bassa per consegnare cibo al formicaio in tempo moriranno, lasciando il posto a nuove formiche con parametri diversi.</span> - <span style="background-color: lightgreen; color: darkgreen;">**Positivo**: Le formiche con più scorta, e quindi con una *fitness* più alta, hanno più possibilità di riprodursi e passare i loro parametri ai figli, che quindi, probabilmente, avranno fitness alta a loro volta e si riprodurranno spesso.</span>
- <span style="background-color: lightgreen; color: darkgreen;">**Positivo**: La casualità dei parametri delle nuove formiche favorirà quelle con parametri più adeguati all'ambiente.</span> - <span style="background-color: lightcoral; color: darkred;">**Negativo**: Il costo della riproduzione fa diminuire la `scorta` dei genitori, evitando che essi si riproducano a dismisura (TODO: questo è il feddback giusto?).</span>
## Dinamica del sistema ## Dinamica del sistema
Le formiche continueranno a portare cibo al formicaio all'infinito; le meno adeguate di esse moriranno, mentre le più adeguate continueranno a vivere. Le formiche con i parametri migliori avranno più possibilità di riprodursi, e passare suddetti parametri ai figli.
*Il sistema tende allottimo*: dopo un certo periodo di tempo, la maggior parte delle formiche presenti nellambiente avrà le variabili ideali per il suddetto.
Con il progredire dei tick, ogni parametro avrà un valore che sarà prevalente nelle formiche: esso sarà il valore ideale del parametro nell'ambiente corrente.
## Osservazioni ## Osservazioni
Con le impostazioni di default, il valore ideale del parametro `speed` sarà **2**: TODO
![](img/speed.png)
Invece, il valore ideale del parametro `metabolism` sarà 1:
![](img/metabolism.png)
Si ipotizza che qualsiasi siano i valori minimi e massimi di `speed` e `metabolism`, verranno favoriti **valori più alti** di `speed` e **valori più bassi** di `metabolism`.