• Non ci sono risultati.

Simulazione della genesi ed evoluzione di un sistema economico con jES Open Foundation

3.1 L’architettura di Swarm

La piattaforma di simulazione Swarm, sviluppata negli anni ‘90 dall’Istituto di Santa Fe26, è realizzata attraverso la programmazione ad oggetti27 che sfrutta classi astratte per definire esemplari (instance) di oggetti capaci di recepire messaggi e reagire agli ordini ricevuti (metodi). Un oggetto è un’entità software dotata di un insieme di attributi, posseduti in via esclusiva da alcune classi di oggetti o comuni a tutti, e di uno o più metodi che permettono l’interazione con l’utente; gli attributi in alcuni casi sono immutabili, in altri possono modificarsi spontaneamente per ragioni interne all’oggetto o a seguito dell’interazione con altri oggetti, oppure possono essere fatti variare dall’utente; i valori che assumono determinano lo stato in cui si trova l’oggetto.

La classe è un costrutto che permette di raggruppare un insieme di variabili (gli attributi) ed un gruppo di metodi che hanno accesso a tali variabili e rappresenta il modello ideale a partire dal quale sono costruiti gli esemplari di oggetti; un principio di progettazione del software detto incapsulamento prevede che il contenuto informativo di una classe rimanga nascosto all’utente e che i metodi siano l’unico modo per interagire con un determinato oggetto. L’utente si può concentrare sull’apprendimento dell’utilizzo dell’oggetto e questo lo metterà in condizioni di saperne trattare qualunque altro proveniente da quella particolare classe; inoltre, rendendo mediato l’accesso agli attributi, se ne evita un possibile utilizzo non corretto e si rende più rapida la fase di programmazione durante la quale i messaggi da inviare agli oggetti possono essere richiamati sinteticamente utilizzando il nome dei singoli metodi.

Una proprietà fondamentale dei linguaggi ad oggetti è l’ereditarietà, che consente di riutilizzare alcune componenti di un programma; definendo una data classe come sottoclasse di un’altra già esistente, il comportamento di quest’ultima (metodi e attributi) sarà trasferito anche alla prima, che potrà poi estenderne il comportamento con ulteriori metodi o attributi. La creazione di una gerarchia di

26 http://www.santafe.edu

classi permette di costruire entità software dotate di gradi crescenti di specializzazione e di sviluppare e testare indipendentemente ogni singolo elemento, potendo poi trasmettere automaticamente a tutte le sottoclassi i miglioramenti apportati a quella di livello superiore. Un altro vantaggio si ha poi nel caso di gerarchie molto articolate che contengano nodi che, pur corrispondendo a categorie astratte di oggetti ed essendo indispensabili all’interno dei passaggi logici di derivazione delle sottoclassi, non permettano la costruzione di instance (nella realtà si può pensare, ad esempio, alla categoria degli erbivori che non corrisponde ad alcun animale concreto, ma che rappresenta una suddivisione astratta di fondamentale importanza): la programmazione ad oggetti permette di gestire tali situazioni con l’uso di classi che sono dette appunto astratte. La proprietà di polimorfismo poi consente di creare procedure capaci di operare trasversalmente su più oggetti accomunati da un’unica proprietà o comportamento.

Questo insieme di caratteristiche del linguaggio ad oggetti ne ha giustificato l’uso nel progetto Swarm che è nato con l’obiettivo di offrire ai ricercatori uno strumento standard per la simulazione, cioè una collezione di agenti capaci di interagire in modo parallelo, da utilizzare per costruire modelli agent-based: l’uniformità di base di questa risorsa gratuita consente a soggetti impegnati in campi diversi di esprimere intuizioni spesso molto eterogenee, ma comprensibili nei loro tratti salienti anche al di fuori dei rispettivi confini disciplinari.

Nelle applicazioni create con Swarm la simulazione procede su due livelli distinti: da un lato si ha l’esistenza dell’esperimento che è stato riprodotto all’interno del computer (ad esempio il funzionamento di una catena produttiva) e dall’altra è presente un piano di osservazione accessibile all’utente, sempre interno alla simulazione, ma esterno all’esperimento e formato da tutti quegli strumenti (grafici, tabelle…) che permettono all’utente di seguire l’evoluzione degli eventi simulati. Per entrare più in dettaglio nella descrizione della struttura gerarchica di Swarm si può fare riferimento alla Figura 3.1 in cui gli elementi che costituiscono l’ambiente di simulazione sono distinti in base alla posizione che occupano nella struttura gerarchica di cui fanno parte.

Figura 3.1 – Rappresentazione schematica di una simulazione in Swarm.

Adattamento al caso di jES OF dello schema di Terna [2002]

Il livello più esterno è quello dell’osservatore (Observer) che, attraverso un insieme di grafici e tabelle, è posto in condizione di seguire ciò che accade nel modello allo scorrere del tempo artificiale della simulazione: il secondo livello, autonomo rispetto al primo, ma subordinato nella scala dei tempi, è quello dell’esperimento vero e proprio (Model). Entrambi i punti di vista possono essere adottati per seguire l’evoluzione del modello; se si considera la simulazione dal lato dell’osservatore, si avrà una prospettiva generale ed onnicomprensiva, mentre l’uso di sonde permetterà, nel corso dell’esperimento, di addentrarsi nei dettagli (parametri e funzioni) specifici dei singoli elementi.

Nella figura sono rappresentati gli oggetti che sono costruiti all’interno del modello: nel caso di jES OF si tratterà, in primo luogo, di una griglia (raster) che rappresenta il mondo sul quale sono disposte le unità produttive e sarà inoltre presente uno spazio all’interno del quale una data caratteristica (ad esempio la fiducia, ma in altre simulazioni potrebbe trattarsi di cibo, di calore o d’altro) potrà essere presente in misura variabile. Nello schema sono indicati anche due orologi, uno interno al Model ed uno nell’Observer, ad indicare che il tempo dell’esperimento è calcolato separatamente rispetto a quello al livello dell’osservatore; in Swarm, infatti, il tempo e lo spazio sono riprodotti artificialmente da programmi che

gestiscono e sincronizzano l’operare degli agenti nello spazio con lo scorrere del tempo dell’esperimento e questa capacità di coordinare automaticamente gli eventi costituisce una notevole semplificazione per il ricercatore che, diversamente, dovrebbe gestire questa funzione in modo manuale.

Convenzionalmente si indica l’unità di misura del tempo nella simulazione con l’espressione tick, ma questa corrisponde ad una quantità di tempo reale che può essere definita di volta in volta in modo diverso, a seconda delle esigenze specifiche: ad esempio un tick potrebbe essere l’equivalente di una giornata di contrattazioni di borsa, oppure, come nel caso di jES OF, può corrispondere a nove giorni di attività produttiva di un anno commerciale, e si potranno studiare simulazioni che coprano, ad esempio, un arco significativo di 25 anni impostando un tempo pari a 1000 tick (se si preferisce fare riferimento all’anno solare, si potranno interpretare 10 tick come l’equivalente di un trimestre produttivo, ottenendo un analogo risultato).

In ogni unità di tempo è definito un determinato numero di passi (step) della simulazione che devono essere completati e che possono corrispondere o meno ad eventi, dal momento che è possibile prevedere passi in cui non si verifica nulla.

L’ambiente di simulazione rileverà i dati iniziali ed i risultati parziali e finali dell’intero processo, fornendo grafici aggiornati sull’evoluzione del sistema (raffigurati nella Figura 3.1 a livello dell’Observer) e gestendo l’uso della memoria del calcolatore e la generazione dei numeri pseudocasuali che sono utilizzati sia all’avvio, sia nel corso della simulazione.

All’interno del Model saranno inoltre presenti gli agenti che l’utente potrà controllare in dettaglio attraverso una sonda creata automaticamente per ciascuno di essi; a seconda dell’argomento su cui verte la simulazione, gli agenti potranno rappresentare le entità più diverse, a partire da elementi come le molecole, per arrivare alle formiche, a singoli consumatori o a realtà più ampie come le unità produttive (unit), le imprese o gli stati (il nome stesso della piattaforma di lavoro, Swarm, richiama l’idea di uno sciame di agenti).

Outline

Documenti correlati