Sugarscape Relazione

  • Uploaded by: Alberto Lusoli
  • 0
  • 0
  • December 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Sugarscape Relazione as PDF for free.

More details

  • Words: 22,900
  • Pages: 67
Università degli studi di Modena e Reggio Emilia Facoltà di Scienze della Comunicazione e dell'Economia

CLS: Economia e Gestione delle Reti e dell'Innovazione

Insegnamento: Tecniche e modelli di simulazione Docente: Marco Villani

SugarScape

A.A. 2006 - 2007

INDICE 1. INTRODUZIONE ---------------------------------------------------------------------------------------- - 2 2. IL MODELLO--------------------------------------------------------------------------------------------- - 3 2.1. IL MONDO ----------------------------------------------------------------------------------------------- - 4 2.2. GLI AGENTI --------------------------------------------------------------------------------------------- - 5 3. DINAMICA DEL MODELLO------------------------------------------------------------------------- - 6 4. IMPLEMENTAZIONE DEL MODELLO ---------------------------------------------------------- - 8 4.1. IMPLEMENTAZIONE DEL MONDO --------------------------------------------------------------------- - 8 4.2. IMPLEMENTAZIONE DEGLI AGENTI ------------------------------------------------------------------- - 9 4.3. IMPLEMENTAZIONE DELLA DINAMICA -------------------------------------------------------------- - 10 5. PRIME SIMULAZIONI--------------------------------------------------------------------------------- 12 5.1. PRIMO ESPERIMENTO: COMPORTAMENTO DELLE PRINCIPALI CARATTERISTICHE ------------- - 12 5.2. SECONDO ESPERIMENTO: VARIAZIONE DEL NUMERO INIZIALE DI AGENTI --------------------- - 16 6. CAPACITÀ PORTANTE ------------------------------------------------------------------------------- 18 6.1. TERZO ESPERIMENTO: CAPACITÀ PORTANTE AL VARIARE DELLE RISORSE DEL TERRENO --- - 19 6.2. QUARTO ESPERIMENTO: CAPACITÀ PORTANTE AL VARIARE DEL TIPO DI AGENTE------------- - 22 7. COEFFICIENTE DI GINI------------------------------------------------------------------------------ 28 8. SUGARSCAPE CON MORTE NATURALE E NASCITA DI NUOVI AGENTI---------- 30 9. SUGARSCAPE CON RIPRODUZIONE SESSUATA ------------------------------------------- 34 9.1. LA GENETICA ------------------------------------------------------------------------------------------ - 34 9.2. REGOLE DI EREDITARIETÀ BIOLOGICA -------------------------------------------------------------- - 36 9.3. QUINTO ESPERIMENTO: COMPORTAMENTO DELLE PRINCIPALI CARATTERISTICHE ------------ - 38 9.4. SESTO ESPERIMENTO: CAPACITÀ PORTANTE DEL SISTEMA --------------------------------------- - 47 9.4.1 Capacità portante al variare del numero di agenti iniziali--------------------------------- 49 9.4.2 Capacità portante al variare delle risorse del terreno-------------------------------------- 53 9.4.3 Capacità portante al variare del tipo di agente---------------------------------------------- 56 9.5. LA DINAMICA DELLE POPOLAZIONI ----------------------------------------------------------------- - 59 CONCLUSIONI---------------------------------------------------------------------------------------------- 64 APPENDICE: QUESTIONI APERTE------------------------------------------------------------------ 66 -

-1-

1. Introduzione SugarScape è un modello di simulazione sociale fondato su agenti. Il fenomeno simulato ed analizzato in questa sede è il comportamento di una specie vivente relativamente alla sopravvivenza, alla distribuzione della ricchezza e alla riproduzione. La domanda alla quale vogliamo rispondere è: da un mondo molto semplice, composto da entità elementari che interagiscono con semplici regole locali e da un ambiente molto semplice, possono emergere comportamenti complessi? Nei prossimi paragrafi descriveremo il modello, la sua dinamica e la sua implementazione, illustreremo e valuteremo i risultati ottenuti dalle simulazioni e complicheremo man mano il funzionamento del mondo sul quale operiamo gli esperimenti. Dapprima nel nostro modello gli agenti non sono in grado di riprodursi e muoiono per mancanza di risorse. In un secondo tempo lo modifichiamo facendo in modo che gli agenti che vi operano possano morire anche di vecchiaia, oltre che per mancanza di energia, e introducendo la sostituzione di agenti morti con la nascita di nuovi agenti. Infine l’ultima modifica consiste nell’eliminare la sostituzione di agenti morti e nell’introdurre la possibilità di riprodursi per riproduzione sessuata; questo ci permette di imitare un po’ meglio la realtà e di imitare la selezione naturale darwiniana per verificarne l’operato.

-2-

2. Il modello SugarScape è un modello definito dal basso in cui operano agenti eterogenei dal punto di vista delle capacità visive (visione) ed esigenze individuali (metabolismo). In questo modello lo zucchero, variamente distribuito sul territorio, è l’unica risorsa ed è limitata. Esso è definito dal basso in quanto il punto di partenza nella costruzione del modello è l’individuo: una volta creati gli agenti attribuiamo loro delle regole di comportamento e facciamo procedere il sistema nel tempo, per scoprire quale struttura emerga a livello macroscopico. Il modello SugarScape è stato realizzato con la scrittura di un programma attraverso una programmazione di tipo procedurale. Per la realizzazione del programma è stato utilizzato l’ambiente di sviluppo di Matlab. Nel modello il trascorrere simulato del tempo provoca cambiamenti nel mondo e provoca azioni sotto forma di messaggi inviati agli agenti, i quali a loro volta producono altri cambiamenti e così via. SugarScape è un mondo bidimensionale soggetto a delimitazioni (i bordi opposti infatti non si toccano) in cui mondo, agenti, risorse, regole e azioni sono regolabili in modo parametrico.

-3-

2.1. Il mondo Il modello SugarScape è costituito da un ambiente bidimensionale non toroidale che può essere interpretato come un automa cellulare dotato di regole per la produzione delle risorse sul territorio. L’ambiente è un mondo chiuso, le cui dimensioni sono per default 50x50, in cui ogni cella contiene un certo ammontare di risorse, che chiameremo “zucchero”. Ogni cella ha una capacità massima di zucchero ed una velocità di recupero che segue una crescita graduale ad ogni unità di tempo, che chiameremo “passo”. Ogni cella ha la stessa velocità di recupero ma una diversa capacità massima; in questo modo si ottiene un mondo in cui i livelli di zucchero sono quantizzati: le celle dello SugarScape possono contenere solo esattamente 0, 1, 2, 3 o 4 unità di zucchero. Al massimo, quando ogni cella contiene esattamente lo zucchero corrispondente alla sua capacità, si ottiene una matrice come quella in figura 1, in cui ad ogni diverso colore corrisponde un diverso livello di zucchero: sopra la collina il livello di zucchero è massimo e diminuisce man mano che si scende. 5

10

15

20

25

30

35

40

45

50 5

10

15

20

25

30

35

40

45

50

Figura 1: matrice delle capacità massime di zucchero che le celle possono assumere nel mondo. Il marrone corrisponde a 4 unità di zucchero, il giallo a 3 unità, l’azzurro a 2 unità e il blu ad 1 unità.

Il mondo iniziale è molto semplice, ma consente di verificare gli effetti che le condizioni ambientali (quantità di zucchero, tasso di rinnovamento dello zucchero nel territorio e regole locali di ricerca del cibo) determinano sulle migrazioni e sulla distribuzione degli agenti (per spazio, ricchezza, ...).

-4-

2.2. Gli agenti Il mondo è abitato da agenti. Essi hanno una determinata posizione, inizialmente casuale, e non è prevista la possibilità di sovrapposizione. Ogni agente è dotato di un “nome” che lo identifica, di una vista che gli permette di guardare più o meno lontano nelle quattro direzioni principali, di un metabolismo, e quindi di un consumo fisso che gli garantisca la sopravvivenza, e di una scorta di zucchero iniziale uguale per tutti. Gli agenti sono dotati della capacità di conservare il cibo raccolto in eccesso rispetto al proprio fabbisogno. Un agente muore se le sue scorte di cibo sono minori di zero. Ogni agente ha la capacità di muoversi nell’ambiente e quindi di cambiare la propria posizione nel mondo; il movimento degli agenti avviene in diversi istanti di tempo quindi essi si spostano uno alla volta, non tutti insieme. Un esempio degli agenti che popolano il mondo è rappresentato in figura 2

5

10

15

20

25

30

35

40

45

50 5

10

15

20

25

30

35

40

45

50

Figura 2: mondo al massimo della sua capacità abitato da 50 agenti

-5-

3. Dinamica del modello Lo scopo degli agenti è quello di sopravvivere in un mondo che evolve in un tempo discreto; per poter sopravvivere essi si muovono nel mondo cercando di raccogliere più zucchero possibile. Il trascorrere simulato del tempo provoca determinate azioni secondo determinate regole. Prima di definire tali regole è necessario distinguere due grandezze utilizzate per scandire il tempo:  

passo turno

Il passo corrisponde ad un ciclo completo di aggiornamento ed è suddiviso in n turni, dove n corrisponde esattamente al numero di agenti vivi a quel passo. Il turno identifica il tempo che intercorre tra la selezione di un agente e la fine delle sue azioni. Ad ogni passo il mondo aumenta di una unità la quantità di zucchero di ogni sua cella, relativamente alla capacità massima della stessa. Ad ogni turno viene selezionato a caso un agente. L’agente selezionato ha la possibilità di muoversi seguendo le seguenti regole:    



il movimento degli agenti avviene lungo quattro direzioni: avanti, dietro, a sinistra e a destra rispetto alla posizione dell’agente; l’agente in un movimento può raggiungere celle con una distanza massima determinata dalla “visuale” dell’agente stesso; l’agente non può spostarsi in una cella occupata da un altro agente; l’agente si muove nella cella con maggior valore di appetibilità: l’appetibilità è determinata dalla quantità di zucchero presente nella cella e dalla distanza della cella rispetto alla posizione dell’agente. Infatti l’agente sceglie di spostarsi nella cella contenete una maggior quantità di zucchero, nel caso in cui ci siano più celle con la stessa quantità di zucchero l’agente sceglie di spostarsi nella cella meno distante da lui; nel caso in cui ci siano più celle con la stessa quantità di zucchero e con la stessa distanza dall’agente, quest’ultimo sceglie a caso in che cella muoversi. Questo procedimento avviene anche se tutte le celle raggiungibili dall’agente hanno una quantità di zucchero pari a zero.

In altre parole l’agente selezionato guarda lungo le direzioni che può osservare, cerca la cella con maggior appetibilità e la raggiunge, ossia cambia la sua posizione nel mondo. Una volta spostatosi, l’agente raccoglie la quantità di zucchero presente in quella cella e la aggiunge alle sue scorte, lasciando vuota la cella. Non esiste un tetto massimo per la scorta di zucchero dell’agente. A questo punto sono necessarie due annotazioni. In primo luogo è importante sottolineare che non è detto che in un passo tutti gli agenti si muovano, in quanto il turno è selezionato casualmente. È quindi possibile che in un passo un agente sia selezionato – e quindi si muova – più di una volta oppure che esso non sia selezionato affatto. La seconda annotazione riguarda il fatto che l’unico caso in cui l’agente selezionato non si muove è rappresentato dall’eventualità che tutte le celle visibili siano occupate da altri agenti oppure escano dai confini del mondo. In questo caso l’agente prova a spostarsi ma non ci riesce e il suo tentativo è comunque considerato valido nel conteggio degli n turni; in altre parole il mancato spostamento viene considerato dal programma come un movimento, anche se non è stato un effettivo movimento ma solo un tentativo di movimento.

-6-

Alla fine di tutti i turni (torniamo quindi nell’ordine dei passi) ad ogni agente, indipendentemente dal fatto che si sia spostato o meno, si sottrae dalla sua scorta la quantità di zucchero necessaria per la sopravvivenza, corrispondente al suo metabolismo. Se la sua scorta è minore di zero, l’agente muore, venendo così eliminato dal mondo insieme a tutte le sue caratteristiche. A questo punto inizia il passo successivo ed il ciclo si ripete: il mondo viene aumentato di una unità di zucchero in tutte le sue celle, vengono selezionati gli agenti che si muovono, acquistano e consumano risorse ed, eventualmente, muoiono. Ogni passo corrisponde dunque ad un ciclo completo di aggiornamento.

-7-

4. Implementazione del modello Entrando più nello specifico, esamineremo ora come abbiamo creato il nostro modello SugarScape servendoci dell’editor di Matlab.

4.1. Implementazione del mondo Come abbiamo spiegato nel paragrafo precedente, ogni cella contiene una certa quantità di zucchero, che non è uguale per tutte. La capacità massima delle celle è determinata da due colline che sono state implementate sulla base della funzione gaussiana1 (cfr 4.). Inizialmente, quindi, abbiamo creato la matrice “capacità” (figura 1) mediante la seguente funzione: ( y '0 − j ) 2

( x '0 − i ) 2

z (i, j ) = A' * e

σ '2 x

*e

σ '2 j

in cui i e j sono gli indici di riga e di colonna e in cui: A’ = altezza della collina X’0 = coordinata x Y’0 = coordinata y σ’x = semi larghezza x σ’y = semi larghezza y I valori dei parametri sono, per default, i seguenti: Parametri A’ X’0 Y’0

σ’x

Collina 1 13 38 4 15

Collina 2 38 13 4 15

σ’y

15

15

Tabella 1: valori dei parametri della funzione per determinare le colline

Abbiamo poi creato una matrice “mondo”, delle stesse dimensioni della matrice capacità, in cui inizialmente ogni cella ha un valore casuale di zucchero che va da 0 alla capacità massima che può assumere una cella nel mondo, in questo caso 4. Per evitare che una cella abbia più zucchero di quanto ne possa contenere abbiamo messo in relazione la matrice mondo con la matrice delle capacità, richiamando il minimo valore fra le due e ottenendo in tal modo la matrice del mondo ottimizzata, ossia in cui ogni cella contiene al massimo una quantità di zucchero pari alla sua capacità.

1

La funzione gaussiana è una funzione della forma: ƒ(x) = ae-(x-b)^2 /c^2 per qualche costante reale a>0, b e c.

-8-

4.2. implementazione degli agenti Per realizzare e rappresentare gli agenti abbiamo creato, in primo luogo, un vettore di strutture (vettore “ag”) che contiene tutti gli agenti con le loro relative caratteristiche e, in secondo luogo, la matrice “posizione” che contiene diversi valori per indicare dove sono collocati gli agenti nel mondo. Per quanto riguarda il vettore ag, i campi in esso contenuti relativamente ad ogni agente sono i seguenti:      

id: identificatore univoco di un agente, dato da una sequenza di numeri interi positivi; x: in quale riga della matrice è posizionato l’agente (posizione iniziale casuale); y: in quale colonna è posizionato l’agente (posizione iniziale casuale); scorta: scorta di zucchero dell’agente, che inizialmente è uguale a 10 unità di zucchero per tutti gli agenti; metabolismo: quantità di zucchero necessaria a sopravvivere. Essa è determinata casualmente e può assumere valori tra 1 e 5 unità di zucchero; visuale: capacità di vedere orizzontalmente e verticalmente (gli agenti hanno una visuale limitata perché non vedono in diagonale); la distanza massima che la visuale può raggiungere è determinata casualmente e può assumere valori tra 1 e 6 celle (figura 3).

Figura 3:ogni agente può vedere solo nelle principali direzioni (alto, basso, destra e sinistra). In questo caso la visione dell’agente (il pallino bianco al centro) è di quattro celle. Ciò che l’agente vede può anche essere raggiunto.

Per quanto riguarda la matrice posizione, è stato scelto questo tipo di indicazione: nel caso in cui una cella nel mondo sia libera inseriamo nella matrice posizione uno zero per indicare l’assenza di un agente; nel caso in cui una cella del mondo sia occupata da un agente inseriamo nella matrice posizione in corrispondenza di quella cella nel mondo il valore id dell’agente che la occupa.

-9-

4.3. Implementazione della dinamica Implementiamo ora il tempo, il quale è scandito, come abbiamo già detto, da due grandezze: i passi e i turni. Ad ogni passo:      

SugarScape (la matrice mondo abitata dagli agenti) aumenta di una unità di zucchero ogni sua cella in relazione alla capacità massima della stessa; se la cella contiene già tanta quantità di zucchero quanta ne può contenere allora rimane invariata; si selezionano a caso n agenti e gli si da la possibilità di muoversi (turno), n corrisponde al numero di agenti vivi a quel passo; si aggiornano le scorte di tutti gli agenti, indipendentemente dal fatto che siano stati selezionati o meno, sottraendone il loro metabolismo; si eliminano gli agenti che hanno una scorta minore di zero; si aggiorna il numero di agenti, il quale può essere inferiore a quello del passo precedente se alcuni agenti sono stati eliminati; al primo passo vengono creati dei vettori relativi alle caratteristiche degli agenti (numero di agenti vivi, visuale, metabolismo, ricchezza media, ricchezza minima, ricchezza massima e la mediana delle ricchezza). Ogni vettore contiene le medie dei valori di tutti gli agenti relativamente ad ogni caratteristica. Dal secondo passo in poi questi vettori verranno aumentati di una colonna (ed avranno quindi alla fine tante colonne quanti sono i passi totali).

Ad ogni turno:      

si sceglie a caso un agente tra quelli rimasti in vita; l’agente selezionato si sposta nella cella con maggior appetibilità tra quelle che ha la possibilità di vedere attraverso la funzione “MovimentoAgenti” descritta in seguito; la posizione (coordinate x e y) dell’agente viene aggiornata; se l’agente si sposta, la sua scorta viene aggiornata ed il suo valore sarà uguale alla scorta che già possedeva più la quantità di zucchero che è presente in quella cella del mondo; viene azzerata la quantità di zucchero presente nella cella della matrice del mondo in cui si sposta l’agente; viene assegnato il valore id dell’agente all’elemento della matrice posizione con le stesse coordinate dell’agente che si è spostato.

La funzione MovimentoAgenti è stata realizzata nel seguente modo:  

si crea una matrice di tre colonne in cui nella prima colonna il programma andrà a scrivere il valore di appetibilità di ogni cella, nella seconda colona la coordinata x della cella analizzata e nella terza colonna il valore della coordinata y della cella in questione; si prende in considerazione la posizione (x e y) dell’agente e si aumenta di uno la coordinata x (guardo verso il basso di una cella). Se tale posizione esiste, ossia non esce dai bordi della matrice, e ha valore uguale a 0 (cioè non è occupata da un altro agente) allora si calcola l’appetibilità di quella cella in relazione alla quantità di zucchero presente nella cella della matrice mondo in quella posizione e alla distanza dalla cella considerata alla cella in cui è posizionato l’agente (in questo caso 1), più un certo valore casuale che andrà a determinare la scelta nel caso ci fossero più celle con la stessa appetibilità. Nella matrice creata inizialmente viene poi inserito il valore dell’appetibilità nella prima colonna, la coordinata x nella seconda e la coordinata y nella terza;

- 10 -



 

si ripete lo stesso procedimento diminuendo di uno la coordinata y, e guardando quindi a sinistra di una cella, successivamente diminuendo di uno la coordinata x, e quindi guardando in alto di una cella, e infine aumentando di uno la coordinata y per guardare a destra di una cella; lo stesso procedimento è effettuato spostando si prima di una cella(come descritto sopra), poi di due celle, e così via, fino al valore della visuale dell’agente considerato; infine si cerca il valore massimo nella prima colonna della matrice creata, trovando quindi il massimo valore di appetibilità, e si ricavano le posizioni associate, considerando la seconda e la terza colonna della riga in cui compare tale valore. Tali coordinate indicano la posizione nella quale si sposterà l’agente selezionato in quel turno.

Ricordiamo che il movimento degli agenti è asincrono, questa scelta è determinata dal fatto che in questo modo si semplifica a livello software l’individuazione del miglior movimento possibile e quindi si evita di gestire eventuali casi di sovrapposizione.

- 11 -

5. Prime simulazioni 5.1. Primo esperimento: comportamento delle principali caratteristiche La nostra prima serie di simulazioni ha lo scopo di mostrarci il comportamento di alcune proprietà nel trascorrere simulato del tempo e di farci capire se gli agenti che sopravvivono hanno alcune caratteristiche comuni. Lanciamo dieci simulazioni con 500 agenti per 300 passi e ci facciamo restituire come output tre grafici in cui i valori corrispondono alle medie di tali simulazioni.  Il primo grafico (Grafico 1) mostra l’andamento demografico: per ogni simulazione si ha il numero di agenti vivi ad ogni passo; tali valori sono stati calcolati attraverso la media degli agenti vivi ad ogni passo di ogni simulazione. Andamento demografico 500

450

Media agenti vivi

400

350

300

250

200

0

50

100

150

200

250

300

Passi

Grafico 1: andamento demografico medio.

Si può notare che il numero di agenti vivi cala vertiginosamente durante i primi cinquanta passi della simulazione, continua poi a decrescere ma molto più lentamente tendendo infine a stabilizzarsi. Il numero di agenti vivi ad ogni passo ha un andamento che, tendenzialmente, segue una curva logaritmica. È importante ricordare che il Grafico 1 riporta la media di tutti valori degli andamenti di ogni simulazione, ma che comunque ogni singola simulazione mostra un andamento demografico come quello riportato.

- 12 -

 Il secondo grafico mostra l’andamento nel tempo della media della visuale e della media del metabolismo degli agenti. Andamento Visuali e Metabolismi 3.2

Visulae Metabolismo

3 2.8 2.6 2.4 2.2 2 1.8 1.6

0

50

100

150 Passi

250

200

300

Grafico 2: andamento medio della visuale e del metabolismo degli agenti vivi ad ogni passo.

Da ciò che risulta dal grafico con il passare del tempo gli agenti vivi hanno un metabolismo che, in media, decresce, mentre la loro visuale, in media, aumenta. Anche in questo caso la maggior parte del cambiamento avviene nei primi cinquanta passi e tende poi a stabilizzarsi. Questo significa che gli agenti che sopravvivono sono quelli con un metabolismo più basso e con una visuale più ampia, o una buona combinazione di queste due caratteristiche; così come si può supporre che gli agenti che muoiono prima sono quelli che hanno un alto metabolismo e quelli che hanno un visione ridotta oppure quelli con una pessima combinazione di metabolismo e visuale. È però da notare che, anche se il metabolismo e il campo visivo hanno andamenti simili, quello del metabolismo è più accentuato, mentre quello del campo visivo ha una crescita iniziale meno incidente.  Il terzo grafico (Grafico 3) mostra la ricchezza media, minima e massima ad ogni passo. Anche in questo caso il risultato è dato dalla media della ricchezza ad ogni passo di ogni simulazione. Consideriamo la ricchezza ad un determinato passo come la somma delle le scorte di zucchero di tutti gli agenti vivi a quel passo. Ricchezza minima, media e massima 900

Ricchezza minima Ricchezza media Ricchezza massima

800 700

Ricchezza

600 500 400 300 200 100 0

0

50

100

150 Passi

200

250

300

Grafico 3: andamento della ricchezza ad ogni passo

- 13 -

Dal grafico si può osservare che la crescita della ricchezza degli agenti nello SugarScape sembra essere costante; esperimenti supplementari possono farci supporre che essa sia anche illimitata. Per confermare questa supposizione abbiamo effettuato alcune simulazioni con 500 agenti iniziali e un numero sempre maggiore di passi (da 600 a 1500) e il risultato ha confermato la nostra idea: l’andamento infatti non varia e la ricchezza continua a crescere sempre in modo costante. In ultimo possiamo vedere la distribuzione finale della ricchezza, ossia la ricchezza degli agenti vivi all’ultimo passo, per quattro delle precedenti simulazioni scelte arbitrariamente: Distribuzione della ricchezza 35

Distribuzione della ricchezza 45

30

40 35

25

Frequency

Frequency

30

20

15

25 20 15

10

10

5 5

0

0

100

200

300

500 400 Zucchero

600

700

800

0

900

0

100

200

300

500 400 Zucchero

600

700

800

700

800

900

Distribuzione della ricchezza 45

Distribuzione della ricchezza 40

40 35

35 30 25

25

Frequency

Frequency

30

20

20 15

15 10

10

5

5

0

0

100

200

300

500 400 Zucchero

600

700

800

900

0

0

100

200

300

500 400 Zucchero

600

900

Si può osservare che la ricchezza è distribuita in modo abbastanza equo tra gli agenti vivi, per cui la maggior parte di essi possiede una ricchezza media e la distribuzione può essere approssimata, anche se solo vagamente, con una curva gaussiana a campana. Sono presenti tuttavia numerosi agenti che possiedono una ricchezza superiore alla media. È plausibile supporre che essi siano quegli agenti che si trovano sulla cima di una collina e che hanno un metabolismo e un campo di visuale favorevoli alla sopravvivenza. Infine ci sono pochi agenti che hanno una ricchezza minore della media, si presume essi siano quelli rimasti isolati, ossia al di fuori delle collinette. La figura 4 e la figura 5 visualizzano lo SugarScape prima e dopo l’evoluzione nel tempo in una simulazione di quelle presentate sopra. La prima immagine riporta gli agenti “paracadutati” nel mondo, le cui posizioni sono casuali; la seconda riporta gli stessi agenti (coloro che sono sopravvissuti) alla fine della simulazione.

- 14 -

Sugarscape

Figura 4: sugarscape prima dell’evoluzione.

Sugarscape

Figura 5: sugarscape dopo l’evoluzione (300 passi).

Ripetendo più volte l’esperimento descritto, si assiste sempre alla medesima dinamica di stabilizzazione degli agenti: dopo un modesto numero di passi, una cinquantina, essi rimangono costanti nella quantità e i loro spostamenti rimangono circoscritti alla cima di ciascuna collinetta. Si può ipotizzare che, a queste condizioni, l’ambiente non sia in grado di sostenere più di un certo numero di agenti. Per precisare questo numero abbiamo ripetuto l’esperimento simulando lo SugarScape 100 volte e facendoci restituire questa volta la media degli agenti sopravissuti e la deviazione standard. Partendo da 500 agenti iniziali, il risultato che otteniamo è che dopo 300 passi, la media degli agenti vivi è di 227.9300, con una deviazione standard di 9.5687. Questi risultati empirici ci portano alla conclusione che lo SugarScape, operante in questo modo, sia in grado di far sopravvivere 228 con uno scarto di ± 10 agenti2.

2 I decimali sono il risultato dall'operazione media, ovviamente non possiamo avere dei mezzi agenti, quindi arrotondiamo tali dati per eccesso.

- 15 -

5.2. Secondo esperimento: variazione del numero iniziale di agenti Dato che non tutti gli agenti immessi nell’ambiente sono in grado di sopravvivere, e dato che questo effetto ha una certa sistematicità, proviamo a simulare lo SugarScape con gli stessi parametri degli esperimenti precedenti, partendo però ora da una quantità iniziale di agenti diversa. L’obiettivo è vedere se, partendo con quantità iniziali differenti di agenti (da 10 a 500), si ottengono risultati simili. A questo scopo visualizzeremo l’andamento temporale del numero di agenti. Nella Tabella 2 sono riportati i risultati delle simulazioni. La prima colonna indica il numero iniziale degli agenti “paracadutati” nello SugarScape mentre la seconda colonna contiene i valori medi del numero di agenti vivi a fine simulazione. Per ogni numero iniziale di agenti sono state fatte dieci simulazioni, in modo da ottenere una media più o meno indicativa. Numero iniziale di agenti 10 50 100 150 200 250 300 350 400 450 500

Numero finale di agenti 2,6 24,4 52,5 78,2 100,8 123,2 147,7 169,7 190,5 207,5 229,6

Tabella 2: media (di dieci simulazioni) del numero di agenti sopravissuti per diverse quantità iniziali di agenti.

Come si può leggere dalla tabella, partendo da diverse quantità iniziali di agenti non si ottengono risultati simili: osservandolo e analizzando i risultati è possibile affermare che esiste una proporzionalità diretta tra il numero di agenti iniziali e il numero di agenti finali. Sviluppando il grafico dalla tabella otteniamo la rappresentazione seguente. Agenti finali per diversi valori di agenti iniziali 250

Agenti finali

200 150

Agenti Vivi 100 50 0 10

50

100

150

200

250

300

350

400

450

500

Agenti iniziali

Grafico 4.1: numero di agenti vivi alla fine della simulazione a seconda del numero iniziale di agenti. Il numero degli agenti sopravissuto è la media di dieci simulazioni.

- 16 -

Avvalendoci di un diverso programma di supporto (Microsoft Excel) si può aggiungere al grafico ottenuto una linea di tendenza o regressione lineare3 (Grafico 4.2). Agenti finali per diversi valori di agenti iniziali

Capacità portante

250

y = 22,83x - 16,371 R2 = 0,9975

200 150

Agenti Vivi

100

Lineare (Agenti Vivi)

50 0 10

50

100 150 200 250 300 350 400 450 500 Agenti iniziali

Grafico 4.2: grafico 4.1 con aggiunta la linea di tendenza (regressione lineare).

MS Excel è stato utilizzato per fornirci una rappresentazione grafica, per i calcoli è stata utilizzata invece la funzione regress di Matlab. Essa ci restituisce l’equazione della curva interpolante, che equivale a y = 0,46 x ± Variabile errore. Il ché significa che il numero di agenti finali è uguale al numero di agenti iniziali moltiplicato per 0,46, con una variabile di errore. Il secondo dato che abbiamo ispezionato è il valore del coefficiente R2 (ossia il valore della regressione - 0,9987 – al quadrato) che risulta 0,9975. Tale valore segnala la significatività statistica dell’interpolazione: tale significatività è tanto maggiore quanto più il coefficiente si avvicina ad 1. L’R2 risultante da Matlab - 0,9966 – ci da la possibilità di concludere che, data la relazione di proporzionalità diretta trovata dagli esperimenti, la capacità portante del sistema (che andremo ora a definire) dipende in modo abbastanza lineare dal numero di agenti iniziali.

3

Regressione lineare: in statistica, è un metodo per stimare che fa uso dei minimi quadrati per derivare una retta (del tipo y = ax + b) che interpola uno scatter di punti minimizzando la somma dei quadrati delle distanze dei punti stessi dalla retta.

- 17 -

6. Capacità portante Come affermato nel paragrafo precedente, l’ambiente non è in grado di sostenere una qualsiasi quantità di agenti; esiste una soglia limite chiamata capacità portante. Tale capacità può essere definita come la quantità di agenti che sopravvive nello stato asintotico stabile, data una quantità iniziale fissa degli agenti stessi, e data la disponibilità di risorse all’interno del sistema. Partendo da un numero di agenti iniziali pari a 500, e simulando lo SugarScape cinquanta volte, possiamo osservare dal Grafico 5 che l’andamento temporale del numero di agenti decresce seguendo una curva tendenzialmente logaritmica e possiamo affermare che la capacità portante del sistema si aggira intorno ai 228 ± 10 agenti. Tale cifra è il risultato della prima serie di esperimenti. Andamento temporale del numero di agenti 500

450

Agenti vivi

400

350

300

250

200

0

50

100

150 Passi

200

250

300

Grafico 5: andamento temporale del numero di agenti vivi per cinquanta simulazioni da 300 passi e 500 agenti iniziali.

Andremo ora ad effettuare una serie di esperimenti che hanno lo scopo di studiare la capacità portante del nostro sistema e di capire le relazioni che intercorrono tra tale capacità e determinate caratteristiche dello SugarScape.

- 18 -

6.1. Terzo esperimento: capacità portante al variare delle risorse del terreno La domanda alla quale vogliamo rispondere ora è la seguente: esiste una relazione tra capacità portante e quantità di risorse presenti nell’ambiente? Per rispondere a questa domanda abbiamo effettuato una serie di simulazioni variando le risorse presenti nel mondo, per vedere se è possibile affermare che il numero di agenti che sopravvivono ha un qualche tipo di relazione con la quantità di zucchero presente sul territorio. Questo primo esperimento è costituito da 30 simulazioni, ognuna con un numero di agenti iniziali pari a 500 e per 500 passi. Le prime dieci sono effettuate con collinette piccole, altre dieci simulazioni sono lanciate con collinette più grandi e le ultime dieci con collinette ancora più grandi. I risultati che ci facciamo restituire sono la media di agenti vivi al termine di ciascun ciclo di simulazioni e i grafici relativi all’andamento demografico. Il primo ciclo di simulazioni è effettuato su un mondo con poche risorse, un mondo in cui le colline sono più strette e la loro altezza arriva a tre4. Il risultato di questo ciclo è riportato nel Grafico 6.1. La media degli agenti sopravissuti è 138,1. Nel secondo ciclo di simulazioni i parametri di input per la creazione delle colline sono 4 per la loro altezza massima e 15 per la loro larghezza. L’andamento demografico degli agenti che occupano questo tipo di ambiente è riportato nel Grafico 6.2 e la media degli agenti sopravissuti è 225. Nel terzo ciclo aumentiamo sia l’altezza che la larghezza delle colline. L’altezza la impostiamo a 5 e la larghezza a 185. I risultati sono riportati nel grafico 6.3 e la media degli agenti vivi a fine simulazione è 295,4. Andamento demografico con colline piccole 500

Simulazione 1 Simulazione 2 Simulazione 3 Simulazione 4 Simulazione 5 Simulazione 6 Simulazione 7 Simulazione 8 Simulazione 9 Simulazione 10

450

Capacità portante

400 350 300 250 200 150 100

0

50

100

150

200

250

300

350

400

450

500

Passi

Grafico 6.1: andamento demografico degli agenti. Ogni curva rappresenta una simulazione, ogni simulazione è stata effettuata con un mondo con scarse risorse nel territorio.

4

Per operare questa modifica andiamo a modificare i valori di input per la creazione delle colline. Nello specifico l’altezza delle colline A’ = 3 e la larghezza σ’x = 10 e σ’y = 10.

5

Anche aumentando la larghezza delle colline l’altezza massima che esse possono raggiungere non supera le 5 unità, anche dove le due basi delle colline si sovrappongono.

- 19 -

Andamento demografico con colline medie 500

Simulazione 1 Simulazione 2 Simulazione 3 Simulazione 4 Simulazione 5 Simulazione 6 Simulazione 7 Simulazione 8 Simulazione 9 Simulazione 10

450

Capacità portante

400

350

300

250

200

0

50

100

150

200

250 Passi

300

350

400

450

500

Grafico 6.2: andamento demografico degli agenti. Ogni curva rappresenta una simulazione. Le simulazioni sono state effettuate con un mondo in cui le risorse possono considerarsi ‘normali’

Andamento demografico con colline grandi 500

Simulazione 1 Simulazione 2 Simulazione 3 Simulazione 4 Simulazione 5 Simulazione 6 Simulazione 7 Simulazione 8 Simulazione 9 Simulazione 10

Capacità portante

450

400

350

300

250

0

50

100

150

200

250 Passi

300

350

400

450

500

Grafico 6.3: andamento demografico degli agenti. Ogni curva rappresenta una simulazione. Ogni simulazione è stata effettuata con un’elevata quantità di risorse.

Possiamo concludere che la risposta alla nostra domanda iniziale è positiva: esiste sicuramente una relazione tra la capacità portante del sistema e la quantità di risorse presenti nel territorio. Per quantificare il tipo di relazione esistente effettuiamo un altro esperimento in cui manteniamo invariata la larghezza delle colline ma facciamo variare la loro altezza da 3 a 10 e ci facciamo restituire la madia degli agenti vivi calcolata per dieci simulazioni. Facendo evolvere il sistema per 500 passi e un numero iniziale di 500 agenti, i risultati ottenuti sono quelli riportati nella Tabella 3.

- 20 -

Altezza colline 3 4 5 6 7 8 9 10

Capacità portante 184 226,4 254 283,1 300,8 317,4 338,7 348,4

Tabella 3: capacità portante in relazione all’altezza delle colline, quindi alle risorse del territorio.

È visibile un sostanziale aumento degli agenti finali all’aumentare degli agenti finali, per cui operiamo come in precedenza per valutare, nello specifico, che tipo di relazione lega queste due variabili. Utilizzando Excel rappresentiamo graficamente la tabella e aggiungiamo una linea di tendenza. Questa volta però non operiamo una regressione lineare, ma aggiungiamo una linea di tendenza logaritmica. I risultati ottenuti sono riportati di seguito. Capacità portante 400 Capacità portante

350 300 250 y = 80,431Ln(x) + 174,98

200 150

2

R = 0,9866

100 50 0 3

4

5

6

7

8

9

10

Altezza colline Grafico 6.4: capacità portante del sistema in relazione all’altezza delle colline. Linea di tendenza logaritmica.

L’equazione ottenuta è la seguente: y = 80,431 * Ln(x) + 174,98 che tradotta in termini di SugarScape significa che la capacità portante del sistema è uguale al logaritmo dell’altezza delle colline moltiplicata circa ottanta volte e sommata a 147,98. R2 = 0,9866 sta ad indicare che la curva ottenuta nel nostro grafico ben si avvicina ad una curva logaritmica. Tuttavia l’analisi della regressione lineare effettuata con Matlab ci dice che la curva rappresentante la capacità portante in relazione all’altezza delle colline si avvicina molto anche ad una crescita lineare. Infatti la crescita è molto simile anche ad una proporzionalità diretta, oltre che ad una logaritmica, e l’R2 risultante ce lo conferma; esso vale 0,9664. L’equazione che descrive tale curva stima y = 22 * x + 133 ± b, dove y rappresenta la capacità portante del sistema, x rappresenta l’altezza delle colline e b rappresenta la variabile d’errore (Grafico 6.5).

- 21 -

OLS Actual vs. Predicted 300

Actual Predicted

200 100 0

0

2

4

6

8

10

12

8

10

12

Residuals 5 0 -5 -10

0

2

4

6

Grafico 6.5: regressione lineare sulla curva della capacità portante del sistema in relazione all’altezza delle colline (sopra) e analisi dei residui (sotto). Equazione risultante: capacità portante = 22 * altezza delle colline + 133 ± variabile errore.

Il limite tra le due possibili tendenze è molto labile ed è difficile capire quali dei due risultati è più idoneo a descrivere l’andamento della capacità portante esaminata in questo esperimento.

6.2. Quarto esperimento: capacità portante al variare del tipo di agente Abbiamo visto come la capacità portante del sistema varia al variare del numero iniziale di agenti ed è funzione del terreno, vogliamo ora verificare se essa cambia anche a seconda del tipo di agente che occupa e utilizza il terreno. L’ipotesi iniziale, dunque, è che il numero finale degli agenti dipenda anche dalle interazioni che gli stessi sono in grado di mantenere con il terreno. Dai risultati dei primi esperimenti possiamo già ipotizzare che la capacità portante possa variare a seconda della capacità visiva media degli agenti e a seconda dal loro metabolismo medio, lavoriamo dunque tenendo in considerazione queste due variabili. Per trovare sperimentalmente la dipendenza tra capacità portante e metabolismo e visuale degli agenti, abbiamo effettuato una serie di simulazioni in cui supponiamo che tutti gli agenti abbiano una stessa visuale data ed un uguale metabolismo anch’esso dato, anziché determinare questi due parametri in modo casuale come nelle precedenti simulazioni. In questo modo è possibile analizzare come cambia il numero di agenti finali al variare di questi due parametri. L’esperimento ha queste caratteristiche: o o o o o o

500 agenti iniziali; 1500 passi, per permettere un assestamento del sistema; la visuale varia da 1 a 10 celle; il metabolismo varia da 1 a 5 unità di zucchero; tutti gli agenti hanno lo stesso valore del parametro interessato; si utilizza una matrice 10x5 (visuale x metabolismo). Per ogni coppia visuale-metabolismo si effettuano 10 simulazioni. Ogni simulazione restituisce il numero di agenti finali. Ogni elemento della matrice contiene il numero medio di agenti finali.

I risultati delle simulazioni appena descritte sono riportati in Tabella 4. - 22 -

Matrice agenti vivi

Metabolismo

Visuale 1

2

3

4

5

1

447

280,2

90,3

1

0

2

456,1

313,9

122

1

0

3

459

334

130,1

1

0

4

465

349

134,5

1

0

5

470,9

362,7

137,5

1

0

6

474,7

371,9

137,1

1

0

7

477,2

376,1

136,7

1

0

8

481,6

385,5

136,1

1

0

9

483,3

386,9

130,4

1

0

10

485,1

388,9

134,4

1

0

Tabella 4: media degli agenti vivi (su 10 simulazioni) per ogni coppia di valori dei parametri metabolismo e visuale. 1500 passi, 500 agenti iniziali.

Leggendo la matrice per colonne è possibile notare che, mantenendo il metabolismo costante e variando la visuale degli agenti, il numero di agenti vivi a fine simulazione subisce una leggera crescita, ma non varia sensibilmente. Prendendo in considerazione la prima colonna, infatti, si nota che, fissando a una unità di zucchero il metabolismo degli agenti e variando la loro visuale da 1 a 10 celle, la capacità portante cresce da 448 agenti quando la visuale è uno fino ad arrivare a 485 quando la visuale è dieci; tale capacità dunque aumenta di 37 agenti. Lo stesso procedimento effettuato sulle altre colonne della matrice ci dice che mantenendo il metabolismo fisso a due unità di zucchero la capacità portante cresce di 105 agenti; di 39 agenti quando il metabolismo è fissato a tre unità di zucchero; di 1 agente a metabolismo fisso a quattro unità di zucchero e non aumenta, cioè rimane costante a 0 agenti, se il metabolismo è fissato a 5 unità di zucchero. Leggendo ora la matrice per riga, è possibile notare come varia la capacità portante del sistema quando gli agenti hanno una visuale fissa, ma variano il loro metabolismo. Questa volta la capacità portante varia sensibilmente al variare del metabolismo degli agenti e, in particolare, è interessante notare che, qualsiasi capacità visiva abbiano gli agenti, se il loro metabolismo è pari a cinque unità di zucchero, non riescono a sopravvivere. Per capire meglio le osservazioni appena fatte e avere un riscontro visivo della correlazione supposta, è possibile fare un plot in cui visualizziamo come varia il numero di agenti vivi al variare della loro visuale, a metabolismo fisso (Grafico 7), e un secondo plot in cui visualizziamo come varia il numero di agenti sopravissuti al variare del loro metabolismo, a visuale fissa (Grafico 8).

- 23 -

Visuale variabile, metabolismo costante 500 450 400

Agenti sopravissuti

350

metabolismo = metabolismo = metabolismo = metabolismo = metabolismo =

300 250

1 2 3 4 5

200 150 100 50 0

1

2

6 5 Visuale

4

3

8

7

10

9

Grafico 7: capacità portante dello sugarscape in relazione al parametro di visuale degli agenti (a metabolismo fisso).

Come si era già potuto notare dalla tabella, il numero di agenti che sopravvive non varia molto al variare della loro visuale; ciò significa che la capacità portante del sistema dipende solo in minimissima parte dal parametro “visuale” dei nostri agenti. L’andamento delle curve è pressoché identico, l’unica variante è che con più diminuisce il metabolismo con più la curva viene traslata verso l’alto, in virtù del fatto che minore è il metabolismo degli agenti, maggiore è la capacità portante del sistema. Metabolismo variabile, visuale costante 500

Vista = Vista = Vista = Vista = Vista = Vista = Vista = Vista = Vista = Vista =

450 400

Agenti sopravissuti

350 300 250

1 2 3 4 5 6 7 8 9 10

200 150 100 50 0

1

1.5

2

2.5

3.5 3 Metabolismo

4

4.5

5

Grafico 8: capacità portante dello sugarscape al variare del parametro di metabolismo degli agenti (a visuale fissa)

Come avevamo già notato analizzando la tabella, il numero di agenti che riesce a sopravvivere nell’ambiente varia molto in relazione al proprio metabolismo; questo significa che la capacità portante dello SugarScape dipende molto dal parametro “metabolismo” degli agenti.

- 24 -

Anche in questo caso le curve hanno un andamento simile, con la sola eccezione che esse vengono traslate verso l’alto all’aumentare del campo visivo, in virtù del fatto che, come abbiamo detto sopra, anche se solo in minima parte, il parametro visione influisce sulla capacità portante. Questa minima parte è visibile anche nella distanza di traslazione tra una curva e l’altra, che è molto piccola, soprattutto confrontandola con quella del Grafico 6. L’ampia distanza di traslazione tra una curva e l’altra nel grafico 6, infatti, indica che il metabolismo incide molto sulla capacità portante del sistema. Un’osservazione che è plausibile fare è che questi dati sono coerenti con i risultati del primo esperimento (cfr. Grafico 2). Quando abbiamo analizzato l’andamento della visuale e del metabolismo degli agenti, assegnando a questi due parametri valori casuali, avevamo notato che con il passare del tempo gli agenti che rimanevano vivi avevano un metabolismo medio che decresceva in maniera maggiore dell’aumento della loro visuale media. Questa considerazione trova ora fondamento con le nostre ultime considerazioni, secondo le quali la capacità portante del sistema dipende molto dal parametro metabolismo e in maniera minore dal parametro visuale. Per verificare matematicamente le nostre supposizioni, e per capire cosa significa che la visuale degli agenti incide “in minima parte” e il metabolismo incide “in modo forte” sulla capacità portante, possiamo stimare alcuni valori:   

una regressione lineare in cui la variabile indipendente è la capacità portante e la variabile dipendente è la visuale, per quantificare la relazione capacità portante-visuale; una regressione lineare in cui la variabile indipendente è la capacità portante e la variabile dipendente è il metabolismo, per quantificare la relazione capacità portante-metabolismo; una regressione lineare multivariata in cui la variabile indipendente è la capacità portante e le variabili dipendenti sono la capacità visiva e il metabolismo.

Utilizzando la funzione regress di Matlab otteniamo che le variabili vista e metabolismo, in una ipotetica formula, avrebbero coefficienti rispettivamente pari a 44 e -39. Di conseguenza il numero di agenti sopravvissuti è uguale a 44.2918 * vista - 37.6820 * metabolismo. Tuttavia, il coefficiente di determinazione ottenuto – paria a 0,09 - è molto basso e indica che, di fatto, con queste due variabili non siamo in grado di predire efficacemente l'andamento della popolazione. Il grafico sottostante mostra la curva data dai nostri dati e la curva della regressione lineare. OLS Actual vs. Predicted 400 300

Actual Predicted

200 100

1

2

3

4

5

6

7

8

5

6

7

8

Residuals 20 10 0 -10 -20

1

2

3

4

Grafico 9: regressione lineare sulla capacità portante ottenuta dagli esperimenti.

- 25 -

Proviamo ore a considerare le due variabili separatamente, per verificare se una ha un coefficiente sensibilmente differente dall’altra ed è in grado di spiegare meglio o peggio la capacità portante del nostro sistema. Sempre utilizzando Matlab come programma di elaborazione di queste statistiche, elaboriamo due cicli di simulazioni per 300 passi e 500 agenti iniziali. Nel primo ciclo fissiamo la vista di tutti gli agenti e lasciamo casuale il metabolismo, nel secondo ciclo fissiamo il metabolismo degli agenti e lasciamo casuale la visuale. Attuando poi la regressione ai risultati ottenuti (riportato in tabella 5) l’esito è che il numero di agenti finali è uguale alla visuale degli agenti moltiplicata 222,1333 volte, e la significatività di questa regressione, ossia il suo R2 è di 0,6463. Visuale agenti 1 2 3 4 5 6 7 8 9 10

Numero di agenti finali 223 233 244 225 241 236 239 251 265 253

Tabella 5: capacità portante del sistema al variare del parametro visuale.

Nel secondo ciclo di simulazioni fissiamo un uguale metabolismo a tutti gli agenti e lasciamo casuale il parametro relativo alla loro visuale. Il numero di agenti vivi alla fine della simulazione relativamente al loro metabolismo è riportato in tabella 6. Metabolismo agenti 1 2 3 4 5

Numero di agenti finali 467 340 136 11 0

Tabella 6: capacità portante del sistema al variare del parametro metabolismo.

Attuando la regressione lineare a questi risultati otteniamo un R2 pari a 0,96. È dunque plausibile concludere che la variabile metabolismo è in grado di spiegare meglio la capacità portante del sistema di quanto non sia in grado di farlo la variabile visuale. Una ulteriore ipotesi che è plausibile assumere è che gli agenti con metabolismo pari a cinque unità di zucchero non riescano a sopravvivere a causa delle dimensioni delle colline: il massimo della capacità di zucchero che le celle in cime alle colline nel mondo possono contenere è infatti 4 nei nostri esperimenti. Agenti con metabolismo più alto quindi, considerando che dispongono di una 6

R2 in realtà è risultato 1.0e+003 * 0.0009.

- 26 -

scorta iniziale, non sono in grado di sopravvivere per un periodo lungo di tempo. Anche ipotizzando che un agente con metabolismo 5 sia selezionato una volta ad ogni passo, o anche per più di un turno, e che riesca ogni volta a raccogliere quattro unità di zucchero, il suo metabolismo consuma comunque più di quello che riesce a raccogliere, e consumerà la sua scorta iniziale fino ad annullarla. Per verificare se la nostra ipotesi ha fondamento abbiamo simulato lo SugarScape con diversi valori per l’altezza delle colline e abbiamo guardato come si comporta l’andamento demografico. Per questi esperimenti il valore del parametro visuale è stato fissato a 10 per tutti gli agenti e il valore del parametro del metabolismo è stato mantenuto casuale. I risultati ottenuti sono i seguenti: 

se la collina raggiunge un massimo di 5, quindi le celle in cima alla collina possono contenere al massimo cinque unità di zucchero, gli agenti con metabolismo pari a 5 unità di zucchero che sopravvivono sono pochi mentre quelli con metabolismo 6 muoiono, come mostrato nel grafico sottostante. Anamento demografico (collina 5) 140

Agenti vivi

120 100 80

Metabolismo 5

60

Metabolismo 6

40 20

40 0

20 0

18 0

16 0

11 0

90

70

50

30

10

0

Passi

Grafico 10: media su dieci simulazioni di agenti vivi con metabolismo 5 (linea blu) e con metabolismo 6 (linea rosa). Le simulazioni sono effettuate con il parametro “altezza collina” pari a 5.



Se la collina raggiunge un massimo di 6, gli agenti che sopravvivono con metabolismo 6 sono pochi, mentre quelli con metabolismo 7 invece muoiono in modo analogo a quanto riportato nel Grafico 10.

Questi risultati sembrano confermare l’ipotesi secondo la quale gli agenti con un metabolismo superiore alla massima quantità che le celle della cima della collina possano contenere non sono in grado di sopravvivere più di un centinaio di passi.

- 27 -

7. Coefficiente di Gini Il coefficiente di Gini (G) è una stima della quantità di ineguaglianza di un determinato fattore all’interno di una popolazione. La misura di questo coefficiente è definita come il rapporto dell’area compresa tra la Curva di Lorenz7 della distribuzione e la curva data da una distribuzione uniforme, rispetto all’area sottesa della distribuzione uniforme. Matematicamente il coefficiente di Gini è espresso in questo modo: G=

Area A Area A + Area B

Il coefficiente di Gini, spesso utilizzato per misurare la differenza di reddito, è un numero compreso tra 0 ed 1; un coefficiente pari a 0 rimanda ad un’assenza di ineguaglianza, ossia il caso di una uguaglianza perfetta in cui tutti hanno lo stesso reddito, un coefficiente uguale a 1, invece, rimanda ad una totale ineguaglianza, cioè il caso in cui una persona detiene tutto il reddito mentre tutti gli altri hanno un reddito nullo. Più basso è il valore di G, dunque, maggiore è l’uguaglianza. Uno dei fattori comunemente utilizzati è appunto il reddito, perciò il coefficiente di Gini è in grado di misurare le sperequazioni (differenza, sproporzione) di reddito in una popolazione. Per riportare un esempio la Figura 6 mostra il grafico dal quale si calcola l’area per definire il coefficiente di Gini. Sull’asse delle ascisse sono riportate le percentuali relative alla popolazione e su quello dello ordinate è riportata la percentuale relativa al reddito. La retta rappresenta la curva di una distribuzione uniforme, la curva, invece, rappresenta la curva di Lorenz della distribuzione reale del reddito. In questo modo, al punto X, sulla linea della distribuzione del reddito, il 40% della popolazione risulta disporre del 10% del reddito; mentre una distribuzione equa avrebbe voluto che fosse il 10% della popolazione a disporre il 10% del reddito. Al punto Y, l’80% della popolazione ha il 40% del reddito. In coincidenza del punto Z il 50% della popolazione dovrebbe disporre del 50% del reddito secondo una distribuzione equa, e invece in questo esempio dispone di meno del 20% del reddito totale.

Figura 6: coefficiente di Gini calcolato a partire dal diagramma della curva di Lorenz

7 Curva di Lorenz: una volta ordinati in senso crescente i redditi, la curva di Lorenz rappresenta graficamente la relazione fra quote cumulate di reddito e frazioni cumulate di redditieri.

- 28 -

Come evidenzia bene la Figura 6, maggiori sono le differenze di reddito, più la curva di Lorenz si allontana (verso il basso) dalla curva ideale e più vasta diventa l’area A; maggiore è l’area A, più elevato è il coefficiente di Gini. Più è elevato G, maggiori sono le differenze di reddito. Al contrario, minore è il coefficiente di Gini, minori sono le diversità, quindi minore sarà l’area A in quanto la curva di Lorenz si sposta alzandosi verso l’alto tendendo alla curva ideale; fino a quando la curva ideale e quella reale di Lorenz si sovrappongono, facendo diventare l’area A, e quindi anche il coefficiente di Gini, pari a 0. Nello SugarScape il coefficiente di Gini viene utilizzato per misurare la distribuzione della ricchezza, e quindi delle scorte di ogni agente, e per valutare se la ricchezza è ben distribuita nel nostro mondo. Per implementare il coefficiente di Gini nel modello abbiamo ordinato in senso crescente il nostro, già esistente, vettore delle ricchezze, e attraverso la funzione cumsum abbiamo creato la somma cumulativa in grado di rappresentarci la curva di Lorenz. In secondo luogo abbiamo creato la curva ideale in cui la ricchezza è distribuita equamente e, infine, abbiamo sottratto l’area sottesa la curva di Lorenz all’area sottesa la curva ideale seguendo l’equazione pop

G = ∑ y (i ) − x(i ) i =1

dove x rappresenta il valore delle ordinate della curva di Lorenz e y il valore delle ordinate della curva ideale. Successivamente vedremo come il coefficiente di Gini è stato applicato al modello e a quali risultati ha condotto.

- 29 -

8. SugarScape con morte naturale e nascita di nuovi agenti La prima delle modifiche che apportiamo al modello è l’aggiunta della morte naturale, ossia la morte dell’agente, e di tutte le sue caratteristiche e della sua scorta, a causa di vecchiaia. Per implementarla nel modello abbiamo aggiunto due campi nel vettore di strutture degli agenti:  

il campo “eta”; il campo “morte”.

L’età di tutti gli agenti aumenta di una unità ad ogni passo, di conseguenza, d’ora in avanti faremo coincidere l’espressione “un anno” con l’espressione “un passo”: ogni anno lo SugarScape evolve come evolve ad ogni passo; dire “dopo un anno” equivale a dire “dopo un passo”.  

Ogni agente, quando inizialmente viene paracadutato nel mondo, nasce con un’età compresa tra 0 e 60; durante l’inizializzazione degli agenti, viene anche assegnato ad ognuno di essi un anno di morte che è compreso tra i 60 e i 100 anni.

La seconda modifica riguarda la scorta iniziale di ogni agente che è ora determinata casualmente tra 30 e 80 unità di zucchero, non più pari a dieci unità di zucchero per tutti come in precedenza. È da notare che se gli agenti morissero solo, si avrebbe una loro estinzione entro il numero massimo che compare nel campo “morte”. L’andamento demografico dello SugarScape quindi sarebbe costantemente in decrescita e il sistema evolverebbe verso l’estinzione di tutti gli agenti. Per ovviare a questo risultato scontato abbiamo aggiunto la “riproduzione asessuata” che consiste semplicemente nella nascita di nuovi agenti. I nuovi agenti, in realtà, non sono procreati da altri agenti, ma nascono, per così dire, dal nulla. Nello specifico un nuovo agente nasce in sostituzione di un agente che muore. Ogni volta che un agente muore, per mancanza di scorte o per vecchiaia, esso viene rimpiazzato con un agente nuovo che mantiene la stessa posizione che aveva l’agente morto, ha un’età uguale a zero e tutte le altre caratteristiche proprie di un agente casuali. Vediamo ora di capire come funziona la prima variante del modello SugarScape e vediamo cosa comporta la morte di vecchiaia degli agenti e la loro sostituzione con nuovi agenti. Per evitare confusioni chiameremo d’ora in avanti “primo modello” il modello senza morte degli agenti per vecchiaia (ma solo per mancanza di scorta) e senza nascita di nuovi agenti; chiameremo invece “prima evoluzione del modello” il modello con morte degli agenti di vecchiaia e nascita di nuovi agenti. In primo luogo eviteremo di mostrare il grafico relativo all’andamento demografico degli agenti: esso risulterà costante al numero di agenti iniziali in quanto tutte le volte che un agente muore ne nasce un altro e quindi alla fine di ogni anno il numero totale di agenti è uguale a quello iniziale. Per vedere cosa comportano le modifiche apportate al primo modello lanciamo alcune simulazioni per studiare il comportamento del sistema e riportiamo i risultati di una simulazione di 1000 passi e con un numero iniziale di agenti pari a 240, uguale ala capacità portante del nostro sistema prima delle modifiche apportate (cfr 5.2). I risultati ottenuti e i comportamenti descritti riportati di seguito sono comuni a tutti i nostri esperimenti.  Il primo grafico (Grafico 11) mostra l’andamento della visuale e del metabolismo medio ad ogni passo: per la variabile visuale è possibile osservare che essa oscilla continuamente; ciò è giustificato dal fatto che i nuovi nati hanno un valore della vista che è casuale e che varia tra 1 e 6. Per la variabile metabolismo, come per la variabile visuale, si assiste ad una continua oscillazione dovuta al fatto che i nuovi nati hanno una metabolismo casuale che varia tra 1 e 5, ma nel corso - 30 -

dei primi 50 passi essa subisce un brusco calo (da 2.7 a 1.8) per poi iniziare a oscillare in una fascia approssimativa di valori che vanno da 1.8 a 2.1. Questo ci conferma che per la sopravvivenza nel nostro ambiente è più influente un basso metabolismo piuttosto che una lunga visuale. Agenti con un metabolismo alto sono presenti, infatti la curva relativa alla media del metabolismo presenta numerosi picchi, ma poi muoiono e la curva presenta dei cali. Andamento visuale e metabolismo 3.6

Visuale Metabolismo

3.4 3.2 3 2.8 2.6 2.4 2.2 2 1.8

100

0

200

300

400

500 Passi

600

700

800

900

1000

Grafico 11: andamento della media della visuale (blu) e del metabolismo (rosso) in una simulazione della prima variante dello sugarscape (simulazione con 240 agenti e 1000 passi).

 Il secondo grafico (Grafico 12 a) mostra l’andamento della ricchezza8: com’è possibile notare la media e la mediana sono abbastanza vicine e hanno un andamento molto simile. Dato che, rispetto alla media aritmetica, la mediana è un indice più resistente in quanto non varia se nella distribuzione è presente un valore eccezionale, questo ci indica che la distribuzione della ricchezza ad ogni passo dovrebbe presentare una forma a campana, che la maggior parte dei valori sono sotto la parte centrale della campana e che la campana ha una coda lunga. Confrontando questo grafico con quello dell’andamento della ricchezza per ogni passo di una simulazione effettuata con il primo modello e con gli stessi parametri (Grafico 12 b), è possibile osservare che, mentre prima la ricchezza aveva una crescita costante, ora la ricchezza media cresce durante i primi 100 passi e poi continua ad avere un andamento oscillatorio che rimane però costante in un intorno del valore 57 unità di zucchero, senza crescere ulteriormente. Andamento della Ricchezza

Andamento della Ricchezza

350

3000

300

Media Mediana Minimo Massimo

2500

250

Ricchezza

Ricchezza

2000 200

Media Mediana Minimo Massimo

150

1500

1000

100

500

50

0

0

100

200

300

400

500 Passi

a)

600

700

800

900

1000

0

0

100

200

300

400

500 Passi

600

700

800

900

1000

b)

Grafico 12: a) andamento della ricchezza ad ogni passo, sugarscape con morte naturale e nascita di nuovi agenti; b) andamento della ricchezza ad ogni passo, sugarscape senza morte naturale e senza nascita di nuovi agenti. 8

L’andamento della ricchezza è calcolato attraverso la media delle scorte di zucchero di ogni agente vivo ad ogni passo.

- 31 -

 il terzo grafico (Grafico 13 a) mostra la distribuzione della ricchezza all’ultimo passo: com’è possibile notare, pochissimi agenti hanno moltissima scorta di zucchero, un numero medio di agenti ha una quantità media di scorta mentre la maggior parte degli agenti possiedono una piccola scorta di zucchero. L’andamento ha quindi caratteristiche simili ad un esponenziale con esponente tra 0 e 1; il che implica una proporzionalità inversa tra ricchezza e numero di agenti. Confrontando questo istogramma con quello della distribuzione della ricchezza risultante dalla prima versione dello SugarScape (Grafico 13 b del primo modello), è possibile notare che la distribuzione della ricchezza è notevolmente cambiata. Distribuzione della ricchezza

Distribuzione della ricchezza

70

30

60 25

50

Frequency

Frequency

20

40

30

15

10

20

5

10

0

0

50

150

100

200

0

250

Zucchero

1500 Zucchero

a)

b)

0

1000

500

2000

2500

3000

Grafico 13: a) distribuzione della ricchezza all’ultimo step, prima variante dello sugarscape b) distribuzione della ricchezza all’ultimo step, prima versione sugarscape

Per approfondire questo cambiamento della distribuzione della ricchezza risultato in seguito all’aggiunta della morte naturale e della nascita di nuovi agenti, abbiamo calcolato il coefficiente di Gini di questa simulazione e della simulazione del primo modello con gli stessi parametri di input. I risultati sono riportati di seguito nei grafici 14(a) e 14(b). 5

Ricchezza: curva di Lorenz e curva di equi-distribuzione

3

15000

x 10

Ricchezza: curva di Lorenz e curva di equi-distribuzione

Curva di Lorenz Curva ideale

Curva di Lorenz Curva ideale

2.5

2

Ricchezza

Ricchezza

10000

1.5

1

5000

0.5

0

0

50

150 100 Popolazione

200

250

0

0

100

50

150

Popolazione

Grafico 14: coefficiente di Gini per lo sugarscape con morte naturale e nascita di nuovi agenti (a) e coefficiente di Gini per la prima versione dello sugarscape (b).

Il coefficiente di Gini per nel primo modello è 0,3024, mentre il coefficiente di Gini ottenuto con la prima evoluzione del modello è 0,1797. questo conferma che la prima variante del modello è più paritario nella distribuzione della ricchezza rispetto al modello base.

- 32 -

È interessante guardare come varia il coefficiente di Gini nel trascorrere degli anni, e dunque all’interno di una stessa simulazione, per vedere se esso varia e poi si stabilizza, e in tal caso valutare per quanto varia prima di stabilizzarsi, oppure se oscilla continuamente. I valori dell’andamento del coefficiente G nel tempo nella prima evoluzione del modello e nel primo modello sono riportati in Tabella 7. Entrambe le simulazioni sono state effettuate con un numero di agenti iniziali pari a 240. Passo

G primo modello

100 200 300 400 500 600 700 800 900 1000

0,2322 0,2193 0,2100 0,2038 0,1971 0,1995 0,1989 0,2006 0,2009 0,2005

G prima evoluzione del modello 0,3401 0,3196 0,3218 0,3227 0,3124 0,3149 0,3135 0,3034 0,3140 0.3085

Tabella 7: valori del coefficiente di Gini ad ogni 100 passi di una simulazione senza e una simulazione con nascita di nuovi agenti.

Com’è possibile notare dalla tabella il coefficiente G durante le due simulazioni si abbassa nel tempo: da 0,23 al centesimo passo a 0,2 al millesimo passo nel primo modello e da 0,34 al centesimo passo a 0,3 al millesimo passo nella prima evoluzione del modello. In entrambi i casi la decrescita più sensibile avviene tra i primi duecento passi, dopo i quali esso inizia a variare di poco. Dagli esiti tipici dei nostri esperimenti è possibile trarre alcune prime conclusioni: -

-

-

con l’introduzione della morte per vecchiaia e della nascita di nuovi agenti i risultati ottenuti dalle prime simulazioni confermano che nel nostro mondo il metabolismo influenza in modo sostanziale l’opportunità di vivere degli agenti, mentre la visuale è, a questo scopo, meno incisiva. In secondo luogo, la prima variante dello SugarScape mostra un andamento della ricchezza che è molto diverso da quello mostrato con la prima versione dello SugarScape: l’andamento temporale della ricchezza non è più costantemente crescente ma cresce solo inizialmente per poi stabilizzarsi e oscillare mantenendosi costante su un certo valore. La distribuzione della ricchezza infine non ha più un andamento a campana ma è come se avessero tagliato in due la campana e avessero mantenuto solo la parte di destra, con il risultato che la diversità è aumentata insieme al coefficiente di Gini.

- 33 -

9. SugarScape con riproduzione sessuata Con l’introduzione delle riproduzione sessuata, con la possibilità di trasmissione di determinate caratteristiche (il tutto, ovviamente, molto stilizzato), emerge un comportamento ancora differente da quelli mostrati nel primo modello e dalla prima variante del modello.

9.1. La genetica Dopo aver studiato il comportamento dello SugarScape e le variabili che contraddistinguono i nostri agenti andiamo adesso ad apportare una sostanziale modifica al sistema e alle dinamiche in esso contenute. Fino a questo momento i nostri agenti non avevano la possibilità di riprodursi e generare nuovi agenti, i nuovi agenti erano semplicemente immessi nel sistema in sostituzione a quelli morti. Ma la realtà e molto differente da questa modellizzazione: nella vita reale le nascite non sono strettamente legate al numero di morti ma sono legate a fattori, tra i quali la presenza di coppie, la fertilità e la disponibilità a fare figli. Per rendere il nostro sistema sempre più vicino alla realtà biologica che ci circonda, apporteremo altre modifiche al modello, introducendo la riproduzione sessuata degli agenti. In questo modo andremo a creare una vera e propria dinamica di evoluzione del sistema e potremo studiare le caratteristiche di tale dinamica. In questo modo sarà anche possibile calcolare la reale capacità portante del sistema. Gli esperimenti verranno effettuati in un primo momento sul mondo con caratteristiche identiche a quelle fino ad ora utilizzate, verranno poi ripetuti gli stessi esperimenti anche con un mondo con una diversa quantità di risorse in modo da valutare quanto la capacità portante del sistema vari con il variare delle risorse. La possibilità di ripetere la stessa identica simulazione nonostante tutte le variabili casuali che ne fanno parte, ci è data dal fissaggio di un seme random: un parametro impostato inizialmente e che se riutilizzato è in grado di richiamare tutte le variabili casuali e ripeterle in un successivo esperimento. Passiamo ora alla descrizione delle modifiche apportate al modello. In primo luogo, i nostri agenti per poter operare geneticamente devono arricchirsi di nuovi fondamentali attributi. I nuovi campi nel vettore di strutture sono i seguenti:     

sesso: definisce il sesso dell'agente, casualmente ogni agente è maschio (0) o femmina (1); pubertà: età minima che un agente deve avere per poter essere fertile: sia per i maschi che per le femmine l’età fertile varia (ed è dunque un numero casuale) tra 12 e 15; pausa: soglia massima entro la quale un agente è fertile e dunque può avere figli: per i maschi l’andropausa va da 50 a 60, per le femmine la menopausa va da 40 a 50; scorta: la scorta di un agente che prima era inizialmente uguale a 10 per tutti gli agenti, ora varia tra 10 e 40; Scorta iniziale: all'inizio della propria vita all'agente viene assegnata una scorta, e questo valore iniziale viene tenuto in memoria in quanto entra a far parte dell'algoritmo di riproduzione.

- 34 -

Le regole per la riproduzione sono semplici e sono le seguenti: 

 



Per definizione un agente è fertile se soddisfa entrambe queste condizioni: o ha un’età maggiore della sua pubertà e minore della sua menopausa o andropausa, cioè è in età fertile; o ha una scorta iniziale che è almeno il doppio della sua scorta iniziale. L’agente selezionato, dopo essersi mosso e aver “mangiato”, se è fertile, ha la possibilità di ispezionare il territorio a lui circostante per trovare un partner per riprodursi; Un agente che cerca un partner, un agente per riprodursi, deve trovarlo nel suo intorno (definito come l’insieme dei suoi primi 8 vicini - in alto, in basso, a desta, a sinistra e in diagonale di una cella-): il partner deve essere di sesso opposto e deve a sua volta essere fertile; se nel suo intorno l’agente trova più di un possibile partner allora sceglierà a caso tra quelli presenti; se non lo trova si passa al turno successivo. Infine, per procreare un nuovo agente “figlio”, deve esistere almeno un posto vuoto (cioè una cella non occupata da nessun agente) nell’intorno di almeno uno dei due genitori. Se esistono più posti vuoti possibili, la “coppia” sceglierà casualmente dove posizionare il nuovo agente figlio; se non esistono posti vuoti nel loro intorno si passa al turno seguente.

Se si verificano queste tre condizioni (fertilità dell’agente selezionato, presenza di un partner fertile e presenza di una cella vuota nell’intorno dei due genitori), allora l’agente selezionato in quel turno genera un nuovo agente con il partner e sceglie casualmente in quale delle celle vuote presenti nel loro intorno posizonarlo. Il procedimento relativo alla verifica della possibilità di riprodursi è riportato in figura 7.

L’agente selezionato in quel turno fa la sua mossa (si sposta e mangia) È in età fertile? NO

SI C’è un agente nel mio intorno? NO

? ? ? ?  ? ? ? ?

SI È fertile e di sesso opposto? NO

SI Intorno a me e al mio partner c’è un posto vuoto? NO

NON FACCIO NULLA (TURNO SUCESSIVO)

? ? ? ? ?  ? ?  ? ? ? ? ?

SI CREO UN NUOVO AGENTE

Figura 7: processo di verifica riproduttiva

Se il processo di verifica riproduttiva non va a buon fine si passa al turno successivo, e quindi alla selezione casuale di un altro agente che faccia la propria mossa. Nel caso, invece, che la verifica vada a buon fine allora avremo la creazione del nuovo agente. Ma che caratteristiche avrà il nuovo agente? - 35 -

9.2. Regole di ereditarietà biologica Analizziamo ora il momento fondamentale della dinamica legata all'evoluzione degli agenti nel nostro sistema: l'algoritmo genetico utilizzato nel nostro sistema. In generale, un algoritmo9 genetico parte da un certo numero di possibili soluzioni, gli individui, chiamate popolazione, e le fa evolvere nel corso dell’esecuzione: ad ogni iterazione l’algoritmo genetico opera una selezione di individui della popolazione corrente, e li utilizza per generare nuovi elementi della popolazione stessa, che andranno a sostituire un pari numero di individui già presenti, e a costituire in questo modo una nuova popolazione per l’iterazione (o generazione) seguente. La successione di generazioni evolve verso una soluzione ottima del problema assegnato. L’evoluzione delle generazioni è ottenuta attraverso una ricombinazione parziale delle soluzioni (ogni individuo trasmette parte del suo patrimonio genetico ai propri discendenti) e l’introduzione di mutazioni10 casuali nella popolazione di partenza (sporadicamente nascono individui con caratteristiche non comprese tra quello presenti nel corredo genetico della specie originaria). Al termine dell’evoluzione, la popolazione delle soluzioni viene analizzata e vengono tenute solo le soluzioni che risolvono il problema nel migliore dei modi, ossia quegli individui che hanno le qualità più adatte a garantire una maggiore probabilità di sopravvivenza e di riproduzione nell’ambiente in cui si trovano. Queste soluzioni saranno poi sottoposte ad una nuova fase di evoluzione e così via. Alla fine ci si aspetta di trovare una popolazione di soluzioni che riescano a risolvere il problema posto in modo adeguato. Non esiste tuttavia il modo di decidere a priori se l’algoritmo sarà effettivamente in grado di trovare una soluzione accettabile, né se la soluzione trovata sia veramente quella “ottima”. Nel nostro caso l’algoritmo genetico è molto più elementare. Il nostro algoritmo genetico parte da una popolazione composta da soli due individui, da due possibili soluzioni. Ognuno di questi due individui è formato da due caratteristiche, due geni: visuale e metabolismo. La selezione di individui della popolazione operata è la semplice selezione degli unici due individui appartenenti alla popolazione e non esistono generazioni, o meglio esiste una sola generazione, che è anche la soluzione finale. La ricombinazione delle soluzioni, il crossover, opera selezionando il gene A dal primo individuo e il gene B dal secondo individuo, oppure vice versa, il gene B dal primo individuo e il gene A dal secondo individuo, come rappresentato in figura 8. Nel nostro modello poi non esistono le mutazioni casuali, e non avrebbe nemmeno senso implementarle in quanto l’algoritmo genetico non evolve in generazioni. Il nuovo individuo ottenuto in questo modo rappresenta la nostra soluzione finale.

7

Algoritmo: metodo per la soluzione di un problema adatto ad essere implementato sotto forma di programma. Esso si può definire come un procedimento che consente di ottenere un risultato atteso eseguendo, in un determinato ordine, un insieme di passi semplici corrispondenti ad azioni scelte solitamente da un insieme finito. 10 Mutazione: nell’accezione più generale del termine una mutazione è una variazione nel materiale genetico (sia DNA che RNA).

- 36 -

Mamma

Papà

ScortaIniziale Visuale

ScortaIniziale Visuale

Meta

Meta

Figlio

Scorta Iniziale & Vis

Met

or Vis

Met

or Vis

Met

or Vis

Met

Figura 8: inizializzazione della scorta iniziale e operatore di crossover su vista e metabolismo.

Come è facilmente comprensibile dall’immagine il nuovo agente avrà un DNA formato da due soli cromosomi: la visuale e il metabolismo. Il nascituro viene creato nello stesso modo in cui vengono creati gli agenti iniziali, con la differenza che la scorta iniziale è data dalla somma di metà scorta iniziale dei genitori, dai quali viene poi prelevata la parte data al figlio, mentre la vista e il metabolismo sono il risultato ottenuto da un operatore di crossover sui genitori. Questo operatore segue la regola mendeliana, per cui il nuovo agente erediterà l’abilità visiva da uno dei due genitori con probabilità uniforme 0,5, ed erediterà il metabolismo da uno dei due genitori sempre con probabilità uniforme 0,5. La posizione dell’agente, infine, è quella trovata dai due genitori prima della procreazione. Adesso che abbiamo analizzato il processo di riproduzione e l’algoritmo genetico che genera nuovi agenti, è possibile dare il via agli esperimenti.

- 37 -

9.3. Quinto esperimento: comportamento delle principali caratteristiche Con il nostro primo esperimento riguardante la genetica andiamo inizialmente ad osservare il comportamento delle principali caratteristiche come avevamo fatto per la prima versione dello SugarScape. A questo scopo il nostro primo ciclo di esperimenti è stato effettuato con un numero di agenti iniziali pari a 240, circa la capacità portante del sistema senza riproduzione. I risultati che riportiamo sono di una singola simulazione ma possono essere considerati rappresentativi di tutti i lanci che abbiamo effettuato.  Andamento demografico nei mille passi della simulazione. Andamento demografico 1100 1000 900

Agenti vivi

800 700 600 500 400 300 200 100

0

100

200

300

400

500 Passi

600

700

800

900

1000

Grafico 15 a: andamento del numero di agenti vivi nel tempo

Come si può osservare dal grafico l’andamento demografico presenta una forte crescita iniziale e una successiva oscillazione attorno al valore corrispondente a 850 agenti. È dunque un sistema oscillante ed il suo andamento temporale è simile a quello di un pendolo, ma torneremo ad analizzare questa (vera) capacità portante del sistema nel prossimo paragrafo.

- 38 -

 Andamento temporale della visuale e del metabolismo Andamento visuale e metabolismo 5 4.5 4 3.5 3

Visuale Metabolismo

2.5 2 1.5 1

0

100

200

300

400

500 Passi

600

700

800

900

1000

Grafico 16: andamento della media della visuale e della media del metabolismo degli agenti vivi ad ogni passo.

Il grafico mostra come nel tempo, gli agenti che sopravvivono tendono ad avere il massimo della visuale e il minimo del metabolismo. Il primo scopo è più faticoso da ottenere, infitti la visuale media tende sempre più a 5 anche se il suo massimo valore è 6. Un basso metabolismo invece è ottenuto quasi subito: nei primi 200 anni di vita la media del metabolismo degli agenti diminuisce drasticamente e molto più velocemente di quanto non faccia la visuale. Da quel momento in poi il metabolismo rimane stabile a uno fino alla fine della simulazione. Il metabolismo di ogni agente può variare da 1 a 5 ma, come abbiamo scoperto precedentemente, gli agenti con metabolismo 5 muoiono molto velocemente in quanto nel mondo le colline di zucchero possono contenere al massimo quattro unità di zucchero. Gli agenti con metabolismo 4 invece hanno una piccolissima probabilità in più di sopravvivere ma devono essere fortunati e cadere inizialmente in cima ad una collina, o avere una scorta iniziale molto alta che gli permette di raggiungerla. Ad ogni modo, una volta raggiunta la collina è comunque difficile che sopravviva a lungo e la sua probabilità di sopravvivenza diminuisce con l’aumentare del numero di agenti, perché maggiore è il numero di agenti, maggiore è l’affollamento sulle colline e più difficile sarà per l’agente spostarsi e trovare celle contenenti quattro unità di zucchero. Con l’andare del tempo quindi tenderà ad usufruire sempre più della sua scorta iniziale e morirà quando essa sarà terminata. Sarà più difficile per lui anche la riproduzione in quanto una delle condizioni affinché un’agente abbia la possibilità di riprodursi è il possesso di una quantità di scorta almeno uguale al doppio della sua scorta iniziale. Se la sua scorta iniziale è alta avrà più probabilità di raggiungere la cima della collina, ma avrà come contro minori possibilità di accumulare scorta per potersi riprodurre. Un agente con metabolismo quattro dunque tenderà a morire senza generare molti figli, di conseguenza, dopo un certo periodo di tempo, il suo gene (metabolismo 4) tenderà a morire con lui in quanto parteciperà sempre meno spesso alla selezione nell’algoritmo genetico. Un ragionamento analogo può essere effettuato per gli agenti con metabolismo pari a tre, due e una unità di zucchero, con la conclusione che l quantità di metabolismo che permette agli agenti di sopravvivere più a lungo e di riprodursi è quella che ha più probabilità di essere selezionata per la - 39 -

creazione dei figli, che avranno le caratteristiche dei genitori. Dunque alla fine il gene metabolismo 1 vince sugli altri e a poco a poco tutti gli agenti finiscono per arrivare a tale risultato. Per la visuale il ragionamento è analogo ma, dato che come abbiamo spiegato precedentemente, la visuale è una variabile che influenza meno del metabolismo la sopravvivenza degli agenti (ipotesi confermata più volte), essa tende verso il suo valore “ottimo” meno velocemente. Possiamo dunque riconfermare la sua secondaria importanza per la sopravvivenza in questo mondo. Per avere un’ulteriore conferma di quanto appena descritto, mostriamo un ulteriore grafico riguardante l’andamento medio del metabolismo e della vista degli agenti fertili (Grafico 17). Media metabolismo e visuale degli agenti fertili 5 4.5 4 3.5 3 2.5 2 1.5 1

0

50

100

150

200

250 Passi

300

350

400

450

500

Grafico 17: andamento medio della visuale e del metabolismo degli agenti fertili

Confrontando questo grafico con quello relativo all’andamento medio della visuale e del metabolismo si può notare che la media del metabolismo degli agenti fertili parte da 1,75 per abbassarsi al minimo (che equivale a uno) nei primi 150 passi, mentre la media del metabolismo di tutti gli agenti parte da 2,40 per abbassarsi e arrivare al minimo in 200 passi. Per quanto riguarda gli agenti fertili quindi, questa stabilizzazione avviene in un tempo minore. Per quanto riguarda la visuale, invece, il comportamento non varia sensibilmente che si analizzi la curva delle medie di tutti gli agenti o la curva della media degli agenti fertili; in entrambi i casi parte da tre per tendere, più lentamente rispetto al metabolismo, a cinque senza comunque arrivarci, e le due curva hanno un andamento molto simile.

- 40 -

 Andamento temporale degli agenti nati, degli agenti morti e degli agenti fertili. Andamento della natalità, della mortalità e della fertilità 600

Nati Morti Fertili

500

Agenti

400

300

200

100

0

0

200

100

400

300

500 Passi

600

700

900

800

1000

Grafico 18: andamento del numero di agenti morti (linea nera), del numero di agenti nati (linea rossa) e del numero di agenti fertili (linea azzurra) ad ogni passo.

La prima cosa che salta agli occhi guardando questo grafico è che il numero di nati e il numero di morti ad ogni passo si rincorre sovrapponendosi e si mantiene sempre allo stesso livello. Per analizzare più in dettaglio questi due andamenti li proponiamo di seguito separati dall’andamento della fertilità. Natalità e mortalità ad ogni passo 25

Nati Morti 20

Agenti

15

10

5

0

0

100

200

300

400

500 Passi

600

700

800

900

1000

Da questa immagine si capisce meglio che inizialmente sia i nati che i morti sono pochi, poi – prima il numero di nati e poi il numero di morti – inizia ad aumentare e ad oscillare intorno allo stesso valore. - 41 -

L’andamento più interessante è quello degli agenti fertili; esso ha una breve caduta nei primi cinquanta passi, una crescita esagerata (fino a 500 agenti) fino al passo 130 e poi inizia un movimento oscillatorio simile a quello di un pendolo con attrito che tende ad un punto di equilibrio, e simile all’andamento demografico visualizzato nel grafico 15. Approfondendo meglio l’andamento degli agenti fertili abbiamo messo in relazione l’andamento della fertilità con il totale degli agenti nel sistema, abbiamo cioè sovrapposto le due curve e visualizzate in un singolo grafico, che mostriamo di seguito: Agenti fertili rispetto al totale degli agenti ad ogni passo 1200

Totale agenti Agenti fertili 1000

Agenti

800

600

400

200

0

100

0

200

300

400

500 Passi

600

700

800

900

1000

Grafico19 : Andamento della fertilità in relazione all’andamento demografico

Da questo grafico si può osservare non solo che l’andamento degli agenti fertili è simile a quello del totale degli agenti ma che i due presentano dei picchi e delle valli negli stessi istanti di tempo. Torneremo alla discussione di questi andamenti in seguito.  Andamento della ricchezza. Andamento della Ricchezza 300

Media Mediana Minimo Massimo

250

Ricchezza

200

150

100

50

0

0

100

200

300

400

500 Passi

600

700

800

900

1000

Grafico 20: media, mediana, minimo e massimo valore della ricchezza degli agenti ad ogni passo.

Il grafico relativo all’andamento della ricchezza parte da un valore medio iniziale di 25 (valore che conferma il corretto funzionamento dell’implementazione in quanto le scorte iniziali variano da un minimo di 10 unità di zucchero ad un massimo di 40 unità di zucchero: in media esattamente 25), - 42 -

ha una crescita iniziale e comincia a stabilizzarsi dopo il centesimo passo attorno ad un valore di circa 40 unità di zucchero. Anche in questo caso dunque, come per l’andamento della natalità, della mortalità, e della fertilità, si presenta una condizione di inizio stabilizzazione attorno al centesimo passo. È curioso notare che, mentre gli andamenti della ricchezza minima e della ricchezza massima ad ogni passo mostrano un’oscillazione irregolare, l’andamento della media e della mediana della ricchezza mostra un’oscillazione più morbida e regolare. Utilizziamo in questa sede l’aggettivo irregolare per descrivere un andamento oscillatorio che, all’interno di ogni sua singola oscillazione, è composto da altre oscillazioni e che presenta picchi e cali duri, rigidi, per dirla in termini grafici, “a punta”. Utilizziamo invece l’aggettivo regolare per descrivere un andamento oscillatorio che ha onde di forme morbide, in termini grafici una oscillazione è una curva senza “spigoli”. Pensiamo che questa differenza sia dovuta al fatto che la curva del minimo e la curva del massimo sono disegnate considerando singoli valori (la ricchezza minima/massima ad ogni passo), mentre le altre due curve sono disegnate considerando la media in un caso e la mediana nel secondo caso di un insieme ampio di valori. È altrettanto curioso notare che la curva rappresentante il massimo della ricchezza sembra avere un suo minimo settato al valore 100 unità di zucchero. Sembra che essa cerchi di raggiungerlo e che nel momento in cui lo raggiunge ci sia una forza che la respinge verso l’alto, per poi lasciarla andare e lasciarla tendere nuovamente verso il suo minimo. La stessa cosa, ma in senso opposto, si può dire della curva raffigurante il minimo della ricchezza: essa sembra avere un suo massimo, sembra che cerchi di raggiungerlo e che quando lo raggiunge ci sia una forza che le imprime una spinta verso il basso, per poi lasciarla andare e lasciarla tornare a tendere verso il suo massimo. Si può spiegare il curioso andamento della curva del massimo della ricchezza considerando il fatto che, dopo un primo periodo le scorte di partenza degli agenti sono molto simili e un agente che si riproduce tenderà ad avere una scorta di 100 unità di zucchero, il “minimo del massimo”. Le crescite dal minimo sono date dagli agenti che non sono in età fertile e dunque non si riproducono e non danno quindi metà della loro scorta iniziale al figlio. Analogamente, si può trovare una risposta al comportamento della curva di minimo analizzando la possibile vita di un agente che cade in un punto dello sugarscape in cui le risorse del terreno sono pari ad 1 e che, non avendo una vista sufficientemente lunga passa il suo tempo in quel punto perché non riesce mai a raggiungere posti migliori. Una volta che le dinamiche del sistema hanno portato il metabolismo degli agenti intorno al suo valore minimo, è poi improbabile che nascano agenti con metabolismo diverso da 1 o da 2. Un agente che vive con metabolismo 1 in un'area con quantità di risorse pari a 1 non morrà per mancanza di risorse in quanto ogni anno perde un valore unitario ma, allo stesso tempo, ogni anno lo riguadagna. Questo ipotetico agente non accrescerà mai la sua quantità ricchezza e vivrà con quella che gli è stata assegnata in partenza, fino a quando non muore di vecchiaia. Nel nostro algoritmo genetico abbiamo definito la ricchezza iniziale di un'agente come la somma di metà della ricchezza iniziale dei propri genitori. Dopo un certo numero di passi la selezione all'interno del modello avrà portato ad avere degli agenti molto simili che saranno la conseguenza del processo di selezione venutosi a formare nei primi 200 anni circa del modello. Da qui in poi la quantità di risorse di partenza dei nostri agenti sarà molto simile quindi il nostro agente ipotetico la porterà fino alla morte. Le oscillazioni sono date dal fatto che nel sistema non ci sono solo agenti con metabolismo 1, il valore medio del metabolismo (1,12) ci dice che, malgrado siano la stragrande maggioranza gli individui con metabolismo 1, sono presenti anche agenti con metabolismo 2. Quando questi nascono e vivono sulle collinette poco succede in quanto la loro posizione sullo sugarscape permette loro di sopravvivere, ma quando qualcuno di questi finisce nella zona con risorse pari ad 1 lentamente comincia il proprio processo di avvicinamento alla morte. Una volta morto il sistema tornerà ad avere come punto massimo di minimo il valore relativo alle scorte iniziali degli agenti con metabolismo 1, ed ecco spiegato il perché di questo punto “massimo del minimo”. - 43 -

 Distribuzione finale della ricchezza Distribuzione della ricchezza 250

Frequency

200

150

100

50

0

0

20

40

60

80

100

120

Zucchero

Grafico 21: distribuzione finale della ricchezza degli agenti.

L’istogramma rappresentato nel grafico qui sopra mostra una distribuzione finale della ricchezza che assomiglia ad una distribuzione a campana con una coda destra lunga e una coda sinistra pressoché inesistente. Essa assomiglia alla “semi” curva a campana risultante dalla prima variante dello SugarScape, quella con sostituzione degli agenti morti, con l’aggiunta – sebbene breve – di una coda sinistra. Di conseguenza questa distribuzione essere un po’ più paritaria rispetto a quella del modello precedente; questa osservazione ci è confermata dal coefficiente di Gini che, per questa simulazione, è risultato 0,1662, ma che anche negli altri lanci è sempre risultato vicino a questo valore e comunque sempre più basso rispetto ai coefficienti degli esperimenti con le altre versioni del modello. Dato che il coefficiente di Gini è una misura di ineguaglianza, più il suo valore è basso, più equamente è distribuita la ricchezza all’interno del nostro mondo; e 0,16 si può considerare un buon risultato, almeno rispetto a quelli ottenuti precedentemente. Lo SugarScape con riproduzione sessuata risulta quindi essere più equo nella distribuzione delle risorse di quanto lo sia lo SugarScape con sostituzione degli agenti e molto più equo dello SugarScape base. È da tenere in considerazione comunque che il coefficiente di Gini sopra riportato è stato calcolato alla fine della simulazione, ma il suo andamento non è sempre costante all’interno della stessa. Infatti, come tutti gli altri parametri considerati, anche il coefficiente di Gini ha un iniziale periodo di assestamento, in cui il suo valore risulta più elevato (e quindi la ricchezza è meno equamente distribuita), e raggiunge poi un sostanziale stabilità dopo circa 200 passi; stabilità che poi mantiene nel tempo. L’andamento temporale del coefficiente di Gini è rappresentato nel grafico sottostante.

- 44 -

Andamento del coefficiente di Gini 0.26

0.24

0.22

0.2

0.18

0.16

0

50

100

150

200

250 passi

300

350

450

400

500

Grafico 22: andamento del coefficiente di Gini

Passiamo ora ad analizzare come varia il numero di agenti femmine e di agenti maschi nel corso della simulazione. È facilmente prevedibile che essi siano molto simili tra loro, in primo luogo perché ogni agente, sia quelli inizializzati e immessi nel sistema, sia quelli che nascono durante il decorso della simulazione, hanno una equa probabilità (0,5) di essere maschi o femmine. In secondo luogo, una disparità fra queste due misure darebbe luogo a meno nascite rispetto a quelle che il sistema mostra. L’andamento della distribuzione dei sessi è riportato nel grafico 23. Distribuzione dei sessi 600

500

Agenti

400

Femmine Maschi 300

200

100

0

0

100

200

300

400

500 passo

600

700

800

900

1000

Grafico 23: andamento della distribuzione dei sessi.

Quello che avevamo previsto è quello che in effetti è successo, questi valori rimangono sempre attorno alla media del 50%, ma dal grafico appare una informazione aggiuntiva che non avevamo previsto a priori: l’andamento del numero di agenti maschi e quello di agenti femmina, se presi singolarmente mostrano un semplice andamento oscillatorio, ma se considerati insieme è subito visibile che essi si intrecciano e sembra che si rincorrano disegnando un andamento che ricorda la dinamica del modello lineare di due popolazioni interagenti con β1 e β2 Numeri complessi, immaginari congiunti.

- 45 -

Ovviamente le oscillazioni non sono regolari come quelle del modello lineare, ma presentano comunque una vaga somiglianza.  Visualizzazione dello stato dello SugarScape al termine della simulazione: Sugarscape

5

10

15

20

25

30

35

40

45

50 5

10

15

20

25

30

35

40

45

50

Figura 9: Sugarscape

In questo grafico abbiamo voluto mostrare lo stato del nostro mondo dopo mille passi: le crocette azzurre indicano gli agenti maschi non fertili, i cerchi azzurri indicano i maschi fertili, le croci rosse le femmine non fertili e i cerchi rossi le donne fertili. La distinzione fra le due collinette è ancora visibile, infatti il blu chiaro indica zucchero pari a 0, il blu indica una unità di zucchero, il verde due, l’arancione tre e il rosso scuro (assente) quattro. Però non sono più così ben distinguibili i gradini delle colline. La popolazione è migrata sulle due colline e sembra essere equamente distribuita tra le due. Questo risultato finale è quello tipico, ma è interessante informare del fatto che, dopo che gli agenti sono paracadutati nel mondo – e che sono quindi sparsi in modo casuale occupando tutto il mondo – alle volte è possibile osservare che inizialmente, quando sono ancora in pochi, è possibile osservare una migrazione verso solo una delle due colline. Durante i nostri esperimenti è capitato più volte che gli agenti, durante i primi passi, occupassero solo una delle due colline, lasciando la seconda inabitata, e che successivamente, con l’aumentare del numero di agenti, andassero a popolare via via anche la seconda collina. Da una osservazione e un’analisi globale del sistema si può notare che nei primi 100-150 passi il sistema ha un comportamento esplosivo, mentre subito dopo inizia a stabilizzarsi e a tendere verso i suoi valori “ottimali”; ottimali ovviamente in relazione alle caratteristiche dell’ambiente che stanno abitando. All’inizio infatti la diversità tra agenti è più ampia mentre con il trascorrere simulato del tempo essi tendono ad essere mediamente sempre più uguali. Quando la diversità è alta si hanno valori di ricchezza esageratamente alti rispetto alla media, esiste qualcuno che è effettivamente molto più ricco della media (250 unità di zucchero rispetto alle successive 100 unità di zucchero come ricchezza massima quando essa si stabilizza), un numero di agenti fertili pari a 500, quando successivamente la media si aggira intorno ai 400, e una media/mediana della ricchezza che fa una specie di onda iniziale, cresce e si riabbassa nei primi cento passi, per poi stabilizzarsi intorno a 40 unità di zucchero. - 46 -

9.4. Sesto esperimento: capacità portante del sistema Come abbiamo visto nel paragrafo predente, l’andamento demografico, dopo un primo periodo di assestamento, presenta una continua oscillazione attorno al valore 850 agenti. In generale, anche negli alti lanci, la capacità portante del sistema si aggira tra gli 800 e i 900 agenti. Più precisamente, da un ciclo di cinque simulazioni è risultata una capacità portante del sistema pari a 836 ± 14 agenti. Il nostro è dunque un sistema oscillante che presenta un andamento temporale simile a quello di un pendolo. Per verificare se l’oscillazione è smorzata come quella di un pendolo in presenza di attrito, che tende allo stato di equilibrio, oppure è continua nel tempo (come quella di un pendolo che, in assenza di attriti, continua le sue oscillazioni nel tempo senza che esse diminuiscano a poco a poco la loro forza fino a fermarsi - comportamento tipico di un sistema dissipativo) abbiamo continuato la stessa identica simulazione per altri mille passi, ottenendo così la stessa simulazione per un maggior periodo di tempo, 2000 passi. La possibilità di poter ripetere la stessa identica simulazione ci è data dall’utilizzo di una particolare funzione di Matlab che permette di impostare un seme random che consente di riprodurre la stessa serie di numeri casuali utilizzati nelle funzioni. La possibilità, invece, di continuare la stessa simulazione dalle sue condizioni finali deriva dall’implementazione di una nuova funzione che è identica a quella principale ma che invece di inizializzate le matrice del mondo, della capacità e delle posizioni, il vettore di strutture relativo agli agenti e tutti i vettori di interesse, li carica direttamente da file e riparte da quelli. In altre parole alla fine della prima simulazione (quella che parte dal passo 1), anziché farci restituire come output i grafici finali ed i valori di nostro interesse, ci facciamo scrivere su file di testo come sono strutturate le matrici (inizializzate a inizio simulazione) in quell’istante di tempo (ad esempio al passo 1000). Successivamente, se se ne presenta la necessità, possiamo caricare i file scritti alla fine della “prima” simulazione e continuarla nel tempo (dal passo 1000 fino al passo di nostro interesse). Il risultato di questo continuo di simulazione è riportato di seguito di seguito (Grafico 15 b)11 AndamentoDemografico 1100 1000 900

Agenti vivi

800 700 600 500 400 300 200 0

200

400

600

800

1000

1200

1400

1600

1800

passi

Grafico 15 b: andamento degli agenti vivi ad ogni passo. Sugarscape 2000 passi, 240 agenti iniziali, seme random 8765

11 Per rendere ripetibili gli esperimenti riportiamo di seguito le funzioni utilizzate: sugarscape0 (1000, 240) con seme random 8765 e ContinuaSugarscape0 (2000,5000), stesso seme random.

- 47 -

L’immagine riportata fa pensare che questo sistema sia simile a quello di un pendolo senza attrito, che continua ad oscillare nel tempo senza mai smorzarsi e tendere ad un punto di equilibrio. È però da notare che in corrispondenza del passo 1200 c’è una specie di piccolo assestamento. Dopo i primi passi in cui il sistema si assesta e fino a quel momento i valori continuano ad oscillare tra 800 e 900 agenti, tra i passi 1100 e i 1300 invece la valle disegnata dall’andamento è meno marcata delle precedenti. Successivamente poi il sistema ritorna ad oscillare tra gli 800 e i 900 agenti. Per verificare se questo assestamento è un caso oppure se questo assestamento si ripete nel tempo, e se si ripete nel tempo, se ha una regolarità nel ripetersi, abbiamo continuato la stessa simulazione fino ad arrivare al passo 5000. Il risultato dell’andamento demografico è riportato di seguito. Andamento demografico 1100 1000 900 800

Agenti vivi

700 600 500 400 300 200 100

0

500

1000

1500

2000

2500 Passi

3000

3500

4000

4500

5000

Grafico 15 c: andamento demografico, Sugarscape 5000 passi, 240 agenti iniziali, seme random 8765

Il continuo di questa simulazione ci mostra che piccoli assestamenti sono presenti più di una volta durante la simulazione. Essi però non sembrano presentare nessun tipo particolare di regolarità. È infine da notare che le oscillazioni non sono regolari ma presentano delle oscillazioni nelle oscillazioni, anche se non queste oscillazioni per così dire “secondarie” sono anch’esse irregolari e non possono certamente essere paragonate alle onde di Elliott.

- 48 -

9.4.1 Capacità portante al variare del numero di agenti iniziali Per analizzare invece la capacità portante del sistema in relazione al numero di agenti inizialmente immessi, lanciamo la stessa simulazione di quella precedente prima con 100 agenti poi con 400 agenti iniziali anziché i precedenti 240. I risultati sono riportati di seguito; gli stessi grafici sono riportati prima per il lancio con 100 agenti e affianco la stessa caratteristica ma per il lancio con 400 agenti. Ricordiamo che questi due lanci possono essere singolarmente confrontati in quanto rappresentano lo stesso esperimento in condizioni diverse.

Andamento demografico

Andamento demografico

1200

1100 1000

1000

900 800

Agenti vivi

Agenti vivi

800

600

400

700 600 500 400

200

300 0

100

0

200

300

400

500 Passi

600

800

700

900

200

1000

1000

800

600

400

200

0

Passi

24: Sugarscape 1000 passi e 100 agenti (a sinistra) 1000 passi e 400 passi (a destra), seme random 8765. Andamento demografico.

L’andamento demografico della simulazione con 100 agenti oscilla intorno a 950 agenti e sembra essere aumentato rispetto alla capacità portante della simulazione con 240 agenti – che d’ora in avanti chiameremo “tipica”- che era di 850 agenti. L’andamento demografico della simulazione con 400 agenti invece oscilla attorno a 900 agenti e sembra essere diminuito rispetto alla precedente capacità portante, ma è comunque più elevata di quella della simulazione tipica. Sembra dunque che non ci sia una stretta correlazione tra il numero di agenti iniziali immessi nel mondo e il numero di agenti che il mondo è in grado di ospitare. Analizziamo ora le altre caratteristiche principali. Andamento della Ricchezza

Andamento della Ricchezza

200

250

Media Mediana Minimo Massimo

200

Media Mediana Minimo Massimo

180 160 140 120

Ricchezza

Ricchezza

150

100

100 80 60 40

50

20 0

0

100

200

300

400

500 Passi

600

700

800

900

1000

0

0

100

200

300

400

500 Passi

600

700

800

900

1000

Grafico 25: Sugarscape 1000 passi e 100 agenti (a sinistra), 400 agenti (a destra), seme randam 8765. Andamento della ricchezza media (linea blu), mediana (linea nera), minima (linea rossa) e massima (linea arrurra).

- 49 -

La prima delle caratteristiche esaminate riguarda l’andamento della ricchezza nel tempo. Essa sembra non subire rilevanti modifiche al variare del numero di agenti e, in entrambi i casi, dopo un picco iniziale continua ad aggirarsi intorno al valore 30 per lo sugarscape con 100 agenti, 35 per lo SugarScaper tipico e 40 per lo SugarScape con 400 agenti. È presente un lievissimo aumento della ricchezza media all’aumentare del numero di agenti ma non è proporzionale e probabilmente è dovuto al fatto che con pochi agenti iniziali, in questi esperimenti, la capacità portante del sistema è lievemente maggiore delle altre e, maggiore è il numero di agenti vivi, minore è la ricchezza di ognuno. Questo perché il mondo cresce indipendentemente dal numero di agenti e, dopo un periodo di assestamento in cui gli agenti hanno la possibilità di consumare le proprie scorte e raggiungere le colline, gli agenti sopravvivono con quello che produce il mondo. Ovviamente quando si riproducono i nuovi agenti hanno una scorta iniziale che sarà maggiore della media delle scorte degli agenti che sono già nati da alcuni passi. Forse questo spiega anche il motivo delle oscillazioni della capacità portante del sistema: compaiono delle crescite in concomitanza delle crescite dell’andamento delle nascite, e dei cali quando compaiono dei cali nelle nascite.

Andamento dell nascite, della mortalità e della fertilità 600

500

500

400

400

Agenti

Agenti

Agenti nati, morti e fertili ad ogni passo 600

300

Nati Morti Fertili

200

300

Nati 200

Morti

Fertili 100

100

0

0

100

200

300

400

500 Passi

600

700

800

900

1000

0

0

100

200

300

400

500 Passi

600

700

800

900

1000

Grafico 26: sugarscape con 1000 passi e 100 agenti iniziali (a sinistra), 400 agenti iniziali (a destra), seme random 8765. Andamento della natalità (linea rossa), della mortalità (linea nera) e della fertilità (linea azzurra) degli agenti.

L’andamento della fertilità non subisce molte variazioni, nel senso che continua comunque ad oscillare inizialmente tra i 300 e i 600 agenti per tendere poi sempre più verso i 400 agenti fertili. Una differenza però è che con 100 agenti l’oscillazione si smorza più velocemente che non rispetto all’oscillazione presentata nello SugarScape con 400 agenti. Questo comportamento è speculare a quello dell’andamento demografico: il sistema con più agenti iniziali impiega più tempo a raggiungere la sua stabilità. Il successivo confronto riguarda la distribuzione finale della ricchezza e i relativi coefficienti di Gini (Grafico 28 a e Grafico 28 b).

- 50 -

Distribuzione della ricchezza 350

300

300

250

250

Frequency

Frequency

Distribuzione della ricchezza 350

200

150

200 150

100

100

50

50

0 10

20

40

30

50 Zucchero

80

70

60

0

90

40

20

0

60

80

140

120

100

Zucchero

Grafico 27 a: sugarscape con 1000 passi e 100 agenti iniziali (a sinistra), 400 agenti iniziali (a destra), seme random 8765. Distribuzione finale della ricchezza. 3.5

x 10

4

3.5 Curva di Lorenz Curva ideale

3

2.5

2.5

2

2

1.5

1

0.5

0.5

0

100

200

300

600 500 400 Popolazione

Ricchezza: curva di Lorenz e curva di equi-distribuzione

Curva di Lorenz Curva ideale

1.5

1

0

x 10

3

Ricchezza

Ricchezza

4

Ricchezza: curva di Lorenz e curva di equi-distribuzione

700

800

900

1000

0

0

200

600 400 Popolazione

800

1000

Grafico 28 b: SugarScape 1000 passi, 100 agenti iniziali (a sinistra), e 400 agenti iniziali (a destra), seme 8765. Coefficiente di Gini: 0,1677 (a sinistra) e 0,1655 (a destra).

Entrambi gli istogrammi mostrano una distribuzione finale della ricchezza con un andamento che ricorda la distribuzione gaussiana. Nel primo caso però l’andamento ha una forma più a campana rispetto al secondo, diciamo che nell’istogramma riguardante lo SugarScape con 100 agenti la coda sinistra è più consistente rispetto a quella dell’istogramma riguardante lo SugarScape con 400 agenti. Tuttavia in entrambi i casi la maggior parte degli agenti ha una scorta tra le dieci e le cinquanta unità di zucchero e il coefficiente di Gini ci da un’idea più chiara riguardo all’equità delle distribuzioni. I due coefficienti di Gini sono molto simili: quello riguardante la prima simulazione è pari a 1,677 e quello riguardante la seconda simulazione è 1,655. La ricchezza è equamente distribuita in entrambi i casi, lievemente più nel secondo caso. La nostra ipotesi è che, essendoci più agenti finali nella seconda simulazione, ed essendo le risorse del terreno date, la stessa quantità di risorse è ripartita fra più agenti, e risulta quindi una distribuzione leggermente più equa.

- 51 -

Andamento visuale e metabolismo

Andamento visuale e metabolismo

5.5

5

5

4.5

4.5 4

4 3.5

3.5

Visuale Metabolismo

3

3

Visuale

2.5

Metabolismo

2.5

2 2

1.5 1.5

1

1

0.5 -200

0

200

600

400

800

1200

1000

0

100

Passi

200

300

400

500 Passi

600

700

800

900

1000

Grafico 29: Sugarscape 1000 passi, 100 agenti (a sinistra) e 400 agenti (a destra), seme random 8765. Andamento della visuale media (linea nera nella errorbar e linea blu nel secondo grafico) e del metabolismo medio (linea rossa)

L’andamento della media del metabolismo e della media della visuale è pressoché invariato; anche se mostrato con la barra di errore nel grafico relativo allo SugarScape con 100 agenti e senza barra di errore nello SugarScape con 400 agenti, esso ha lo stesso andamento descritto in precedenza (cfr 9.3. grafico 16). In conclusione si può supporre che, a differenza delle altre due versioni del modello, lo SugarScape con riproduzione sessuata ha certe caratteristiche che non variano sensibilmente al variare del numero di agenti immessi nel sistema. Queste caratteristiche sono:       

la capacità portante del sistema: la capacità di contenere un certo numero di agenti; una certa distribuzione delle risorse per agenti e il coefficiente di Gini; l’andamento evolutivo della vista e del metabolismo; l’andamento nel tempo della media delle ricchezze per agente; l’andamento nel tempo degli agenti nati; l’andamento nel tempo degli agenti morti; l’andamento nel tempo degli agenti fertili.

Riportiamo di seguito le misura di sintesi delle caratteristiche analizzate nelle tre simulazioni: Agenti iniziali 100 240 400

Capacità portante 950 850 900

Gini

Vista

Metabolismo

0,1677 0,1662 0,1655

5 5 5

1 1 1

Ricchezza media 30 35 40

Nati

Morti

Fertili

12 12 12

12 12 12

450 400 410

Tabella 8: misure di sintesi delle caratteristiche principali per tre simulazioni dello Sugarscape.

Da questa tabella di sintesi possiamo concludere che, a parte variazioni non sensibili di alcuni dati, il nostro sistema non sembra cambiare comportamento al variare del numero di agenti immessi inizialmente nel mondo. Dall’osservazione dei grafici e dai risultati ottenuti, dopo un primo periodo di assestamento le caratteristiche mostrate dagli esperimenti sono molto simili. Questo significa che qualunque siano le condizioni iniziali del sistema questo porterà il numero degli agenti presenti intorno a quella che possiamo ora definire la vera capacità portante del sistema. La capacità portante definita durante i primi esperimenti era molto condizionata da un insieme di variabili e non era probabilmente abbastanza significativa per poter verificare le capacità del sistema. - 52 -

9.4.2 Capacità portante al variare delle risorse del terreno Quello che emerge dalle analisi dei primi esperimenti ci ha fatto sempre più pensare che l’elemento che è più in grado di far variare la capacità portante è il mondo stesso del nostro SugarScape. Il mondo inteso come la quantità di risorse del terreno, in altre parole, la nostra matrice capacità. Per verificare le nostre ipotesi lanciamo due simulazioni variando la capacità massima di zucchero per ogni cella; andiamo ossia a variare la forma delle collinette. Partiamo inizialmente da due collinette di altezza massima pari a tre e variamo poi questa misura settandola a cinque. Successivamente proviamo a modificare anziché l’altezza, la base delle collinette, variando quindi i parametri sigmax e sigmay che ne determinano la larghezza. Effettuiamo dunque gli esperimenti con 100 agenti iniziali e per una durata di 500 passi (durata che permette al sistema di raggiungere una sua stabilità). Nel primo esperimento con colline basse gli agenti muoiono tutti nei primi 250 passi. Analizzando il grafico delle nascite e delle morti verifichiamo che gli agenti fanno in tempo a riprodursi perché le nascite esistono e hanno lo stesso andamento che hanno negli altri esperimenti tipici, tuttavia la mortalità è più elevata e continua fino a che non muoiono tutti gli agenti; la natalità invece finisce al passo 150. Le nascite dunque sono meno numerose delle morti. Il grafico relativo alla fertilità ci dice che la fine delle nascite è concomitante alla fine degli agenti fertili ed è quindi coerente con il precedente risultato: la fertilità muore e non rinasce più, di conseguenza gli agenti rimasti vivi al passo 150 non sono in grado di raccogliere abbastanza zucchero per potersi riprodurre e possono solo aspettare che la loro età sia equivalente a quella della loro morte. Le altre caratteristiche non riportano nulla di particolarmente interessante ai nostri occhi; seguono gli andamenti previsti, di conseguenza riportare e spiegare i loro grafici sarebbe inutile. Lo stesso esperimento è stato effettuato con colline più alte, pari a cinque, e i risultati ottenuti sono in linea alle nostre aspettative. Anche in questo caso riportare i grafici e una loro descrizione sarebbe ridondante, di conseguenza ci limitiamo a dire che la capacità portante del sistema ha un andamento identico a quella degli esperimenti tipici, l’unica differenza è che raggiunge e oscilla attorno ad un valore più alto. Essendo più alte le colline e maggiore la quantità di zucchero presente sul territorio, il numero di agenti che il sistema è in grado di far sopravvivere è maggiore e si aggira attorno ai mille agenti. Lo stesso vale per la curva della fertilità: essa ha un andamento tipico ma oscilla attorno ai 450 agenti anziché sui 400 come nei precedente esperimenti. L’andamento della ricchezza è speculare alle simulazioni tipiche, la distribuzione finale della ricchezza è anch’essa analoga, come lo è il coefficiente di Gini, pari allo 0,1666. Anche l’andamento delle medie della visuale e del metabolismo di tutti gli agenti del sistema ad ogni passo e quello degli agenti fertili è identico a quello della simulazione tipica. L’unica considerazione che si può trarre è che aumentando l’altezza delle colline aumenta la capacità portante del sistema; aumentando il numero di agenti vivi del sistema aumenta anche il numero di agenti fertili. Questi risultati però ci aprono la strada ad altre due considerazioni, ossia:  

che relazione c’è tra l’andamento demografico e l’andamento delle risorse dello sugarscape? Che relazione c’è tra numero di agenti vivi e numero di agenti fertili? Il loro rapporto è costante?

Per rispondere alla prima domanda abbiamo lanciato la stessa simulazione eseguita per studiare la capacità portante del sistema con colline di altezza cinque e ci siamo fatti restituire l’andamento delle risorse del terreno ad ogni passo. Il risultato è presentato nel grafico sottostante.

- 53 -

Ricchezza del terreno 6000 5500 5000

Zucchero

4500 4000 3500 3000 2500 2000 1500

100

50

0

200

150

250 Passi

350

300

400

450

500

Grafico 30: andamento delle risorse dello Sugarscape. Sugarscape 500 passi, 100 agenti, seme random 8765.

Il Grafico 30 ci mostra come le risorse presenti sul territorio siano inizialmente molto elevate, ma subiscano un brusco calo fin dai primi passi, per trovarsi poi ad oscillare tra 1500 e 2000 unità di zucchero. Anche questo dato dunque è in linea con gli altri analizzati e segue il l’andamento degli altri grafici. L’aumento nei primi passi delle risorse del territorio tende ad aumentare in relazione al fatto che sono presenti le prime morti in assenza di nascite di nuovi agenti. Successivamente le risorse del terreno subiscono un calo repentino per una durata di un centinaio di anni, periodo corrispondente all’esplosione demografica. A questo punto esse raggiungono il punto di stabilità attorno ad un valore molto inferiore di quello iniziale. Questo andamento oscillatorio è conforme al fatto che il sistema non è sempre a pieno carico, in quanto gli agenti che si muovono mangiano tutte le risorse del terreno ma il terreno ci impiega da 1 a 4 passi per tornare alla capacità massima in quel punto. Per rispondere alla seconda domanda abbiamo invece calcolato il rapporto tra agenti vivi ad ogni passo e agenti fertili ad ogni passo, per verificare se esso è costante, come ci aspettiamo, oppure ha un andamento regolare o caratteristico. Il grafico 31 mostra l’andamento nel tempo di tale rapporto. Percentuale di agenti fertili 0.65

0.6

% Agenti

0.55

0.5

0.45

0.4

0.35

0

50

100

150

200

250 Passi

300

350

400

450

500

Grafico 31: andamento temporale del rapporto tra agenti fertili e agenti vivi.

Dal grafico si può capire che anche la percentuale di agenti fertili sugli agenti vivi ha bisogno di un periodo di assestamento, per poi stabilizzarsi. Inizialmente la percentuale è bassa - 0,33 - perché gli agenti sono appena stati paracadutati nel sistema, successivamente la percentuale aumenta - 54 -

drasticamente fino ad un picco di 0,56% e coincide con le due curve vicine durante il boom demografico. Infine anche questo rapporto va incontro alla sua stabilità che si aggira intorno al 47% di agenti fertili rispetto al totale degli agenti e ci rimane per il corso di tutta la simulazione. Andando invece a variare la larghezza delle collinette, otteniamo che la massima capacità che il mondo può avere nei successivi due lanci è quella riportata nelle figure sottostanti. 5

5

10

10

15

15

20

20

25

25

30

30

35

35

40

40

45

45

50

50 5

10

15

20

25

30

35

40

45

5

50

Figura 10: Sugarscape sigmax = 7 e sigmay = 7.

10

15

20

25

30

35

40

45

50

Figura 11: Sugarscape con sigmax = sigmay = 10.

Chiameremo, per semplificazione, il primo caso Sugarscape stretto e il secondo caso Sugarscape largo. Dalle simulazioni effettuate, i risultati ottenuti sono i seguenti: Caratteristiche Capacità portante Andamento ricchezza media Coefficiente di Gini Visuale media Metabolismo medio Media fertili

Sugarscape stretto 216 43 0,1913 4,4 1 93,7

Sugarscape largo 503 40,1 0,1822 5 1 218,4

Tabella 9: sintesi risultanti da due simulazioni con differente misura della larghezza delle colline.

Ciò che salta subito all’occhio è che, mentre abbassando la collina gli agenti non sono in grado di sopravvivere, stringendola senza andare a modificare la sua altezza, permette la sopravvivenza degli agenti con una capacità portante del sistema pari a 216 agenti. Evidentemente gli agenti con le nostre caratteristiche per sopravvivere hanno bisogno di almeno un piccolo spazio in cui ci siano almeno quattro unità di zucchero. Ovviamente, colline più larghe permettono una maggior capacità portante del sistema, portandola fino a 503 in relazione allo SugarScape largo. L’andamento della ricchezza media non varia sensibilmente perché non è variato solo il numero di agenti vivi, ma è variata anche la quantità di risorse presenti nel terreno. Per quanto riguarda il coefficiente di Gini, esso è più piccolo nello SugarScape largo ma in entrambi i casi mostra una distribuzione della ricchezza pressoché paritaria. La media del metabolismo, come era prevedibile, è pari a uno in entrambi i casi. Un dato su cui è bene fermarsi a riflettere è invece quello che riguarda la media della vista: nel mondo largo essa è pari a cinque ed è conforme alle altre simulazioni tipiche, mentre nel mondo stretto essa è pari a 4,4. Questo ci fa pensare che non sia poi così necessario, in presenza di collinette strette, avere una visuale molto lunga, per questo mondo basta averla pari a 4. Infine il risultato riguardante la media degli agenti fertili varia come la capacità portante, andamento prevedibile e conforme agli altri esperimenti.

- 55 -

9.4.3 Capacità portante al variare del tipo di agente Riprendendo l’idea del nostro quarto esperimento, quello relativo al cambiamento della capacità portante in relazione al tipo di agenti immessi nell’ambiente (cfr. 6.2), analizziamo ora come e se varia la capacità portante del nostro sistema al variare della vista e del metabolismo dei nostri agenti. Allo scopo di trovare sperimentalmente queste dipendenze abbiamo effettuato una serie di simulazioni in cui supponiamo che tutti gli agenti abbiano una stessa visuale data ed un uguale metabolismo anch’esso dato, anziché determinare questi due parametri in modo casuale come nelle precedenti simulazioni. In questo modo è possibile analizzare come cambia la capacità portante al variare di questi due parametri. L’esperimento ha queste caratteristiche: o o o o o o

100 agenti iniziali; 1000 passi, per permettere un assestamento del sistema; la visuale varia da 1 a 6 celle; il metabolismo varia da 1 a 5 unità di zucchero; tutti gli agenti hanno lo stesso valore del parametro interessato; si utilizza una matrice 16x5 (visuale x metabolismo). Per ogni coppia visuale-metabolismo si effettuano 5 simulazioni. Ogni simulazione restituisce il numero di agenti finali, il numero di agenti nati e il numero di agenti vivi. Ogni elemento delle matrici contiene il numero medio di agenti finali/nati/vivi.

I risultati sono riportati nelle seguenti tabelle: Matrice agenti vivi

Metabolismo

Visuale 1

2

3

4

5

1

638

230

0

0

0

2

783

283

0

0

0

3

835

293

0

0

0

4

928

267

0

0

0

5

1002

380

0

0

0

6

1024

373

0

0

0

Tabella 10.1: numero di agenti vivi a fine simulazione (1000 passi, 240 agenti, seme random 8765). Gli agenti iniziali hanno vista e metabolismo fissati.

La prima considerazione che si può fare analizzando questi risultati è che gli agenti che hanno un metabolismo uguale a uno e quelli con metabolismo uguale a due in generale sopravvivono nel tempo. Inoltre, maggiore è la loro visuale, maggiore è il numero di agenti che sopravvivono. Gli agenti con metabolismo superiore a due invece muoiono, qualsiasi visuale essi abbiano. È da considerare il fatto che fissare vista e metabolismo ha poco significato in termini di algoritmo genetico in quanto i nuovi nati avranno tutti la stessa visuale e lo stesso metabolismo dei genitori, che sono uguali; tuttavia queste statistiche hanno lo scopo di capire come varia la capacità portante del sistema, escludendo – solo per ora – i ragionamenti riguardanti la genetica.

- 56 -

La tabella 10.2 mostra il numero totale di agenti nati nel corso della simulazione.

Matrice agenti nati

Metabolismo

Visuale 1

2

3

4

5

1

3845

1111

5

0

0

2

4669

1627

15

0

0

3

4908

1848

17

4

0

4

5220

2003

25

0

1

5

5572

2191

39

1

0

6

5557

2210

25

2

0

Tabella 10.2: numero totale di agenti nati nel corso simulazione (1000 passi, 240 agenti, seme random 8765). Gli agenti iniziali hanno vista e metabolismo fissati.

Coerentemente con la tabella relativa agli agenti vivi a fine simulazione, la tabella 7.2 mostra che l’attività riproduttiva, e conseguentemente il numero di nascite, è considerevole quando il metabolismo è basso, ed è pressoché inesistente quando il metabolismo supera le due unità di zucchero. Inoltre quando il metabolismo è basso l’attività riproduttiva aumenta con l’aumentare della visuale. La terza tabella mostra, infine, il numero totale di agenti morti durante la simulazione. Matrice agenti morti

Metabolismo

Visuale 1

2

3

4

5

1

3307

981

105

100

100

2

3986

1444

115

100

100

3

4173

1655

117

104

100

4

4392

1836

125

100

101

5

4670

1911

139

101

100

6

4633

1937

125

102

100

Tabella 10.3: numero totale di agenti morti nel corso simulazione (1000 passi, 240 agenti, seme random 8765). Gli agenti iniziali hanno vista e metabolismo fissati.

Anche questa tabella conferma la caratteristica del sistema sopra descritta: con metabolismo 3, 4 e 5 gli agenti immessi nel sistema muoiono tutti e il numero di morti è vicinissimo a 100, ciò significa che ne sono nati pochissimi durante i mille passi eseguiti. Ad esempio gli agenti morti con metabolismo 3 e visuale 1 sono 105, ciò significa che i 100 iniziali sono tutti morti e sono morti anche i 5 nati durante la simulazione. Nel caso invece il metabolismo sia uno o due, il numero di morti è molto elevato ma è comunque minore del numero di agenti nati; quindi possiamo affermare che c’è un certo ricambio generazionale e che durante questi ricambi generazionali il metabolismo degli agenti tende al suo livello ottimo: uno o due.

- 57 -

In conclusione a questa prima analisi possiamo affermare che il metabolismo ha un primario ed essenziale peso a favore della sopravvivenza degli agenti e che solo in un secondo momento interviene il fattore visuale, che incide sulla sopravvivenza degli agenti vivi per merito del basso metabolismo, e che quindi ha un ruolo ma esso è secondario rispetto a quello del metabolismo.

- 58 -

9.5. La dinamica delle popolazioni Un’osservazione che merita di essere fatta è che, considerando i risultati tipici ottenuti dallo SugarScape con riproduzione sessuata, alcuni andamenti ricordano quelli studiati nella dinamica delle popolazioni. In particolare l’andamento demografico e quello della fertilità ricordano molto uno degli andamenti possibili della dinamica del modello base di Lotka-Volterra. Il modello base di Lotka-Volterra è un modello non lineare che ha lo scopo di descrivere in termini matematici l’interazione fra due popolazioni diverse, una popolazione preda e una popolazione predatori. Nel caso in cui le interazioni fra le due popolazioni siano presenti il modello prevede la presenza di oscillazioni sfalsate tra le due popolazioni. Questo avviene perché nell’equazione che descrive l’andamento della popolazione preda esiste una retroazione positiva proporzionale al coefficiente associato al numero di prede (la riproduzione) e una retroazione negativa proporzionale al coefficiente relativo all’incontro con la popolazione predatrice. Nell’equazione che descrive l’andamento della popolazione predatrice, al contrario, esiste una retroazione positiva dovuta all’incontro con la popolazione delle prede, e una retroazione negativa proporzionale al numero di predatori (competizione interna). In altre parole, l’aumento del numero di prede provoca, attraverso l’aumento della frequenza degli incontri con i predatori, un aumento del numero di predatori, il quale comporta una diminuzione del numero di prede, che agisce negativamente sulla crescita del numero di predatori. La dinamica prevista da questo modello non ha punti di equilibrio stabile in quanto le due popolazioni evolvono descrivendo cicli senza fine, senza mai tendere ad una situazione di stabilità; l’equilibrio è solo dinamico. Le oscillazioni previste da tale modello sono molto simili a quelle risultanti dalla dinamica della demografia e della fertilità del nostro sistema. Questo paragone però non è del tutto ottimale in quanto il modello di Lotka-Volterra prevede la presenza di due popolazioni distinte, mentre le variabili considerate in questo luogo sono diverse: una è la dinamica di una popolazione (l’andamento demografico) e l’altra (la fertilità) non rappresenta una popolazione distinta, bensì una parte della prima popolazione. Possiamo però considerare l’andamento del numero di agenti maschi fertili e quello di agenti femmine fertili: pur facendo parte della stessa popolazione, possiamo dividerli in due insiemi distinti in quanto gli elementi presenti in una non sono presenti nell’altra. L’andamento delle donne e degli uomini fertili ha una dinamica che – fino ad un certo momento ben si avvicina a quella descritta dal modello Lotka-Volterra, come mostra il grafico seguente. Distribuzione maschie e femmine fertili 350

Femmine fertili Maschi fertili

300

Agenti

250

200

150

100

50

0

0

100

200

300

400

500 passo

600

700

800

900

1000

Grafico 32: andamento temporale del numero di donne fertili (linea rossa) e di uomini fertili (linea blu). Sugarscape 1000 passi, 100 agenti, altezza collina = 5, seme random 8765.

- 59 -

È curioso notare come la dinamica delle due popolazioni (femmine fertili e uomini fertili) segua un andamento simile, in cui le due curve differiscono per lo più sulla scala delle ordinate. Da un certo istante di tempo (passo 600) in avanti le curve seguono un andamento tendenzialmente speculare. Sarebbe interessante verificare come e se si stabilizza questo tipo di comportamento nel corso del tempo. A questo scopo continuiamo questa simulazione fino al passo 5000 ma analizzeremo il risultato al termine dello scritto, nell’Appendice: questioni aperte. Rimane però un altro particolare che differenzia il nostro modello da quello di Lotka-Volterra: la dinamica prevista dal modello base di LotkaVolterra non prevede una forte oscillazione iniziale come quella che risulta dal nostro modello. Una forte oscillazione iniziale si presenta invece in una delle possibili dinamiche studiate nel modello lineare di due popolazioni interagenti. Queste due popolazioni (che non sono necessariamente preda e predatori) interagiscono fra loro secondo l’ipotesi lineare: la velocità istantanea di variazione della prima popolazione e della seconda popolazione (ossia la loro derivata prima rispetto al tempo) è direttamente proporzionale ad una combinazione lineare dei valori stessi delle popolazioni, secondo opportuni coefficienti. A seconda dei valori dei coefficienti si possono avere situazioni di competizione, di cooperazione o di parassitismo tra le due popolazioni. Il modello parte dalla descrizione della variazione rispetto al tempo del numero di individui delle due popolazioni tramite un sistema di equazioni differenziali di primo ordine. Risolvendo tale sistema le soluzioni sono costituite da combinazioni lineari di esponenziali in cui gli esponenti β1 β2 hanno una importanza significativa in quanto a seconda che siano reali crescenti, reali decrescenti o complessi si hanno delle situazione in cui le due popolazioni si allontanano da una situazione di equilibrio, tendono ad uno stato di equilibrio oppure compaiono oscillazioni periodiche. Quello che è di nostro interesse è il terzo caso. Se gli esponenti sono numeri complessi, esistono tre possibilità: 1. sono immaginarie coniugate; 2. sono complesse coniugate (ossia β1 ha una parte reale comune a β2) e Re β > 0; 3. sono complesse coniugate (ossia β1 ha una parte reale comune a β2) e Re β > 0. 1. Il primo caso da luogo ad oscillazioni periodiche nel tempo, in cui la dinamica delle due popolazioni nello spazio delle fasi da luogo a due orbite ellittiche (una per popolazione). 2. Nel secondo caso si presenta un equilibrio instabile. 3. Nel caso in cui la parte reale comune ai β è minore di zero, si presenta un equilibrio stabile. I due comportamenti di nostro interesse sono il primo e il terzo. Il primo infatti ricorda l’andamento della popolazione maschile e della popolazione femminile nel nostro SugarScape. In effetti, se il numero di uomini aumenta rispetto a quello delle donne, ci sarà più “competizione” tra gli uomini, che si traduce nel fatto che, essendoci meno donne disponibili per riprodursi (perché magari le donne in età fertile, una volta generato il figlio e avergli dato metà della loro scorta iniziale, non sono più fertili), alcuni uomini non ne avranno la possibilità e moriranno di vecchiaia. Quando il numero di uomini torna ad essere abbastanza vicino a quello delle donne invece la tendenza a morire sarà inferiore. Lo stesso vale per una crescita delle donne in relazione a quella degli uomini. Il terzo caso invece riprende l’andamento demografico, il quale presenta inizialmente onde molto alte e che poi tende via via ad oscillare tra valori più vicini. Tuttavia, nella dinamica del modello lineare di due popolazioni interagenti, quando si verifica, questa situazione tende ad un punto di equilibrio stabile, mentre il nostro andamento, una volta ristretto il range di valori tra i quali oscilla, continua ad oscillare, senza tendere ad un punto di equilibrio stabile. Non sarebbe corretto affermare che l’andamento demografico presenta una stabilità dinamica in quanto, come descritto precedentemente, l’andamento non è regolare. È però possibile dire che il - 60 -

nostro modello mostra una dinamica che nel tempo tendere a raggiungere una specie di equilibrio caratterizzato da una continua oscillazione tra due valori relativamente non molto lontani tra loro. Di seguito riportiamo le immagini delle similitudini ritrovate e descritte in questo paragrafo.

Distribuzione dei sessi 600

500

Agenti

400

Femmine Maschi 300

200

100

0

Figura 12 a:modello lineare di due popolazioni interagenti. Dinamica possibile con β immaginarie congiunte.

100

0

200

300

400

500 passo

600

700

800

900

1000

Figura 12 b: Distribuzione dei maschi e delle femmine.. Sugarscape 1000 passi, 100 agenti, seme random 8765. Andamento demografico 1200

1000

Agenti vivi

800

600

400

200

0

Figura 13 a: modello lineare di due popolazioni interagenti. Dinamica possibile con β complesse congiunte.

0

100

200

300

400

500 Passi

600

700

800

900

1000

Figura 13 b: Andamento demografico. Sugarscape 1000 passi, 100 agenti, seme rendom 1234.

Sebbene la ricchezza del territorio, considerata come la quantità di zucchero presente nel mondo, non sia una vera e propria popolazione, è possibile astrarci momentaneamente dalla rigida definizione di ‘popolazione’ e provare a considerarla come tale. Confrontando l’andamento demografico e l’andamento della ricchezza del territorio è possibile notare una similitudine con il modello non lineare dei processi sociali: il modello Lotka-Volterra sopra descritto applicato nell’ambito delle scienze urbane. Si tratta del modello della dinamica congiunta popolazione-reddito effettuato da Dendrinos e Mullally. Nel loro modello il reddito medio disponibile nell’area urbana considerata configura l’offerta, mentre la popolazione dell’area urbana “a caccia” del reddito configura la domanda. Il modello esprime la dinamica congiunta popolazione – reddito che si sviluppa in un’area chiusa, senza influenze esterne, a seguito dei continui aggiustamenti fra domanda (popolazione) e offerta (reddito) nelle diverse localizzazioni entro l’area considerata. L’ipotesi fondamentale alla base del modello è che un reddito medio disponibile in un’area, più elevato che in altre aree, vi attira popolazione, dando origine ad una immigrazione in questa area. Tuttavia, una popolazione che cresce in una determinata area – perché attratta da un elevato reddito medio – provoca una diminuzione di tale reddito, facendo così diminuire l’attrattività dell’area considerata. - 61 -

Questo meccanismo dinamico-evolutivo è simile a quello del sistema preda predatore. Considerando gli agenti come popolazione preda (o domanda) che vanno a caccia dello zucchero che rappresenta la popolazione dei predatori (o l’offerta), l’analogia con il nostro modello è molto forte. La dinamica del reddito ha un coefficiente positivo che mette in relazione il reddito attuale con quello futuro; esso può essere rappresentato nello SugarScape dal fatto che una cella contenente, per esempio, quattro unità di zucchero, può essere svuotata, ma ha comunque la potenzialità di tornare a contenere quattro unità di zucchero. La dinamica del reddito ha poi un coefficiente negativo che mette in relazione il reddito e la popolazione e rappresenta l’effetto negativo che l’aumento della popolazione ha sulla crescita del reddito medio (le prede diminuiscono con l’aumentare dei predatori). Con più agenti ci sono sulla collinetta di zucchero, meno essa avrà la possibilità di crescere. La dinamica della popolazione ha un coefficiente negativo che mette in relazione la popolazione attuale con quella futura, il quale esprime gli effetti negativi che l’aumento della popolazione, riducendo l’attrattività della zona, esercita sulla velocità di crescita della popolazione. Esprime quindi lo spontaneo declino della popolazione. La dinamica della popolazione ha poi un coefficiente positivo che mette in relazione il reddito e la popolazione ed esprime la crescita della popolazione dovuta all’immigrazione richiamata dal reddito medio disponibile. Esprime dunque l’attrattività dell’area con una quantità di zucchero elevata. Questo modello mostra una dinamica identica a quella del modello base di Votka-Volterra: cicli periodici simili a quelli dell’oscillatore armonico. Una delle varianti di questo modello prevede l’introduzione della capacità di carico: si tratta di modelli nei quali le variabili (popolazione e reddito / agenti e zucchero presente sul territorio) non solo compaiono moltiplicate fra di loro ma il reddito compare anche in un termine quadratico. Nello SugarScape infatti le risorse di zucchero presenti sul territorio sono limitate dalla matrice capacità. Applicando il modello base di Dendrinos e Mullally, in assenza di popolazione il reddito aumenterebbe all’infinito, ma ciò non è applicabile al nostro modello, e nemmeno alla vita reale. L’aggiunta della capacità di carico nell’equazione che descrive l’andamento del reddito si addice pertanto al nostro modello e permette di tener conto dei fenomeni in modo meno rigido della semplice proporzionalità diretta. Senza entrare troppo nel dettaglio questa variante con capacità di carico del modello base presenta due configurazioni di equilibrio: quella di nostro interesse mostra una dinamica nel tempo della popolazione e del reddito del tipo raffigurato di seguito.

Figura 14: tipo di dinamica temporale prevista dalla variante del modello base di Dendrinos e Mullally; variante con capacità di carico per il reddito. Il reddito è rappresentato dalla linea verde, la popolazione dalla linea rosa.

Come si può vedere essa può essere comparata, non trasferita ma adeguata, alla dinamica temporare del nostro reddito e dei nostri agenti (figura 15).

- 62 -

Ricchezza del terreno

Andamento demografico

6000

1200

5500 1000

5000 800

Agenti vivi

Zucchero

4500 4000 3500 3000

600

400

2500 200

2000 1500

0

0

50

100

150

200

250 Passi

300

350

400

450

500

0

50

100

150

200

250 Passi

300

350

400

450

500

Figura 15: andamento temporale della ricchezza presente sul territorio (a sinistra) e andamento demografico (a destra). Sugarscape 500 passi, 100 agenti, altezza delle colline = 5, seme random 8765.

La presenza del temine quadratico nell’equazione che descrive la dinamica del reddito ha come effetto la comparsa di uno stato di stabilità asintotica per l’evoluzione dinamica del sistema. La dinamica descritta da questo modello è del tipo spirale convergente, con oscillazioni che si smorzano intorno ad uno stato di equilibrio asintotico. Un nuovo esperimento che si potrebbe effettuare in futuro è quello di simulare per mille passi lo sugarscape con due colline, e di continuare la simulazione variando la matrice che determina la massima capacità di ogni cella. È possibile, per esempio dare come input al continuo della simulazione una matrice con tre o quattro colline, per verificare se gli agenti hanno una vista abbastanza lunga per riuscire a vedere, e quindi anche a raggiungere, le due nuove colline, popolandole e creando tre o quattro gruppi di agenti separati.

- 63 -

Conclusioni L’esperienza appena terminata ci ha dato l’opportunità di analizzare un sistema di agenti che interagiscono tra loro e con il mondo nel quale vivono. Questa esperienza è iniziata con una sequenza di esperimenti che nel loro corso sono andati ad aggiungere nuove caratteristiche o a modificarne delle vecchie; ma soprattutto da ogni esperimento sono nate nuove ipotesi per gli esperimenti precedenti. Partendo da un modello semplice abbiamo dapprima analizzato le sue caratteristiche peculiari, per poi andarne a studiare la capacità portante. Siamo arrivati alla conclusione che tale capacità è strettamente legata al numero di agenti si trovano in esso all'anno 0 e abbiamo notato che la caratteristica della variabile metabolismo è primariamente necessaria alla sopravvivenza degli agenti nel nostro mondo. Questa conclusione riguardante le condizioni iniziali e il metabolismo ci ha indotto a concludere che la capacità portante non può essere solo una caratteristica intrinseca dell'ambiente e delle sue risorse ma è anche una caratteristica determinata dal numero di agenti che sfruttano tali risorse e da quanto questi agenti siano in grado di adattarsi al mondo che popolano senza la possibilità di riprodursi. Nello studio della genetica applicata al sistema abbiamo ulteriormente rafforzato la nostra idea riguardante la variabile di stato “metabolismo”. L'utilizzo della genetica ci ha permesso di scoprire particolari comportamenti del sistema che lo riallacciano a comportamenti simili all'interno di sistemi fisici quali ad esempio il pendolo. Questo risultato però viene raggiunto solo quando il sistema riesce a tenere sotto controllo il metabolismo dei suoi agenti attraverso la selezione naturale che in esso va ad operare. La variabile di stato metabolismo assume quindi un valore fondamentale che va a modificare continuamente la dinamiche del modello. Il sistema non ha modo di concepire nessun tipo di equilibrio se tale variabile è libera di variare in modo arbitraria all'interno dei parametri di controllo da noi attribuiti nella creazione di ogni agente. Lo stesso vale per la variabile di stato visuale, la quale però, ha un’importanza solo secondaria, e va a determinare la dinamica dell’evoluzione solo in minima parte. Una delle prime conclusioni finali che possiamo trarre è che, seppur con innumerevoli limitazioni, il nostro modello descrive abbastanza bene un sistema biologico. Un sistema biologico, in generale, ha svariate caratteristiche che lo rendono estremamente adatto all’ambiente in cui vive: esso ha un’alta capacità di adattamento e una robustezza nella conservazione delle caratteristiche positive. Esso però non è il frutto di un progetto determinato a priori, bensì il risultato di un processo evolutivo della durata di millenni e basato sulla riproduzione selettiva degli individui migliori. Alla base della selezione naturale c’è il principio di conservazione delle variazioni favorevoli ed eliminazione di quelle sfavorevoli alla sopravvivenza e alla riproduzione. Nello SugarScape è possibile vedere come, nel trascorrere simulato del tempo, la popolazione che lo abita ha un’elevata capacità di adattamento all’ambiente. L’ambiente in cui vivono i nostri agenti detta le regole per la loro sopravvivenza: agenti con un alto metabolismo non sono in grado di sopravvivere a lungo, di conseguenza hanno meno probabilità di essere scelti come genitori e di passare quindi le loro caratteristiche ai figli. Con l’andare del tempo gli agenti che hanno le caratteristiche per sopravvivere si riproducono e passano le loro caratteristiche ai figli, con il risultato che dopo qualche centinaia di “anni” tutti gli agenti hanno quasi le stesse caratteristiche: quei geni che sono necessari per la sopravvivenza. Il nostro modello dimostra di essere anche robusto: una volta ottenuto il risultato migliore, lo mantiene nel tempo. Il principio di conservazione delle variazioni favorevoli a sopravvivere e riprodursi e di eliminazione delle variazioni sfavorevoli a sopravvivere e a riprodursi è stato correttamente seguito: nel nostro mondo gli agenti arrivano ad un genotipo ottimale e continuano a vivere e a riprodursi.

- 64 -

La domanda dalla quale eravamo partiti all’inizio di questa nostra esperienza era se da un mondo molto semplice, composto da entità elementari che interagiscono con semplici regole locali e da un ambiente molto semplice, potessero emergere comportamenti complessi. Gli esperimenti proposti ci fanno pensare ad una risposta negativa perché partendo da situazioni iniziali note, il comportamento della dinamica è stimabile a priori. Conoscendo gli stati iniziali e le regole con cui il sistema evolve, si può prevedere un parco di possibili soluzioni finali. Quello che si può prevedere è il comportamento globale, l’andamento generale, la direzione che prenderà il sistema. Quello però che non è prevedibile sono quelle micro-oscillazioni che compongono le oscillazioni primarie. Esse sembrano essere sempre diverse e sembrano non ripetersi mai all’interno di una singola simulazione, o almeno questo è quello che emerge dai nostri esperimenti e – soprattutto – è quello che abbiamo potuto notare dai nostri esperimenti. Un’ipotesi può essere che quelle micro-oscillazioni siano date dalle variabili casuali che sono in gioco nel corso dell’evoluzione. Esse non giocano un ruolo principale nella nostra dinamica; un esempio è dato dal fatto che la variabile sesso ha uno 0,5 di probabilità di assumere valore 0 (corrispondente a femmina) e un’uguale probabilità di assumere un valore pari a 1. Su una media di 1024 agenti che entrano a far parte dello sugarscape nel corso di una simulazione di 1000 passi, la distribuzione dei sessi è prevedibilmente equamente distribuita. Lo stesso vale, per fare un altro esempio, per quanto riguarda il metabolismo: dopo i primi cento passi esso ha valori pari a uno o a due. In altre parole, le variabili casuali del sistema potrebbero incidere sulle micro-oscillazioni del sistema ma non sono abbastanza importanti per incidere sull’andamento generale del sistema. Per dirla in parole povere: il sistema deve andare in quella direzione con un andamento che disegna una oscillazione sporca, la “sporcizia” è determinata dalle variabili casuali in gioco. L’ultima, ma non per questo meno importante conclusione riguarda il fatto che la dinamica del nostro sistema ha tutte le caratteristiche per essere paragonata alla dinamica dei modelli non lineari nei processi sociali.

- 65 -

Appendice: questioni aperte

Distribuzione maschie e femmine fertili 350

Femmine fertili Maschi fertili 300

250

Agenti

200

150

100

50

0

0

500

1000

1500

2000

2500 Passo

3000

3500

4000

4500

5000

Grafico 33: Andamento femmine e maschi fertili. Sugarscape 5000 passi, 100 agenti, seme random 8765.

Analizzando l’andamento degli uomini fertili e quello delle donne fertili, era emerso (cfr. 9.5) che essi avevano, nei primi mille anni di vita, un andamento simile. Essi infatti crescono e decrescono insieme. Allungando la stessa simulazione possiamo osservare che questo comportamento non dura nel tempo ma, anzi, solo fino al passo 1100. Da quel momento le due curve sembrano cambiare totalmente e iniziano ad evolvere in modo speculare: quando una cresce l’altra decresce e viceversa, e nel momento in cui si incontrano sembrano respingersi vicendevolmente. Ovviamente questo comportamento è una tendenza e non è regolare. Sarebbe interessante, in un futuro, studiare questo andamento e valutarne le caratteristiche.

- 66 -

Related Documents

Sugarscape Relazione
December 2019 19
5. Sugarscape
November 2019 9
Relazione
December 2019 23
Relazione
April 2020 16
Relazione
December 2019 19
Relazione
June 2020 9

More Documents from ""

Generatori Numeri Casuali
December 2019 22
Sugarscape Relazione
December 2019 19
Random Number Generator.3
December 2019 17
Latticeworld-tesina
December 2019 25
Cpu Performances
December 2019 22