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:
parent
715ef08370
commit
71c444cdb6
1 changed files with 22 additions and 77 deletions
99
README.md
99
README.md
|
@ -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 un’evoluzione 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 all’ottimo*: dopo un certo periodo di tempo, la maggior parte delle formiche presenti nell’ambiente 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`.
|
|
Loading…
Reference in a new issue