LABORATORIO TECNOLOGIE AVANZATE

SSD FIS/01

CFU 2

Docente: Prof. Marco Maggiora




Page under construction


Introduzione

L'approccio basato sui Modelli ad Agenti è ormai parte del quotidiano; questa presentazione del Prof. Michael Luck (copia locale) offre un'interessante panoramica di 50 utilizzi "commerciali" dell'Agent Based Computing (ABC).

Lo strumento principe per giocare e scrivere Agent Based Models (ABM) in questo corso è NetLogo: un software freeware (non open-source!),  che costituisce a tutti gli effetti un Integrated Development Enviroments (IDE) e che permette con poche righe di un linguaggio erede stretto del logo di scrivere ABM dal comportamento anche relativamente complesso.
Per un primo approccio si consiglia la lettura dei seguenti articoli/proceedings:
  1. Tisue, S., & Wilensky, U. (2004), "NetLogo: A simple environment for modeling complexity", paper presented at the International Conference on Complex Systems, Boston, May 16 - 21;


Orario delle lezioni

Il calendario pubblico del corso sulla piattaforma google riporta il nuovo calendario concordato con gli studenti.



Appunti delle lezioni

Programma sintetico:
Parte prima, Multi-Agent-Systems:  Introduction, Intelligent Agents, Deductive Reasoning Agents, Practical Reasoning Agents, Reactive and Hybrid Agents, Multi-Agent Interactions, Reaching Agreements, Agent Communication, Working Together, Introduction to NetLogo

Parte seconda, Laboratory Activities.


Ogni elemento del programma sintetico corrisponde ad un'unità, seguendo il link è possibile scaricare le relative slides utilizzate per la didattica frontale; esse costituiscono il punto di riferimento per la preparazione dell'esame.


Programma dettagliato:

versione pdf (.pdf),   versione word (.doc)


Versione completa:

Per un download più rapido sono a disposizione anche le seguenti versioni:
Unità 1-17 (.pdf)    Unità 1-17 (.tar.gz, archivio con tutte le singole unità: file apribile con winzip o simili)      
 




Materiale didattico

Per poter facilitare la comprensione degli appunti e dei libri citati si consiglia di consultare le seguenti risorse online relative a prerequistiti per questo corso o a concetti mutuati da altre discipline nel corso delle lezioni:



Attività di laboratorio

Le attività di laboratorio si svolgono utilizzando l'IDE NetLogo, versione 4.0.4
A seconda della piattaforma su cui volete utilizzare NetLogo potete effettuare direttamente il download dei file di installazione dal sito NetLogo (da cui si può scaricare anche una versione per MAC) o dalla repository locale:
          netlogo-4.0.4.tar.gz (Linux), NetLogo4.0.4Installer.exe (Windows)           netlogo-3DPreview5.tar.gz (Linux), NetLogo3DPreview5Installer.exe (Windows)

Tutte le versioni dipendono dalla presenza sulla piattaforma di un'installazione Java funzionante.
Mentre su piattaforma Windows i file di installazione sono autoscompattanti, su piattaforma Linux è necessario (si assume di essere in Bourne Shell):
1) creare una directory di lavoro e scompattare l'archivio:
    mkdir ~/Agenti/NetLogo
    cd ~/Agenti/NetLogo
    tar zxf netlogo-4.0.4.tar.gz
2) definire una variabile di ambiente che punti all'installazione e aggiungerla al PATH:
    cd netlogo-4.0.4
    export NETLOGOPATH=`pwd`
    export PATH=/usr/lib/jvm/java-1.5.0-sun/bin/:${PATH}:$NETLOGOPATH
Da questo momento in poi l'IDE può essere invocato semplicemente con il comando:
    netlogo.sh

Il manuale della versione corrente si può trovare in formato html sul sito NetLogo o in formato pdf.
La risorsa in assoluto più importante è il Dizionario delle Primitive, con l'elenco di ciascun comando e dei suoi utilizzi, in ordine alfabetico. Ogni installazione ne ha una copia locale all'interno della directory docs/ nel file primindex.html

Fase preparatoria

I tre tutorials della NetLogo sono ottimi ma non semplicissimi. Per questo  suggerisco, per poter iniziare a prendere dimestichezza con NetLogo, i seguenti due tutorial:

        Tutorial del Complexity Workshop (link alla copia locale).

        Il tutorial pone il focus sui primi passi in NetLogo utlizzando la User Interface dell'IDE. Per questo lo suggerisco come primo passo; ignorate il link allo strumento alternativo, RePast, al termine del tutorial.


Processo didattico suggerito dallo StupidModel (link alla copia locale).

Il tutorial è costituito da 16 versioni che aggiornano progressivamente un modello originariamente scritto per una versione più vecchia di NetLogo (NetLogo 2) utilizzando sempre il comando più semplice possibile. Dal momento che segue un approccio molto più sistematico del precedente lo consiglio come secondo passo.
Il tutorial è costituito dall'archivio NetLogoStupidmodels.tgz, che contiene tutte le versioni del modello per l'IDE NetLogo 4.0.4 e il dat file necessario per le ultime due versioni (la versione originale del file contiene in alcune versioni dei comandi non corretti per la versione corrente di NetLogo);
Si consiglia di estrarre i files in una directory temporanea, di eseguire la shell di inizializzazione di NetLogo e di caricare mediante il comando File->Open ciascun modello. Dopo aver letto le informazioni nella Tab "Information" cercate di comprendere il listato della versione (all'inizio molto banale, e poi pian piano più difficile) accedendovi nella Tab "Procedures".
Quando crete di aver capito, nella Tab "Interface" eseguite dapprima il setup cliccando sul pulsante "Setup" e dopo iniziate la procedura principale del codice cliccando sul pulsante "Go". Se la versione del modello è sufficientemente avanzata potete anche variare i parametri di input.

Il modello è stato scritto in modo da poter essere utilizzato per l'apprendimento di 5 dei più comuni IDE per ABM; per una descrizione delle diverse implementazioni e una comparazione dei vantaggi dei diversi tools si legga il documento degli autori dello StupidModel (formato pdf).

Una volta preso dimestichezza con il linguaggio e i tools di NetLogo, si consiglia di affrontare alcuni dei numerosi modelli nella libreria che viene fornita con ogni versione di NetLogo. Si può accedere alla libreria via Menu con File->Models LIbrary.

Modello Termites discusso durante le lezioni. In particolare nel corso nelle lezioni frontali, nella sezione Introduction to NetLogo, è stato discusso una versione semplificata del modello Termites (presente nella libreria dei modelli). Le due versioni del modello a cui si è fatto riferimento nella sezione sono:
  1. Termites_Tutorial.1.nlogo, versione senza visualizzazione a istogramma e con la funzione go di tipo turtle;
  2. Termites_Tutorial.2.nlogo, versione con visualizzazione a istogramma e con la funzione go di tipo observer.

Attività di gruppo

L'attività da svolgere consiste nel creare un modello ad agenti con Netlogo 4.0.4 per modellizzare un gas bidimensionale e le sue differenti distribuzioni di energia.
(NB: accesso con credenziali differenti rispetto agli altri links della pagina).



Esami

L'esame è solo orale, su appuntamento; gli studenti che intendono sostenere l'esame devono contattarmi via mail, con un anticipo di almeno due settimane (quattro dal 15/7 al 30/9) rispetto alla data desiderata.
Prima che il primo studente di ciascun gruppo possa sostenere l'orale è necessario che io riceva, esclusivamente in modalità telematica e in formato pdf, la relazione relativa all'Attività di Laboratorio del gruppo. Le relazioni vanno inviate all'indirizzo e-mail: marco.maggiora@to.infn.it e possono essere scritte indifferentemente in inglese o in italiano.
 
Gli appelli concordati di volta in volta con gli studenti saranno inseriti nel calendario pubblico del corso in modo che altri studenti si possano eventualmente unire. 





Approfondimenti