• Non ci sono risultati.

MODELLO DI SIMULAZIONE AD AGENTI

4.1 La simulazione in ambito economico

4.1.2 Struttura dei modelli

Il modello presentato in questo capitolo è sviluppato nel linguaggio di programmazione Python12: è costruito secondo il paradigma della ‘programmazione ad oggetti’ ed ha una struttura simile a quella di un altro programma di simulazione, Swarm13. Il modello è organizzato in diversi livelli, due dei quali definiscono l’ambiente della simulazione (figura 4.1). In uno di essi – il Model – è costruito un reticolo, che descrive lo spazio vero e proprio nel quale agiscono gli agenti. Ad un livello superiore – il livello dell’Observer – sono invece costruiti gli strumenti necessari alla gestione del tempo e alla comprensione degli eventi che si succedono all’interno dell’esperimento.

Figura 4.1. La struttura di un modello secondo il protocollo Swarm.

Con la costruzione di diversi livelli, il protocollo Swarm consente sia di esaminare il funzionamento del modello con occhio esterno e di guardare direttamente all’interno dei singoli oggetti che popolano la simulazione. Questo è possibile grazie a delle ‘sonde’ che, sviluppate dal programmatore con la costruzione degli oggetti, permettono di controllare le variabili durante la simulazione. Ciascuno di questi due livelli gestisce il tempo autonomamente. Ciò semplifica molto uno degli aspetti più complessi della scrittura dei programmi per la conduzione di esperimenti di simulazione, vale a dire la gestione ben coordinata degli eventi nel tempo.

Il modello ha una struttura ‘gerarchica’, in cui le diverse componenti sono costruite separatamente. Per facilitare la costruzione del modello, questa ripartizione è mantenuta anche al livello del programma. Ogni componente gestisce le parti inferiori del programma e ne regola il funzionamento: è poi possibile integrare i diversi livelli e inserire in ciascuno di essi strumenti di analisi o di elementi di arricchimento. Come è evidente nella figura 4.2, il ruolo centrale è svolto dal livello del Model. In esso è contenuto lo spazio principale della simulazione e si trovano tutti i valori che definiscono l’ambiente all’interno del quale gli agenti agiscono e interagiscono tra loro.

Gli agenti sono costruiti separatamente dall’ambiente: essi sono realizzati a partire da un unico modello, la classe. In una classe sono definite tutte le variabili e le regole che gestiscono il loro comportamento. Il processo di estrazione di esemplari dalla matrice avviene al livello del Model, nel quale sono definiti i valori delle variabili non ancora definiti: in questo modo ogni agente assume una sua autonomia e delle sue proprie caratteristiche. Una classe identifica una tipologia di agenti, ma in un modello possono essere costruite molte classi: le caratteristiche specifiche di ciascun agente sono definite nel Model, nella fase di estrazione degli oggetti da una classe.

Figura 4.2. Struttura del programma in Python, seguendo il protocollo Swarm.

Da un punto di vista del programma, gli agenti occupano uno spazio di memoria nel computer. Ogni spazio è identificato da un codice che individua quindi un singolo agente. Tutti i codici, all’interno del Model, sono collocati all’interno di vettori: muovere un agente significa richiamarlo dallo spazio di memoria, tramite il suo codice, e utilizzare le regole e le variabili in esso contenute per farlo agire all’interno dell’ambiente. In questo modo, dunque, ogni agente agisce all’interno di un ambiente ma conserva una sua autonomia.

Le reti neurali di ciascun agente sono costruite anch’esse a partire da un’unica Start

Observer

Model

Agent a1

Agent an Agent b1 Agent bn

Class a Class b

ogni agente. Come ogni altro oggetto del programma, esse occupano ciascuna uno spazio di memoria individuato da un codice: per mezzo di questo, ogni agente richiama a sé una specifica rete e la utilizza in fase di apprendimento e successivamente per gestire il proprio comportamento.

In questo modello, ogni rete è associata ad un’azione particolare. Il comportamento complessivo di ogni agente è il risultato dell’azione di molte reti neurali, capaci di apprendere ad associare valori di input a valori di output. I primi corrispondono, ad esempio, alle variabili ambientali o alle caratteristiche specifiche del singolo agente, quali la quantità dei propri risparmi o la sua avversione al rischio. I secondi rappresentano invece la bontà dell’azione a cui la rete è associata. I valori di input delle reti sono, nel momento della scelta, uguali per tutte le reti: la scelta dell’azione è fatta confrontando i valori di output delle reti. La rete che ha il valore di output maggiore indica l’azione più appropriata.

Costruendo in questo modo gli agenti, non è necessario programmare un sistema centrale di ‘controllo’ esplicito del comportamento dell’agente. Le reti neurali svolgono, in questo modo, un ruolo simile a quello svolto dalle regole euristiche nei sistemi dell’intelligenza artificiale.

4.2 Il modello.

4.2.1 Presentazione.

Questo modello simula un mercato finanziario (Appendice D). Due tipi di agenti operano nel mercato: i risparmiatori e gli intermediari. Questi ultimi non agiscono direttamente nel mercato, ma suggeriscono ai risparmiatori come impiegare i propri risparmi. I risparmiatori decidono a quale intermediario affidarsi, seguono i suggerimenti che gli vengono forniti e operano nel mercato. Dopo un arco di tempo, è stabilita la bontà del suggerimento. In caso di giudizio positivo, il risparmiatore paga all’intermediario una quota proporzionale al valore dell’operazione.

La simulazione consiste in un confronto tra due periodi, che corrispondono a due fasi diverse della simulazione, in cui i valori ambientali sono molto simili. Nella prima fase, la scelta dell’intermediario da parte dei risparmiatori è casuale, così come casuale è il suggerimento che l’intermediario dà riguardo all’operazione da effettuare e al titolo sul quale operare. Dopo un periodo di tempo definito, le operazioni sono giudicate in base al corso del titolo. I risultati delle operazioni sono infine memorizzati, in modo da permettere a ciascun agente di costruire una propria esperienza: ciascun agente memorizza le proprie azioni, differenziandosi così dagli altri e arricchendo il modello. Ad un certo punto, la simulazione è sospesa: a partire dalle azioni compiute in precedenza e dal giudizio dato su ciascuna di esse, ha luogo l’apprendimento. L’apprendimento qui è svolto dagli intermediari, che svolgono un ruolo centrale nel determinare l’azione da seguire.

Nella seconda fase, la stessa simulazione verrà eseguita da agenti ‘esperti’. Gli intermediari finanziari hanno imparato ad associare l’azione più adeguata ad una determinata situazione. I valori di input della rete sono le variabili ambientali, ossia tutti quei valori – decisi nella fase di programmazione – in base ai quali orientare l’azione. Il valore di output indica invece la bontà dell’azione da compiere: per semplificare il processo di apprendimento, gli intermediari sono forniti di molte reti e l’azione è decisa confrontando i risultati delle diverse reti.

È possibile osservare, in base ai grafici e ai risultati della simulazione, che l’apprendimento delle reti consente agli agenti di evitare alcuni rischi legati alla variabilità dei titoli. La ricchezza di ciascun risparmiatore è strettamente connessa con le sue operazioni ‘finanziarie’: se l’apprendimento si è svolto nel modo corretto, la ricchezza dei risparmiatori dovrebbe aumentare più velocemente.