# `2-metabolismo` Questo progetto estende il progetto [`2-base`](https://github.com/Steffo99/turtle007/tree/2-base) aggiungendo nuovi parametri alle formiche del sistema. ## Ambiente ### Ricomparsa del cibo 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). ```lisp 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._ ### Velocità delle formiche Alle formiche è stato aggiunto il parametro `speed`. ```lisp 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. ```lisp repeat speed [ fd 1 t-try-pick-up-food if t-try-drop-food [ t-resupply ] ] ``` ### Metabolismo delle formiche Alle formiche sono stati aggiunti i parametri `metabolism` e `hunger`. ```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 In aggiunta ai feedback precedenti, in questo progetto abbiamo nuovi feedback: - **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. - **Positivo**: La casualità dei parametri delle nuove formiche favorirà quelle con parametri più adeguati all'ambiente. ## 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. 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 Con le impostazioni di default, il valore ideale del parametro `speed` sarà **2**: ![](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`. ## Branches Variazioni al modello sono disponibili nei branch di questo repository. In particolare, si evidenzia il branch: - [`2-evoluzione`](https://github.com/Steffo99/turtle007/tree/2-evoluzione), una variante di questo modello a cui viene aggiunta la possibilità per le formiche di riprodursi e passare i loro valori di `speed` e `metabolism` ai figli.