Magazine Informatica

Simulare sistemi complessi con NetLogo

Creato il 17 aprile 2013 da Hnikarr

Oggi tornerò a dedicarmi a uno di quegli argomenti che interessano soltanto me (e pochi altri): nello specifico, parlerò di NetLogo. NetLogo è un ambiente di programmazione per modellare e simulare sistemi complessi, sia naturali che sociali. In pratica, all'interno di NetLogo è possibile modellare un particolare tipo di situazione, formata da molti agenti indipendenti: per esempio, una festa con decine di invitati (o anche centinaia, se proprio vogliamo, tanto non siamo noi a dover pagare). Creiamo l’ambiente della festa, creiamo gli invitati e a ogni invitato assegniamo un determinato comportamento. A questo punto, si può avviare la simulazione e lasciarla correre per un certo numero di turni, osservando il modo in cui la nostra festa si evolve e come i vari invitati interagiscono tra loro. Alla fine della simulazione, è possibile raccogliere i dati sul comportamento degli invitati, con cui potremo elaborare teorie, che ne spieghino il comportamento, oppure verificare se le nostre teorie iniziali fossero corrette o meno. Detto in modo molto semplice, questo è ciò che fa NetLogo. Un sistema complesso è un qualunque sistema in cui interagiscono tra loro più agenti: NetLogo ci mette a disposizione un ambiente molto facile da usare, dove possiamo modellare il sistema che più ci interessa al momento, assegnargli alcune regole generali di condotta e poi analizzare il modo in cui si evolve col tempo. Il sistema complesso può essere sia naturale, sia sociale: possiamo dunque simulare sia il modo in cui un gas si espanderà all'interno di una scatola, sia il modo in cui la ricchezza tenderà a distribuirsi all'interno di una società, ma anche modellare una simulazione per trovare il giusto equilibrio tra predatori e prede in un ambiente naturale, oppure il modo in cui i bambini di un asilo tenderanno a raggrupparsi per giocare. In linea di massima, qualsiasi ambiente, dove più agenti si trovano a interagire tra loro, può essere riprodotto e simulato. Già in partenza, NetLogo ci mette a disposizione alcune decine di modelli, suddivisi per genere e tutti accompagnati da una buona descrizione e documentazione: possiamo utilizzarli così come sono, ma possiamo anche modificarli e adattarli alle nostre esigenze. Essendo però improbabile che questi modelli siano sufficienti per tutte le nostre necessità, abbiamo anche a disposizione alcuni modi per aumentarli: possiamo scaricare nuovi modelli programmati da altri, possiamo aspettare il prossimo aggiornamento di NetLogo (c’è sempre qualche modello nuovo, ogni volta), oppure li possiamo programmare noi stessi. Oltre a essere un ambiente di programmazione, NetLogo è anche un linguaggio di programmazione, seppure molto semplice (occupa solo cinquanta pagine nel manuale), e lo possiamo usare per modellare nuovi ambienti e nuove regole, adatte alla simulazione che vogliamo eseguire. Spostandoci su un versante più tecnico, NetLogo è un programma realizzato in Scala (per quanto possa sembrare strano, Scala è il nome di un linguaggio di programmazione, un “derivato” del Java) ed è disponibile per i principali sistemi operativi: in linea di massima, potete installarlo e usarlo ovunque ci sia una Java Virtual Machine. La versione per Windows, in particolare, include anche una Java Virtual Machine nel pacchetto di installazione, per cui potete scaricare e installare il tutto, senza preoccuparvi di altro, ma è anche possibile scaricare solo NetLogo, utilizzando poi la JVM già presente sul vostro computer: la scelta è a discrezione dell’utente Windows, anche se il sito di NetLogo suggerisce di usare il pacchetto “tutto incluso”. Al primo avvio, ci troveremo davanti questa finestra: Simulare sistemi complessi con NetLogo È un progetto vuoto, che possiamo usare come punto di partenza per realizzare la nostra simulazione. Sotto la etichetta Interface troviamo la interfaccia grafica del sistema, composta da uno schermo e vari interruttori, come pulsanti e levette: qui possiamo interagire con la simulazione, modificarne i dati e osservare ciò che accade nel corso del tempo. Sotto Info troviamo una guida alla simulazione in corso: che tipo di simulazione è, a cosa corrispondono i vari dati, come modificarla, cosa ci si propone di ottenere, eccetera. Code, infine, ci mostra il codice sorgente della simulazione: possiamo modificarlo come vogliamo, ad esempio per aggiungere o togliere funzioni. Nel progetto vuoto che ci è proposto all'inizio  ovviamente, tutte e tre queste sezioni saranno in bianco, perché ci si aspetta che le riempiamo noi. Se vogliamo vedere un esempio di come siano compilate, dovremo caricare un modello già esistente, cosa che possiamo fare passando da File -> Models Library, oppure premendo la combinazione di tasti CTRL+M. Qui sono raccolti tutti gli esempi forniti da NetLogo: come ho già detto, aumentano a ogni nuovo aggiornamento del programma e possono essere arricchiti con altri modelli, scaricati dal sito o altrove. Come esempio, caricherò il modello Flocking, che simula la formazione e il comportamento di stormi di uccelli: gli uccelli sono rappresentati da triangoli, per cui è necessario usare un poco di fantasia, ma è un dettaglio secondario. A titolo informativo, flocking è un tipo di movimento “a sciame” o “a stormo”, abbastanza comune nelle animazioni, di cui si può vedere qui una imitazione in JavaScript. Simulare sistemi complessi con NetLogo Questo è un esempio di simulazione in corso. Gli uccelli si muoveranno dapprima in modo indipendente e scoordinato, per poi raccogliersi a poco a poco in stormi e cominciare a spostarsi in formazioni. Per avviarlo, dovremo prima di tutto guardare il lato sinistro dello schermo: lì possiamo modificare i dati di riferimento per questa simulazione, come il numero degli uccelli (population), la distanza massima a cui ogni uccello può vedere (vision), eccetera. Modificando questi dati, anche il risultato delle simulazioni sarà diverso. Dopo aver scelto i dati da sperimentare, clicchiamo sul pulsante Setup, per impostare l’inizio della simulazione coi dati da noi scelti: lo schermo si riempirà di triangolino colorati, distribuiti in varie posizioni. Per avviare la simulazione, clicchiamo sul pulsante Go. Alcune simulazioni si concludono da sole dopo un certo tempo o dopo aver raggiunto un certo risultato; altre, invece, sono potenzialmente infinite. Per interrompere in qualsiasi momento una simulazione, basta premere di nuovo Go. È tutto qui. Per avviare una simulazione, impostiamo i dati, clicchiamo Setup e clicchiamo Go; per interromperla, clicchiamo di nuovo Go. Sullo schermo possiamo seguire i cambiamenti del sistema, sia leggendo gli indici in aggiornamento, sia guardando ciò che accade nel monitor. Cliccando col tasto destro su un agente (in questo caso, un triangolino), possiamo esaminare in dettaglio le sue proprietà. Non c’è molto altro da sapere, per cominciare a sperimentare coi modelli in dotazione; se però vogliamo capire qualcosa in più sul suo funzionamento, e modificare i modelli o crearne di nuovi, allora una bella immersione nel suo manuale sarà necessaria. Peraltro, il manuale si apre con quattro semplici tutorial, per cominciare subito a “sporcarsi le mani” col programma, senza perdersi troppo in particolari tecnici: quelli verranno in seguito, se vorremo proseguire la lettura.

Potrebbero interessarti anche :

Ritornare alla prima pagina di Logo Paperblog

Possono interessarti anche questi articoli :

Dossier Paperblog