Documentazione assistita di ABMs (Agent-Based Models) Relatore Prof. Vittorio Scarano Dott. Carmine Spagnuolo Candidato Simone Romano
Struttura della presentazione Panoramica modelli di simulazione basati sugli agenti - MASON ODD Protocol e MASON Doxygen Può aiutarci? Soluzione proposta: Plugin per Eclipse Caratteristiche Conclusioni Automatic ABMs documentation - Simone Romano
Automatic ABMs documentation - Simone Romano Sistemi multi-agente Branca relativamente nuova dell’informatica: Primi studi: anni ‘80 Diffusione: circa metà anni ‘90 STRUTTURA Agenti (entità autonoma) Ambiente I sistemi multi-agente costituiscono un'interessante tipologia di modellazione di società, ed hanno a questo riguardo vasti campi d'applicazione, che si estendono fino alle scienze umane e sociali (economia, sociologia, etc.). Un sistema multi-agente o (sistema ad agenti multipli) è un insieme di agenti situati in un certo ambiente ed interagenti tra loro mediante una opportuna organizzazione. Un agente è cioè un'entità caratterizzata dal fatto di essere, almeno parzialmente, autonoma, sia essa un programma informatico, un essere umano, e così via. I sistemi multi-agente vengono utilizzati per simulare le interazioni esistenti tra agenti autonomi. Si cerca di determinare l'evoluzione del sistema al fine di prevederne l'organizzazione risultante. Automatic ABMs documentation - Simone Romano
Automatic ABMs documentation - Simone Romano MASON “MASON is a fast discrete-event multiagent simulation library core in Java” STRUTTURA Agenti - Steppable Ambiente – SimState OBIETTIVO: Generazione assistita di documentazione di programmi MASON Automatic ABMs documentation - Simone Romano
Idea Procedura guidata mirata alla generazione documentazione Richiedeva confidenza con la libreria AST e con lo stile richiesto da Doxygen per i commenti, plug-in developement
Come si documenta un ABMs? ODD Protocol Purpose Entities, State variables and scales Process overview and scheduling Design concepts Initialization Input Submodels MASON Definito dall’utente Ambiente, Agenti, variabili Lista azioni eseguite in start() SimState step() Steppable Valore iniziale delle variabili Pseudo-codice delle azioni elencate in 3 Evidenziamo le relazioni tra le linee guida del protocollo ODD e le caratteristiche della libreria MASON In verde le informazioni generate in automatico In rosso quelle lasciate all’utente
Automatic ABMs documentation - Simone Romano Doxygen is the de facto standard tool for generating documentation from annotated C++ sources, but it also supports other popular programming languages such as C, Objective-C, C#, PHP, Java, Python, IDL (Corba, Microsoft, and UNO/OpenOffice flavors), Fortran, VHDL, Tcl, and to some extent D. Multilinguaggio configurabile Automatic ABMs documentation - Simone Romano
Automatic ABMs documentation - Simone Romano Ricreiamo ODD Parsing del codice Generazione automatica di informazioni Informazioni inserite dall’utente Generazione commenti al codice Vengono raccolte le informazioni e vengono generati commenti per popolare correttamente Ciascuna sezione della documentazione Automatic ABMs documentation - Simone Romano
Plug-in – caratteristiche 1 Generazione pseudocodice Fasi Process overview and scheduling, Submodels di ODD Selezione colore output Separazione tra commenti autogenerati e commenti inseriti dall’utente Definito dall’utente Generato dal plugin Generato da Doxygen
Plug-in – caratteristiche 2 Pulizia del codice
Plug-in – caratteristiche 3 Iterabilità ODD object Output type Doxygen Pdf-Rtf (iText library) Txt
… Flusso degli eventi Purpose Entities, state variables and scales Process overview and scheduling Design concepts Initialization Input Submodels Doxygen Pdf Rtf txt INTRO OUTPUT Choice New ODD object … ODD serialized object
Screenshots - 1
Screenshots - 2
Screenshots - 3
Conclusioni OBIETTIVO INIZIALE PRODOTTO REALIZZATO Documentare programmi di simulazione multi-agente scritti in Java con libreria MASON PRODOTTO REALIZZATO Supporta l’utente durante la fase di documentazione Struttura la documentazione secondo uno standard noto (ODD) supporta l’utente durante la fase di documentazione e genera output organizzato secondo uno standard noto Il prodotto produce quindi un risultato esaustivo rispetto all’obiettivo iniziale