Laurea Triennale

Il mio lavoro di tirocinio e tesi si è focalizzato nella integrazione del toolkit di sviluppo di simulazioni agent-based MASON, all'interno della Agent Modeling Platform per Eclipse.

AMP: Agent Modeling Platform

La Agent Modeling Platform è un progetto Eclipse open source, rilasciato con licenza pubblica Eclipse (EPL), il cui obiettivo è quello di fornire framework estensibili e strumenti atti alla rappresentazione, creazione, modifica, generazione, esecuzione e visualizzazione di modelli basati su agenti.

AMP permette di creare simulazioni basate su agenti attraverso un editor grafico, costruendo dinamicamente un meta-modello (chiamato metaabm e rappresentato da un file XML). Ogniqualvolta l'utente effettua il salvataggio del meta-modello costruito graficamente, viene avviato un processo di traduzione del file metaabm in codice, nella maggior parte dei casi Java, relativo al toolkit di simulazione basata su agenti, scelto alla creazione del modello fra i vari supportati dalla piattaforma.

Toolkit Supportati

  • Ascape: framework scritto in linguaggio Java per lo sviluppo e l'esplorazione di modelli basati su agenti. Il termine scape deriva da Sugarscape, il modello implementato da Joshua M. Epstein e Robert L. Axtell, in cui si realizzano le idee espresse nel loro famoso libro Growing Artificial Societies.
  • Escape: ambiente di modellazione agent-based open source basato su Ascape integrato nell'IDE Eclipse.
  • Repast Simphony: REcursive Porous Agent Simulation Toolkit è stato sviluppato nel 2000 presso l'Università di Chicago ed in seguito reso, dall'Argonne National Laboratory, un'infrastruttura software in grado di supportare la rapid social science discovery. Versioni successive hanno introdotto nel sistema la capacità di gestire lo sviluppo di applicazioni di simulazione ad agenti su larga scala.

Compatibilità

La Agent Modeling Platform prevedeva la compatibilità con Eclipse 3.7 Indigo.

Una fase preliminare del lavoro ha riguardato l'aggiornamento di AMP verso le ultime release di Eclipse 4. In particolare con le più recenti Juno 4.2, Kepler 4.3 e Luna 4.4 (Milestone 2). La guida all'installazione di AMP da git compatibile con le ultime release di Eclipse è disponibile qui.

Framework

  • Agent Modeling Framework: offre strumenti potenti e di semplice utilizzo per la progettazione di modelli basati su agenti, compresa una rappresentazione comune, editor, generatori di codice e documentazione.
  • Agent Execution Framework: fornisce interfacce core, servizi ed interfaccia grafica per l'esecuzione del ciclo di vita del modello, l'aggregazione degli agenti, il controllo della visualizzazione e della gestione dell'esecuzione, e l'interazione con il workbench.
  • Agent Graphic Framework: si basa ed estende strumenti della piattaforma Eclipse come GEF, Draw2D, Zest ed altre tecnologie per supportare la visualizzazione in real-time e l'interazione con i modelli ad agenti.

MASON4AMP

Il lavoro si è concentrato nel framework di modellazione, il quale si occupa di fornire le specifiche relative alla metamodellazione, ai toolkit supportati ed alla traduzione del metamodello in codice.

L'integrazione di MASON nella Agent Modeling Platform ha seguito le seguenti fasi

Mason come plug-in Eclipse

  • Il primo passo per l'integrazione di MASON, come nuova target platform, è l'inserimento in AMP del codice sorgente del toolkit, in particolare tutti i concetti fondamentali per costruire simulazioni MASON, tra i quali definizione dei tipi di spazio, strumenti e risorse per l'esecuzione, ispezione e visualizzazione.
  • Il risultato dell'operazione è incapsulato in un Eclipse plug-in, con lo scopo di rendere possibile l'utilizzo dei concetti MASON per la modellazione di simulazioni.

File di generazione di codice Mason

  • La generazione del codice, fornita dall'Agent Modeling Framework, si basa su file di template e di workflow.
  • Dopo aver reso MASON un Eclipse plug-in, per integrarlo all'interno della piattaforma, il passo successivo è specificare i file Xpand di generazione di documentazione e codice, contenenti le definizioni dello 'scheletro' di una generica simulazione MASON, che verranno espansi attraverso il generatore di codice Xpand.
  • Affinché tali definizioni possano essere espanse, al salvataggio del metamodello creato graficamente dall'utente, è necessario configurare il Modeling Workflow Engine mediante i file di workflow: indicano dove sono situate le definizioni Xpand ed EMF (Eclipse Modeling Framework) da utilizzare per creare gli artefatti relativi a codice e documentazione della simulazione.

Integrazione nell'IDE

  • L'integrazione di MASON, all'interno della componente di generazione del codice dell'Agent Modeling Framework, non è sufficiente a renderlo compatibile con la Agent Modeling Platform. In primo luogo è necessario predisporre l'IDE, affinché sia data la possibilità di generare un progetto Eclipse specifico per MASON, consentendo di creare una simulazione di tale toolkit.
  • Inoltre è fondamentale porre un collegamento tra il progetto Eclipse, la generazione del codice ed i concetti indispensabili per la costruzione di simulazioni MASON.

L'integrazione dentro la componente IDE di AMF è realizzata mediante apposite classi Java e gli strumenti offerti dal Plug-in Development Environment.

Simulazione

Per poter testare il lavoro svolto è stata realizzata una simulazione, dal nome Particles, presente nel toolkit MASON.

  • Gli agenti di tale simulazione sono particelle, Particle, i quali si muovono all'interno di una griglia bidimensionale.
  • Il modello di simulazione rappresenta lo scenario in cui delle particelle, che si muovono lungo una direzione bidimensionale, sono costrette all'interno di uno spazio specifico.
  • Nel momento in cui tali agenti collidono con altri agenti o con le pareti dello spazio devono cambiare la loro direzione di movimento.

Il processo di creazione del progetto MASON contenente la simulazione Particles in AMP fino all'esecuzione è disponibile qui (il modello della simulazione è già stato creato precedentemente).

Open Source

Il codice del progetto è disponibile su GitHub.