• Non ci sono risultati.

Capitolo 4 Il mercato delle auto usate: a market for lemons

4.6 Dettagli implementativi in Starlogo

Starlogo è un software accademico realizzato nell’ambito di un progetto del MIT di

Boston. È un ambiente specifico per la simulazione di modelli ad agenti, in cui il concetto di spazio è un fattore importante. Nasce come evoluzione del celebre linguaggio di programmazione denominato Logo. Esso è un dialetto del Lisp, un noto linguaggio dichiarativo, e fu sviluppato da Feurzeig (1967) con l’obiettivo di consentire ai giovani di conoscere i rudimenti della programmazione informatica. È caratterizzato da una superficie toroidale proiettata su di un piano bidimensionale. Ciò significa che lo schermo rettangolare non ha idealmente confini: i due lati opposti sono congiunti. Su tale superficie è disegnata una “tartaruga” che è capace di interpretare ed eseguire comandi di movimento, ha una direzione e la capacità di lasciare un segno sulla superficie che attraversa se riceve il comando opportuno. Quando giunge al confine dello schermo ricompare nella posizione simmetrica sul lato opposto, per effetto dell’ideale continuità dello spazio.

I progettisti di Starlogo hanno mutuato due principi da questo linguaggio antenato. L’idea che li ha spinti a scriverlo è stato quella di realizzare uno strumento che permettesse di avvicinare all’universo della simulazione informatica di modelli sociali tutti coloro che non avessero dimestichezza con la programmazione. L’altra idea è stata di moltiplicare il concetto semplice di “tartaruga”. È sufficiente creare più di uno di questi elementi sulla superficie toroidale e di dotarlo di capacità elementari di comunicazione per ottenere un potente strumento di analisi dinamica dei sistemi. Starlogo conserva quasi integralmente il bagaglio di istruzioni del Logo relative alla gestione delle tartarughe ed aggiunge una serie si strumenti e funzioni per controllare l’interazione tra queste. Resnick (1994) descrive Starlogo in questi termini:

Starlogo is a programmable modeling environment for exploring the workings of decentralized systems – systems that are organized without an organizer, coordinated without a coordinator. With Starlogo, you can model (and gain insights into) many real-life phenomena, such as bird flocks, traffic jams, and market economies.

Come accennato, questo strumento è fortemente legato all’idea di spazio. Le tartarughe sono localizzate sulla superficie toroidale e la loro interazione avviene quando si incontrano nella stessa posizione spaziale. In realtà esiste un altro metodo di interazione non basato sullo spazio. É un set di istruzioni che permette di gestire le liste di oggetti con una sintassi ereditata dal Lisp. Ma il loro uso comporta alcuni problemi. Partendo dalla constatazione che non è fornito l’intero complesso di istruzioni del Lisp, se l’obiettivo di Starlogo è avvicinare chi non ha dimestichezza con la programmazione, l’uso di istruzioni ereditate da un linguaggio dichiarativo allontana da tale obiettivo.

Inoltre, nell’ipotesi di conoscere la programmazione e quindi di saper manipolare opportunamente tali liste va tenuto in conto il problema che nasce dalla caratteristica di architettura parallela dell’ambiente. Ogni agente viene eseguito in un processo (thread) isolato ed il processore del computer simula l’esecuzione non sequenziale delle operazioni. Ciò implica che se un agente invia un messaggio ad un altro agente, questo risponde, ma nel frattempo l’esecuzione del codice del chiamante viene proseguita. Il fenomeno rende assai complessa la gestione delle comunicazioni tra “tartarughe”. Il meccanismo che consente di superare tale limite sta nello sfruttare la possibilità di programmare la superficie, detta patch, la quale è in grado di contenere informazioni ed eseguire operazioni. Con tale stratagemma è possibile ordinare l’esecuzione di un comando ad una categoria di agenti, i quali “depositano” le informazioni sulla superficie in cui si trovano e la successiva esecuzione di un’altra categoria di agenti, i quali possono leggere tali informazioni. Questi due gruppi di operazioni avvengono in sequenza poiché la loro esecuzione è ordinata dalle istruzioni dell’observer, il controllore del sistema. Questo meccanismo evita il contatto diretto degli agenti e consente di rendere sequenziale e, quindi, più controllabile l’esecuzione del modello.

Starlogo è stato originariamente scritto per essere eseguito nell’ambiente Apple Macintosh, ma ciò ne ha limitato la diffusione, poiché tale sistema è poco utilizzato.

Recentemente è stata rilasciata una versione scritta con il linguaggio Java e che pertanto può essere eseguita su qualsiasi computer dotato di una Java Virtual Machine. Questo elemento ha notevolmente aumentato il numero di utilizzatori dello strumento. Data la sua recente diffusione non sono state ancora pubblicate applicazioni in campo economico.

La realizzazione del modello di Akerlof in Starlogo ha richiesto un piccolo sforzo di adattamento degli elementi descritti dal meta-modello. Come è già stato rilevato, nei modelli nei quali gli agenti posseggono caratteristiche legate allo spazio lo strumento facilita enormemente il lavoro del programmatore. Soprattutto se si effettua il confronto con la mole di lavoro che l’utilizzo di un linguaggio di programmazione tradizionale richiederebbe nel realizzare il codice

che controlla il movimento degli agenti e la rappresentazione grafica dello spazio. Qualunque linguaggio comporterebbe un tempo di lavoro molto più grande. Nel caso specifico però il modello delle auto usate non prende in considerazione la collocazione spaziale degli agenti: l’incontro tra questi avviene in modo casuale. Al fine di rendere tale soluzione in Starlogo si è dovuto utilizzare lo stratagemma sopra descritto. Gli agenti compratori si muovono nella posizione di un venditore. Questo comunica alla superficie sottostante il prezzo di vendita e la qualità dell’auto. Nella fase successiva il compratore legge i dati dalla patch e decide se realizzare la transazione. In caso affermativo colloca l’informazione nella variabile apposita del “terreno”, affinché nel passo successivo il compratore possa essere informato dell’avvenuta transazione.

Nella programmazione ad oggetti esiste l’opportunità di creare un componente software che contenga i metodi e le variabili capaci di determinarne il comportamento. Lo strumento in esame, purtroppo, non fornisce la possibilità di programmare ad oggetti, ma consente di separare il codice in due macro sezioni. L’observer è il luogo in cui vengono scritte tutte le funzioni che si occupano di regolare lo svolgimento delle operazioni da un punto di vista aggregato. Esso è in grado di notificare uno o più comandi ad un insieme di agenti. Ad esempio, possono essere mandati comandi a tutte le “tartarughe” che si trovano all’interno di un’area, che hanno una variabile di stato con determinate caratteristiche o che appartengano ad una categoria detta breed. Il codice che viene eseguito dal singolo agente va collocato all’interno della sezione ad esso relativa (turtle procedures). Purtroppo il codice è relativo a tutti gli agenti, indipendentemente dalla categoria alla quale appartengono. Nel modello di Akerlof esistono due tipologie di agenti: i compratori e i venditori. Sarebbe molto comodo separare il codice relativo ai due tipi, invece la scrittura del codice comporta l’inevitabile commistione tra le funzionalità dei compratori e quelle dei venditori. Per questa ragione nel codice le variabili di stato delle due categorie di agenti sono elencate congiuntamente. È compito del programmatore usare le une o le altre a seconda del breed dell’agente che sta eseguendo il codice. Va ricordato che anche i metodi relativi al funzionamento delle celle che compongono la superficie devono essere collocati nella sezione delle “tartarughe”, aumentando inevitabilmente il livello di confusione.

L’ambiente consente quattro metodi per mostrare i risultati all’osservatore. Da questo punto di vista chi realizza il modello è enormemente facilitato rispetto all’uso di altri strumenti.

Il primo fondamentale canale che consente di mostrare il funzionamento è lo schermo sul quale interagiscono le “tartarughe”. Esse possono assumere svariati colori e possono determinare la colorazione delle stesse patch. Tale soluzione ha un valore decorativo e talvolta anche ludico, ma può anche essere un potente strumento di analisi della dinamica del modello durante la sua esecuzione.

Esiste un’altra finestra che mostra i risultati in forma grafica. La plot window è in grado di disegnare grafici funzionali dei risultati con l’uso di semplici istruzioni.

I risultati in forma testuale sono mostrati in una finestra di terminale, attraverso l’invio di istruzioni di stampa delle informazioni o attraverso sonde che mostrano il valore corrente di una variabile di stato in ogni istante di tempo.