Agenti Artificiali: evoluzione di comportamenti cooperativi
in società virtuali simulate |
|
Questo è uno studio sperimentale che ho realizzato e pubblicato, insieme alla Prof.ssa Marta Olivetti Belardinelli, al quarto Congresso Europeo di Scienze Sistemiche che si è tenuto a Valencia molto tempo fa, nel 1999.
Il lavoro sperimentale, presentato con il titolo "A Dynamic Autopoietic Model of Interactions Among Artificial Agents ", è una classica applicazione della teoria
degli algoritmi genetici nella implementazione di sistemi ad agenti virtuali.
Lo pubblico qui perchè molte delle dinamiche che riproduce sono particolarmente attinenti con quanto si può osservare nelle raltà sociali.
La versione pubblicata qui è sintetica ed informale, con una itroduzione alla struttura del dilemma del prigioniero, la descrizione del modello e del sistema di simulazione GenAgents e i principali risultati sperimentali ottenuti.
Per scaricare una versione in pdf del progetto clicca qui 
La versione originale dell'articolo presentato e pubblicato al Congresso di Scienze Sistemiche è scaricabile cliccando qui .
La versione installabile dell'ambiente di simulazione è scaricabile
da qui 
Per visionare una sessione sperimentale e vedere l'ambiente di simulazione in azione puoi fare click qui 
Per informazioni o per osservazioni da fare puoi mandarmi dei messaggi via e-mail, saranno graditi.
1. IL DILEMMA DEL PRIGIONIERO: introduzione alla struttura e alla logica del gioco 
Due prigionieri sono rinchiusi in celle distinte e separate. Al mattino verranno interrogati dalla polizia che sta indagando proprio su un crimine che hanno commesso insieme.
Entrambi sanno che se tacciono (cooperano) saranno scarcerati in quanto la polizia, senza una confessione e con scarsissime prove, potrà accertare nulla o poco a loro carico.
I poliziotti decidono di introdurre un fattore di squilibrio in questo sistema, qualcosa che rompa la simmetria di una situazione vantaggiosa: se uno dei due tradisce (defeziona) dando informazioni preziose sul complice, avrà garantita l’impunità. Non solo, sarà liberato con una buona ricompensa, mentre il complice riceverà il massimo della pena per il crimine contestato ed in più dovrà pagare una pesante pena in denaro. Se entrambi decideranno di confessare (defezionare l’un l’altro) e di denunciare il crimine, otterranno invece il massimo della pena, senza dover pagare la multa in denaro.
Indicando con Pr. A e Pr. B i due prigionieri, con C e D rispettivamente le azioni di cooperazione e defezione, e sostituendo gli anni di carcere con dei punteggi, possiamo rappresentare la situazione attraverso una tabella di payoff generica valida per tutte le situazioni simili:
|
|
Pr. B |
|
|
C |
D |
Pr. A
|
C
|
Mutua cooperazione
5 punti |
Figura dello stupido
-3 punti |
|
D |
Tentazione
10 punti |
Mutua defezione
0 punti |
Cosa faranno dunque i prigionieri? Tradiranno o decideranno di cooperare?
Stando ai presupposti dovrebbero cooperare. Tenere la bocca chiusa e riacquistare la libertà, sembra essere la soluzione più logica per entrambi. Durante la notte però ciascuno inizia a riflettere e a chiedersi se e quanto può fidarsi della lealtà dell’altro. La ricompensa per il tradimento (defezione) costituisce una tentazione troppo forte per entrambi. Ciascuno sa che l’altro sta pensando esattamente la stessa cosa al riguardo. Entrambi dunque decidono di parlare e denunciare l’altro. In questo modo, sanno di ottenere la pena per il crimine commesso, ma almeno eviteranno di fare la parte degli stupidi ed in più non dovranno pagare una pena in denaro.
Quella che sembrava la soluzione più logica, si è trasformata in una prospettiva da evitare, portando i due prigionieri all’esito in fondo meno conveniente per entrambi: il massimo della pena per il crimine commesso.
La situazione narrata in questo episodio, nota nella teoria dei giochi come “dilemma del prigioniero”, è piuttosto dura ed estrema. Eppure, nella nostra vita quotidiana, in politica, nelle transazioni commerciali, nei rapporti affettivi ed interpersonali, la struttura di base dello scenario delineato, il rapporto cioè tra cooperazione e sfiducia, emerge spesso in modo più prepotente e subdolo di quanto non si possa pensare.
In quali condizioni e perché alcuni organismi, in natura come in società, decidono di cooperare, di defezionare o di rifiutare una relazione con altri organismi?
Questa è la domanda che molti ricercatori, di discipline a volte radicalmente diverse e lontane come la biologia, l’economia, la fisica, la filosofia e la cibernetica, si sono posti per diversi decenni cercando di delineare dei modelli esplicativi e previsionali.
Sul finire degli anni settanta Robert Axelrod, un politologo della Università del Michigan da molto tempo impegnato negli studi sulla cooperazione, iniziò ad organizzare sul proprio calcolatore degli strani tornei tra automi deterministici capaci di giocare iterativamente al dilemma del prigioniero.
Ciascun automa aveva una propria strategia di gioco, alcuni defezionavano sistematicamente, altri iniziavano cooperando quindi rispondevano pan per focaccia (Tit for Tat) ad ogni tradimento per poi tornare a cooperare in situazioni di cooperazione, altri ancora prendevano decisioni in funzione della storia passata in qualche modo memorizzata.
In poco tempo furono sviluppati ben quattordici tipi di automi, ciascuno con una strategia diversa, ma il sistema nel suo insieme risultava comunque piuttosto rigido. Data una tabella di regole, o di payoff, l’esito complessivo dei tornei era spesso piuttosto scontato, anche in situazioni di iterazione prolungata. La strategia dell’automa Tit for Tat risultò la migliore, riuscendo ad avere la meglio in quasi tutti gli scenari di partenza.
Nella maggior parte delle simulazioni effettuate da diversi autori la tabella di payoff rimane invariata e costituisce un vincolo piuttosto forte alla evoluzione del sistema nel suo insieme. Inoltre, la popolazione di automi resta anch’essa invariata durante le interazioni, limitandosi spesso a conteggiare per un certo periodo o numero di iterazioni i punteggi totali guadagnati o persi da ciascun automa o da ciascuna sottopopolazione di automi.
Alcune delle domande che potremmo iniziare a porci dunque sono:
- Cosa accadrebbe in una società virtuale, composta di agenti virtuali in grado di muoversi e di interagire spazialmente in modo preferenziale?
- Cosa accadrebbe se gli agenti del clan vincente in un dato istante potessero cambiare le regole di partenza della tabella di payoff?
- Quale evoluzione seguirebbe il sistema se introducessi un principio di vita, di morte e riproduzione, per ciascun agente, in funzione dei punteggi di fitness guadagnati in ciascuna iterazione ed in funzione del grado di somiglianza con degli agenti “archetipo” emergenti ?
- In quali condizioni dinamiche sarebbe possibile osservare l’emergenza di nuove strategie e di nuovi ordini sociali?
Sulla scia della tradizione di ricerca iniziata da Axelrod, e portata avanti da diversi altri autori, GenAgents e' il tentativo di mettere in scena sistemi in grado di dare una risposta alle domande delineate sopra, un ambiente di simulazione dove più agenti artificiali, appartenenti a famiglie con diverse strategie di relazione, si muovono ed interagiscono spazialmente mettendo in atto le loro logiche di relazione.
Il sistema, per i vincoli e le caratteristiche, è in grado di mettere in scena le dinamiche di un ambiente a "razionalità limitata" (bounded rationality secondo Simon). Questi sistemi hanno in genere molte più possibilità di evolvere verso dinamiche differenziate ed adattive. Per ogni situazione problematica infatti c’è in genere un solo modo, o al più pochissimi modi, di comportarsi secondo scelte perfettamente razionali. Esiste invece una infinità di modi diversi di comportarsi, in uno stesso scenario, mettendo in atto scelte “quasi razionali” o a razionalità limitata come l’ha definita Simon.
2. IL SISTEMA DI SIMULAZIONE GENAGENTS 
 |
GenAgents è un ambiente di simulazione per lo studio di sistemi sociali artificiali a “razionalità limitata”.
L’ambiente permette di riprodurre in parte la complessità sistemica delle dinamiche di relazione tra diversi gruppi di agenti artificiali e di simulare diverse situazioni sociali.
Gli agenti, appartenenti a clan o famiglie con diverse strategie di relazione, si muovono ed interagiscono spazialmente mettendo in atto le loro logiche di relazione. |
Ogni agente è definito dal suo "codice genetico" digitale. I primi tre geni definiscono il movimento, nel quarto è codificata la scelta relazionale attuata nell'ultimo incontro (memoria storica a breve termine), il quinto ed il sesto gene codificano la specie o clan di appartenenza. Dal settimo gene in poi la sequenza genetica è libera e può essere vista come l'identità dell'agente all'interno del suo clan.

Ad ogni generazione, secondo una logica di tipo autopoietico (vedi l’Appendice ed il paragrafo sulla dinamica del modello), dal pool genetico emerge un "individuo target" virtuale, una sorta di "archetipo sociale", il quale definisce due modelli:
- uno per la specie o clan
- uno per il tipo di relazione considerata adattiva per le generazioni successive
A questo "individuo virtuale" possono corrispondere uno o più individui "reali" della popolazione. Questo tuttavia non è scontato, l'agente virtuale può rappresentare il target, o l'archetipo a cui tende la popolazione al di là del fatto che ci sia un reale individuo il cui codice genetico sovrappone perfettamente il codice target.
Sto lavorando affinché ogni clan possa fare riferimento ad un proprio modello archetipico. Questo dovrebbe rendere il sistema, in qualche modo, più vicino alle reali situazioni che accadono in natura dove ogni gruppo (clan, specie ecc…) in genere tende ad avere un proprio modello di riferimento, spesso diverso dagli altri modelli.
Le modalità dinamiche di emergenza e la formalizzazione algoritmica del modello sono parzialmente descritte nel paragrafo sulla dinamica del modello (vedi sotto).
Ogni individuo interagisce con gli otto agenti che si trovano in corrispondenza del suo vicinato di Moore

Naturalmente non è detto che ogni posizione del vicinato sia occupata da qualche agente. Ogni agente si "guarda intorno”, prende atto di quanti e quali agenti sono presenti nel suo vicinato quindi interagisce con loro mettendo in atto le scelte relazionali (defezione, rifiuto, cooperazione) in funzione del clan di appartenenza, dell'agente che ha di fronte e delle logiche di relazione reciproche.
Il fitness di ogni agente viene quindi calcolato sia in base alla sua somiglianza con i modelli emergenti "virtuali" (o archetipi) sia in base ai punteggi riportati nelle interazioni con gli agenti del suo vicinato..
I punteggi riportati dagli agenti in ogni interazione, a loro volta, sono definiti nella tabella di regole o di payoff che, inizialmente, è possibile caricare, creare e salvare prima di iniziare la simulazione. La tabella non resta immutata durante le generazioni, il clan vincente ha la possibilità di cambiare la tabella di regole per le generazioni seguenti, il sistema dunque è a dinamica evolutiva, nulla rimane “immutato”.
Vediamo i dettagli della dinamica di emergenza del modello “archetipo”. La metodologia usata, come vedremo, porta alla emergenza di quelli che Holland definì “schemi” e dai quali ricavò uno dei teoremi fondamentali degli algoritmi genetici.
3. FORMALIZZAZIONE DEL MODELLO 
Il fitness per ogni agente è calcolato in funzione di due fattori:
- Il punteggio riportato nelle relazioni con gli agenti del proprio vicinato il quale, a sua volta, dipende dalla struttura della Matrice di Payoff;
- Il grado di somiglianza con un target o “agente virtuale” che emerge, ad ogni generazione, dal pool genetico globale.
Il primo fattore non necessita di particolari spiegazioni. Per ogni generazione ad ogni agente vengono aggiunti o tolti dei punti di fitness in conseguenza del tipo di strategia che l’agente stesso attua con gli agenti del suo vicinato (se ve ne sono). Ogni specie infatti interagisce mettendo in atto una particolare strategia (cooperazione, defezione, rifiuto) la quale, in relazione alla strategia dell’altro e della tabella di payoff, comporta il guadagno o la perdita di punti.
Per quanto riguarda la tabella di payoff il sistema, nei primi istanti o generazioni, prende come riferimento una tabella definita esternamente. In seguito, secondo leggi probabilistiche che non riporteremo in questa sezione, il clan (o i clan) “vincente” ha la possibilità di cambiare le regole di interazione a parziale vantaggio della propria specie. La tabella di payoff dunque non è fissa ma emerge ad ogni generazione come conseguenza delle dinamiche globali del sistema.
Per quanto riguarda il secondo fattore, occorre innanzitutto definire la procedura attraverso la quale viene generato il prototipo dell’agente virtuale o target. La sequenza genetica dell’agente target viene costruita nel modo seguente:
Dal pool genetico della popolazione, per ogni posizione genetica o gene i, viene calcolata la frequenza cumulativa dell’occorrenza per il gene “1”.
Indicando con str(j,i) il gene i-esimo del j-esimo agente, definiamo la funzione g(j,i) come segue:

La frequenza cumulativa della presenza del gene “1”, per ogni posizione genetica i, sarà allora:

con Np numero totale di agenti della popolazione, mentre la i è media delle frequenze per ogni posizione i della sequenza genetica.
Indichiamo ora con e con rispettivamente la media e la deviazione standard delle medie parziali calcolate sulle posizioni genetiche, cioè:
per la media;
per la deviazione standard con Ng numero totale di geni per ogni agente.
Il modello target viene definito dalla funzione T(i) nel seguente modo:

La funzione T(i) genera il vettore che definisce la sequenza genetica dell’agente target (lo schema di Holland). Nel caso in cui 0 < i £ 10 tale sequenza avrà quindi la forma:
Per individuare la funzione di fitness del sistema definiamo la funzione f(j,i):

con 
Se indichiamo con payoff il punteggio totale riportato nelle interazioni con gli agenti del vicinato, la funzione di fitness Fj per il j-esimo agente sarà dunque:
dove Ng è il numero totale di geni che definiscono l’agente.
Il fitness totale F della popolazione è dato dalla:

I geni contrassegnati con “#” non contribuiscono al computo della fitness degli agenti e possono essere visti come i gradi di libertà del sistema globale.
Poiché ad ogni generazione il pool genetico della popolazione può cambiare a causa degli operatori di mutazione e di crossover, ne consegue che il target stesso può cambiare dinamicamente.
L’intero sistema è dunque definito in modo autopoietico (vedi l’Appendice per la definizione di Autopoiesi), la dinamica che ne segue è caratterizzata dalla ricerca continua di equilibri resi instabili dalle perturbazioni continue dovute alle interazioni tra agenti, agli operatori di mutazione e crossover ed al cambiamento del modello di target che emerge dal pool genetico.
Siano F*j ed Fj i punteggi di fitness di due generici agenti, e rispettivamente la media e la deviazione standard del fitness della popolazione, il crossover tra i due agenti viene effettuato se, e solo se, sono rispettate le condizioni:

Questo criterio di attuazione per l’operatore di crossover permette di mantenere alta la biodiversità interna al sistema e di massimizzare il fitness della popolazione evitando situazioni di “massimi locali”.
Tra le diverse misurazioni effettuate (dimensione di complessità della funzione di fitness ecc..) vengono calcolati il fitness medio per ogni specie, il fitness medio della popolazione ed i rispettivi valori di deviazione standard. I criteri di selezione e di accoppiamento tra gli agenti sono definiti rispetto a questi indicatori.
Le nascite degli individui che andranno a sostituire gli agenti "deceduti" sono realizzate utilizzando il classico meccanismo di crossover sui codici genetici delle coppie. Il punto di crossover, per ogni coppia, è definito randomicamente. In questa versione non sono stati impiegati punti multipli per il crossover.

Ad ogni generazione, a causa delle morti, delle mutazioni e della nascita di nuovi individui, il pool genico cambia nella sua configurazione globale. Il target o archetipo emergente muterà quindi in modo dinamico ed autoreferenziale (autopoietico), costringendo l'intero sistema a cercare una nuova strategia di adattamento e di selezione (nuovi creodi, nuove morfologie di equilibrio instabile ).
La maggior parte dei modelli ad algoritmi genetici fino ad oggi impiegati per questo tipo di simulazioni hanno impiegato un criterio di accoppiamento tra agenti che prende in considerazione solo gli individui il cui fitness è superiore di un qualche delta rispetto alla media. In sostanza vengono ammessi all’accoppiamento solo gli individui considerati “migliori”. Questo criterio permette, in genere, di raggiungere livelli di ottimizzazione della fitness globale piuttosto buoni.
Tuttavia è facile notare che il livello di ottimalità raggiunto non è quasi mai il massimo consentito teoricamente, in realtà si resta spesso piuttosto al di sotto. La “biodiversità” del pool genetico inoltre viene notevolmente ridotta nel tempo, con tutto quello che questo implica in funzione del significato portato da ciascun “gene”.
Il criterio di accoppiamento impiegato in GenAgents è completamente diverso. Non viene impedito agli agenti “migliori” (anche di clan diversi) di accoppiarsi, questo tuttavia non è un vincolo per il sistema. Qualsiasi agente con un fitness di energia superiore di un qualche delta al minimo assoluto (in genere 1/2 della deviazione standard) può accoppiarsi con qualsiasi altro agente.
Questo criterio aumenta di molto la biodiversità nel tempo e permette, nonostante minimi locali temporanei, di realizzare livelli di fitness globale della popolazione decisamente superiori con punte che arrivano a toccare il massimo teorico possibile con diverse configurazioni ed equilibri tra i clan in gioco.
Di seguito è riportato un grafico della evoluzione della biodiversità nel corso di una simulazione, si consideri che 0.25 è il valore massimo possibile (1/4) per la biodiversità del sistema.
La tabella di regole scelta per l'assegnazione dei punteggi nelle interazioni (le regole sociali iniziali del sistema) muta in funzione delle dinamiche emergenti nel sistema. In estrema sintesi, il clan “vincente” ha la possibilità di cambiare le regole sociali di partenza secondo un modello probabilistico che, per brevità, non espongo in questo articolo.
In sostanza, il principio che guida tutto il progetto è quello di lasciar emergere i comportamenti dal basso senza specificare ad alto livello particolari vincoli, cercare l’emergenza di comportamenti organizzativi in popolazioni di agenti semplici guidati da vincoli locali e non globali, focalizzare l’attenzione sulle dinamiche più che sugli stati di equilibrio realizzati dal sistema nel corso delle generazioni.
In accordo alle osservazioni di Holland secondo cui “i sistemi viventi non si stabilizzano mai”, la dinamica di GenAgents è quella tipica dei sistemi autopoietici, continuamente perturbati e guidati da creodi e substrati evolutivi alla ricerca di stati stabili, per un qualche dt diverso da zero, dai quali dipende l'identità stessa del sistema.
Ci sono diverse ipotesi sulle quali sto lavorando circa le dinamiche che permettono il passaggio a diversi ordinamenti sociali più o meno cooperativi. L’idea principale, in parte confermata dalle analisi delle dinamiche del sistema, è che si ha un passaggio a nuovo ordinamento come risposta del sistema a configurazioni globali con un elevato indice di complessità (dimensione frattale).
In modo un po’ schematico la situazione è la seguente:
1] ogni sistema in natura mantiene la sua identità globale (ciò che permette di vederlo come sistema stabile nel tempo) fin tanto che è in grado di contenere il livello di entropia interna (complessità) entro fluttuazioni che non lo costringono alla scissione, cioè a rinunciare alla sua identità;
2] se la complessità aumenta oltre limite e la scissione non è possibile a causa di vincoli strutturali e/o culturali (pensiamo ad un organismo o ad un nucleo famigliare ad es.), quando le fluttuazioni di entropia (complessità interna) superano i livelli di stabilità, il sistema è costretto a realizzare dinamiche in grado di ridurre il grado di complessità (entropia) globale;
3] le dinamiche in questione possono essere sostanzialmente raggruppate in due tipologie:
- quella che prevede l’ipersemplificazione attraverso la virtualizzazione delle differenze interne al sistema
- quella che prevede l’aumento della connessione e della comunicazione interna tra i subsistemi emergenti allo scopo di aumentare il grado di organizzazione strutturale e permettere l’integrazione, in un unico sistema, di diverse parti, ciascuna con le sue differenze interne e la propria complessità.
Sarebbe troppo lungo qui discutere quali forme sociali e/o fisiche possono emergere da ciascuna delle due tipologie dinamiche. Basterà accennare alle dinamiche di auto ed etero distruzione nella prima tipologia (in generale tutti i progetti a basso costo energetico di costruzione e conferma di una identità a spese di un’altra) e a quelle della organizzazione culturale e biologica nel secondo tipo di dinamiche (in generale tutti i fenomeni di nascita di nuove morfologie biologiche e culturali, come accade nella fecondazione di un ovulo o nella nascita di un nuovo modo di fare e vivere la cultura, nei rapporti affettivi ecc…).
In GenAgents è possibile osservare questa danza tra i due attrattori del sistema (aumento della complessità interna – impossibilità alla scissione) nella emergenza di nuovi “ordini sociali” e nuovi “archetipi”, nella sincronizzazione dei movimenti degli agenti che migrano in massa in zone diverse del loro spazio di interazione (virtualizzazione delle differenze interne rispetto al movimento) o nella emergenza di comportamenti ora cooperativi, ora competitivi, altre volte coordinativi ecc…
Un'ulteriore elemento di perturbazione è dato dal meccanismo di mutazione genetica che, ad ogni generazione ed in funzione di alcuni parametri, porta alla mutazione una piccola percentuale di individui.
L'entità delle mutazioni, ed altre dimensioni critiche del sistema, sono definibili direttamente dallo sperimentatore attraverso alcuni tasti funzione che agiscono su alcune caratteristiche del sistema durante la simulazione stessa (vedi la lista dei tasti funzione nel Menù principale del programma).
Sia il range di mutazione sul codice che la probabilità di mutazione possono essere cambiate durante la simulazione attraverso alcuni tasti funzione (frecce del tastierino numerico).
Sto elaborando una versione di GenAgents nella quale alcuni parametri che regolano l'entità delle mutazioni sono a loro volta funzioni di altri parametri del sistema quali, ad esempio, il fitness della popolazione.
I tipi di famiglie implementati in questa versione sono:
DEFEZIONATORE:
Defeziona sistematicamente. Molto efficiente nei sistemi di regole che premiano il comportamento legato ad un tipo di logica individualista esasperata.
COOPERATORE:
È definito da regole di comportamento che iterativamente lo portano ad adottare rigidamente relazioni di tipo cooperativo.
DISCRIMINATORE:
Agisce discriminando. Mantiene un comportamento cooperativo con gli individui della sua stessa specie e con gli agenti del clann dei Cooperatori. In tutti gli altri casi, controlla il codice genetico nella posizione che codifica l'ultima scelta relazionale effettuata dall'agente che incontra con qualsiasi altro agente. Quindi Coopera con chi ha cooperato o Defeziona con chi ha defezionato.
CONFORMISTA:
Esplicita il suo comportamento relazionale sulla base di un sistema di regole che individuano una strategia conservativa confrontando risultati, strategie e modelli emergenti dell'ultimo incontro. Se ha guadagnato di più e le “condizioni sociali” non sono mutate allora nel ciclo successivo ripeterà la scelta relazionale fatta. Se invece ha perso nel ciclo successivo effettuerà la scelta relazionale opposta a quella fatta precedentemente. In sostanza è un operatore rinforzato positivamente a vincere, a prescindere dalla strategia considerata “eticamente” corrett.
Dal menù principale si puo accedere alla lista delle tabelle disponibili, agli ambienti di caricamento, di definizione e salvataggio di nuove tabelle e ad una definizione delle funzione attive durante la simulazione.

Per visionare una sessione sperimentale e vedere l'ambiente di simulazione in azione puoi fare click qui 
Qualora si voglia dimensionare il sistema secondo parametri personali lo si può fare scegliendo l'opzione Dimensiona Sistema del Menù principale. Questa opzione permette di definire la numerosità della popolazione globale, la lunghezza del codice genetico, la presenza o l'assenza di vincoli per i modelli emergenti (liberi o a dinamica emergente) e la logica di accoppiamento tra individui che può essere specie-specifica (accoppiamento solo tra individui della stessa specie) oppure tra specie (accoppiamento tra individui di specie diverse).
Si possono anche definire due parametri che ho definito di Dispersione e di Decadimento. Impostati entro un range di valori tra 0 e 1 rendono il sistema più o meno hamiltoniano (o conservativo). Il primo parametro stabilisce quanta energia, in termini di fitness perso, occorre per muoversi nell'ambiente, il secondo parametro definisce invece una costante di decadimento temporale che agisce su ogni individuo anche se non si muove (in GenAgents si invecchia e muoversi richiede energia).
Conviene impostare il primo a valori non superiori a 0.5, ed il secondo a valori non superiori a 0.05. Si può rendere il sistema hamiltoniano (o conservativo) impostando a zero i due fattori di decadimento (non si invecchia e non ci si stanca: troppo bello per essere vero!).

Per visionare una sessione sperimentale e vedere l'ambiente di simulazione in azione puoi fare click qui 
Se un agente vuole spostarsi nella posizione occupata da un altro agente questo è possibile solo se la sua energia (fitness) è superiore di un certo delta (1/2 della deviazione standard ad esempio) a quella dell’agente “bersaglio”. Questa opzione è disattivabile o comunque è possibile attivarla introducendo un fattore che ne indica la forza in modo da rendere il sistema più o meno "fluido" o "cristallizzato".
Dall’operatore di mutazione è escluso il quarto gene, quello cioè che codifica l'immagine dell'individuo (ultima azione compiuta). Questo significa che in GenAgents si può mutare identità ma non si può mascherare o cancellare il proprio passato prossimo … insomma una specie di “legge karmica” virtuale.
Durante la simulazione alcuni grafici e finestre di stato permettono di avere informazioni utili sulle dinamiche emergenti: la complessità del sistema globale (dimensione frattale del segnale di fitness); la condizione di "salute" di ogni famiglia; la coesione spaziale; i modelli di relazione e di famiglia emergenti ecc...
Un riquadro in basso a destra permette di osservare gli spostamenti e le diverse configurazioni spaziali che possono formarsi nel corso delle generazioni. In questo riquadro è interessante notare le diverse configurazioni a reticolo che si sviluppano nel tempo e l’emergenza di dinamiche di intrusione, invasione, inclusione ecc…
Un pulsante nella form principale consente di aprire due file nei quali verranno memorizzate le matrici di dati relative a diverse variabili del sistema (numero di individui per ogni famiglia ad ogni generazione, fitness globale e di ogni specie, dimensione di complessità del sistema ecc...). Premendo di nuovo lo stesso pulsante si blocca la registrazione e si chiudono i file (la simulazione, naturalmente, continua). Riporto di seguito una tipica schermata del sistema:

Per visionare una sessione sperimentale e vedere l'ambiente di simulazione in azione puoi fare click qui 
Per provare ad effettuare delle simulazioni si
può scaricare il fiel di installazione del sistema ed i documenti
di guida dal link riportato all'inizio di questa pagina.
Il riquadro in basso a destra permette di oservare
gli spostamenti e le diverse configurazioni spaziali che possono
formarsi nel corso delle generazioni. Tale riquadro permette dunque
di avere una visualizzazione del "campo vettoriale" degli
spostamenti degli agenti nel loro ambiente, è molto utile
per osservare le dinamiche di sincronizzazione degli agenti quando
migrano in massa in diversi punti del loro spazio di interazine
(il cerchio nella figura con le palline colorate).
Durante le dinamiche
di sincronizzazione si può notare un abbassamento notevole
della entropia del sistema globale. L'intero sistema oscilla continuamente,
in modo complesso, tra stati ad alta e bassa entropia. La dinamica di transizione (o di emergenza) tra
diversi tipi di strategie di interazione è ancora oggetto
di studio ma si può dire che, tra le diverse dinamiche osservate,
forse la più evidente è quella riportata dalla seguente
mappa:

In sostanza, se i comportamenti di defezione crescono,
l'unico modo di fronteggiare la situazione è quello di passare
a comportamenti di discriminazione, cioè non cooperare con
chiunque ma solo con quegli agenti che hanno avuto un comportamento
di cooperazione. Questa strategia, qui definita in modo semplice
ma in realtà più complessa nella simulazione, è
esattamente quella assunta dagli agenti discriminatori, una sorta
di "guerriglieri", sono loro che combattendo contro il
clan dei defezionatori fanno emergere nel tempo comportamenti e
leggi sociali di cooperazione.
Premendo il pulsante "Save Data Session",
in qualsiasi momento, è possibile aprire due files nei quali
verranno memorizzate le matrici di dati relative a diverse variabili
del sistema (numero di individui per ogni famiglia ad ogni generazione,
fitness globale e di ogni specie, entropia ecc...). Durante il salvataggio
dei dati una piccola finestra (Save In) indichera' quante generazioni
di dati si stanno registrando. Premendo di nuovo lo stesso tasto
si blocca la registrazione e si chiudono i files (la simulazione,
naturalmente, continua). Poichè i files (*.dat) vengono numerati,
è possibile salvare diverse sessioni di dati durante una
stessa simulazione. Questi files potranno essere utilizzati per
diversi tipi di analisi dei dati (dimensione di complessità
ecc...) o per graficare l'evoluzione del sistema durante le generazioni
considerate.
Se non è possibile effettuare le sperimentazioni su un PC abbastanza veloce è consigliabile ridurre la numerosità della popolazione, e non superare un’ampiezza di 10 per la lunghezza del gene.
Articoli di approfondimento scaricabili
AXELROD 1987 - Evolution of strategies, prisoner dilemma (cooperation).pdf
Chaos, cheating and cooperation potential solutions to the Prisoner's Dilemma.pdf
Emergence of Social Organization in the Prisoners Dilemma.pdf
Altri riferimenti Bibliografici
Abarbanel H. D. (1993). The Analysis of Observed Chaotic Data in Physiccal Systems. Reviews of Modern Physics, Vol. 65, N.4.
Caglioti G. (1983). Simmetrie Infrante. Ed. CLUP.
Dimensions and Entropies in Chaotic Systems. (1985). G. Mayer-Kress Springer- Verlag.
Degn H, Holden A.H., Olsen L.F. (1987). Chaos in Biological Systems. NATO ASI Series, Vol. 138.
Grassberger P., Procaccia I. (1983). Measuring The Strangeness of Strange Attractors. Physica 9D, 198-208.
Pessa E. Stabilità ed Auto-Organizzazione. Ed. Veschi. |