Relazione di stage in versione scaricabile

Transcript

Relazione di stage in versione scaricabile
UNIVERSITA’ DEGLI STUDI MILANO BICOCCA
Facoltà di Scienze Matematiche, Fisiche e Naturali
Corso di Laurea in Informatica
PROGETTAZIONE E IMPLEMENTAZIONE
DI UN MODELLO MULTIAGENTE PER LA
SIMULAZIONE IN UN AMBIENTE 3D
Relatore:
Correlatore:
Prof.ssa Stefania BANDINI
Dott. Giuseppe VIZZARI
Riassunto relazione
finale di:
Giorgio Pizzi
Matr. 032347
Anno Accademico 2002-2003
prova
Indice
1.
Introduzione e obbiettivi .........................................................................................3
2.
Il problema di localizzazione e di ottimizzazione ...................................................5
°°°°
2.1.
Contesti d’uso ..................................................................................................7
°°°°
2.2.
Stato dell’arte ...................................................................................................9
3. Una proposta basata su paradigma ad agenti ........................................................13
3.1.
4.
Descrizione dell’architettura del sistema ..............................................................19
4.1.
Studio di fattibilità .........................................................................................19
4.2.
Progettazione .................................................................................................22
4.2.1.
Procedura ...............................................................................................25
4.2.2.
Scenari possibili .....................................................................................26
4.3.
Paradigma ad agenti...............................................................................28
4.3.2.
Linguaggio di programmazione .............................................................34
Dimostrazione d’uso ......................................................................................42
Sviluppi futuri .......................................................................................................50
6.1.
7.
Protocollo di comunicazione tra applicazione 2D e 3D ................................36
Implementazione ...................................................................................................39
5.1.
6.
Teorie e strumenti utilizzati...........................................................................28
4.3.1.
4.4.
5.
Modellazione .................................................................................................14
Conclusioni ....................................................................................................54
Riferimenti ............................................................................................................55
7.1.
Risorse Web ...................................................................................................56
8.
Indice delle figure..................................................................................................57
9.
Indice delle tabelle ................................................................................................58
10. Ringraziamenti ......................................................................................................59
2
1. Introduzione e obbiettivi
L’obbiettivo di questa tesi è l’analisi e la progettazione di uno strumento di
supporto alle simulazioni di sistemi complessi nella progettazio ne e nella
pianificazione di aree urbane. In particolare, questo lavoro è focalizzato nella
modellazione tridimensionale di ambienti ed entità che agiscono ed interagiscono
autonomamente al suo interno. Le motivazioni di questo approccio sono duplici.
Da una parte consente di ottenere efficaci e realistiche visualizzazioni
dell’evoluzione del sistema, rendendo maggiormente comprensibile le sue
dinamiche anche a persone non esperte nel dominio di applicazione. D’altra parte
può anche essere utile per modellare in modo più preciso quei particolari
meccanismi inerenti le interazioni tra le entità del sistema.
Le tecnologie attuali ci consentono di inserire varie riproduzioni virtuali realistiche
anche di ambienti molto estesi. Tuttavia, queste risorse possono risultare alienanti
perché prive di ogni elemento dinamico o addirittura poco utilizzate perché non
interfacciate da applicazioni scientifiche e professionali.
Questa integrazione può ottenere simulazioni maggiormente realistiche, utili nella
progettazione di nuove strutture architettoniche o negli interventi di quelle già
esistenti (scuole, stazioni ferroviarie, musei, stadi…).
Con questi propositi ho voluto amalgamare le funzionalità derivanti dall’uso di
paradigmi ad agenti per la modellazione comportamentale di avatar e le
caratteristiche avanzate di grafica per l’aspetto maggiormente dinamico del
sistema.
Nello spazio tridimensionale sono stati implementati alcuni sensori in modo
maggiormente realistico, coinvolgendo le proprietà fisiche degli oggetti e
l’ambientazione volumetrica: la forza gravitazionale influisce sui movimenti dei
personaggi che sono costituiti con le stesse caratteristiche fisiche di quelle reali, la
capacità di evitare ostacoli e di definire abilità comportamentali, interagire con
l’ambiente e con gli altri personaggi della scena. Il valore aggiunto attraverso
questo strumento risiede particolarmente negli aspetti dinamici che rendono
maggiormente reale una simulazione: i movimenti analoghi a quelli abitualmente
riscontrabili intorno a noi, la fisica legata ai nostri sensi e quella relativa alle
strutture rigide, il realismo visivo ambientale e quello comportamentale. Il modello
teorico che è stato preso in considerazione e riguardante le modalità in cui le
informazioni hanno origine, si diffondono, e vengono percepite dagli agenti si basa
sulla teoria dei campi e più specificatamente sul paradigma ad agenti.
L’applicativo utilizzato per la rappresentazione grafica tridimensionale è 3DS Max
5.0 congiuntamente al plug- in Character Studio 4 tramite cui è stata realizzata
un’interfaccia con cui è possibile creare in pochi passi l’intera scena ed essere
pronti per risolvere la simulazione.
Per testare lo strumento creato, sono stati considerati quattro tipi diversi di spazi sia
in una situazione in cui tutti gli agenti percepiscono correttamente i campi, sia nel
caso in cui alcuni di essi si trovano in uno stato confusionale dovuto all’emergenza.
E’ stata descritta l’architettura del sistema, i metodi implementativi utilizzati, i
potenziali contesti d’uso e lo stato dell’arte di analoghe applicazioni e delle relative
tecnologie.
3
Ne sono stati considerati gli sviluppi possibili ipotizzando che, proseguendo nello
sviluppo di nuove funzionalità, sarà possibile fare previsioni riguardo la sicurezza e
la gestione di emergenze in strutture architettoniche, simulando un numero
arbitrario di persone e ricreando condizioni di fumo e fuoco difficilmente
riproducibili in altro modo.
4
2. Il problema di localizzazione e di ottimizzazione
I problemi di localizzazione si riferiscono alle indicazioni per il posizionamento di
un oggetto, o un insieme di oggetti, in uno spazio. In generale esistono due tipi
diversi di significato riguardo questo tipo di attività: riferendosi al tipo di controllo
di un sistema o alle questioni di progettazione, pianificazione e configurazione.
Proprio quest’ultima definizione, ovvero la scelta di posizionare nel migliore dei
modi alcuni oggetti all’interno di un ambiente, sarà trattata di seguito e potrà essere
considerata anche come un problema di ottimizzazione.
Il problema della localizzazione e quello di ottimizzazione sono trattati
diffusamente il letteratura e riguardano innumerevoli aspetti: il posizionamento
strategico di insediamenti militari, quello di aeroporti, stazioni metropolitane o
ferroviarie e quello della cartellonistica, la progettazione di circuiti elettronici [23]
e il percorso più breve da compiere [24]. Generalmente questo tipo di problemi
sono NP-Complessi e vengono trattati con algoritmi e tecniche euristiche. In
alcuni casi però, in mancanza di precise condizioni che regolano il sistema, non è
sempre possibile definire delle funzioni per la valutazione quantitativa. Ci sono
situazioni, infatti, in cui la valutazione della configurazione dell’intero sistema è
dipendente da elementi dinamici che agiscono autonomamente nell’ambiente.
Invece di trattare questo genere di problemi in maniera globale, definendo un
metodo di soluzione centralizzato, essi possono essere efficacemente riformulati in
termini di agent i locali che interagiscono e cercano di perseguire i propri obbiettivi
coordinandosi e agendo competitivamente. In questo modo, la soluzione nel
collocare elementi all’interno dell’ambiente, viene ottenuto come effetto emergente
del comportamento individua le e locale di ogni agente. Per questo motivo è
possibile prendere in considerazione modelli basati su MAS (Multi Agent System)
che consentono di focalizzarsi sugli aspetti delle interazioni tra gruppi di agenti e di
folle con comportamenti intelligenti, ottenendo risultati per problemi complessi.
Data la difficoltà computazionale di questi sistemi che possono coinvolgere decine
di agenti, il metodo risolutivo sarà ciclico: in una prima fase si fanno delle scelte
preliminari riguardo il posizionamento degli oggetti, successivamente si esegue la
simulazione valutando le scelte fatte ed infine si analizzano i risultati ottenuti
modificando eventuali aspetti di ottimizzazione. Questo processo può iterarsi
diverse volte fino a che si ottengono risultati soddisfacenti.
Nell’articolo di S.Bandini, S.Manzoni e G.Vizzari :”MMASS Approach to
Localization Problems”, si prende in esame il modello MMASS (Multi Agent
Situated System) per risolvere problemi come la localizzazione di centri
commerciali in aree extra- urbane, il posizionamento di guide all’interno di musei e
l’allestimento di spazi pubblicitari all’interno delle città.
La caratteristica principale del modello MMASS è quella di fornire una chiara
definizione dell’ambiente in cui gli agenti sono localizzati e quella di consentire
comportamenti e interazioni tra agenti in dipendenza della struttura spaziale. Il
modello descrive la struttura spaziale dell’ambiente come un grafo non orientato
multilivello di siti. L’ambiente in cui gli agenti sono localizzati può riprodurre uno
spazio fisico, ma è tuttavia possibile definire uno “spazio virtuale” in cui gli agenti
possono vagare e interagire. Le interazioni hanno luogo quando due o più agenti
vengono attratti in un rapporto dinamico spaziale tramite una sequenza di azioni
5
reciproche, causando un’influenza sul comportamento futuro degli agenti. I MAS
localizzati sono generalmente composti di agenti reattivi, ossia agenti elem
entari senza memoria con una posizione definita nel tempo e nello spazio. Gli
agenti reattivi localizzati svolgono le loro azioni come conseguenza della
percezione di segnali provenienti sia da altri agenti che dall’ambiente e sono
sensibili ai rapporti spaziali che determinano limiti e capacità nelle azioni, come
pure rapporti privilegiati di cooperazione. Esistono due tipi di meccanismi
d’interazione dipendenti dalla disposizione : la reazione ( interazione sincrona che
avviene tra agenti adiacenti) e l’emissione – diffusione - percezione dei campi
(interazione asincrona tra agenti posti a distanza). Il comportamento degli agenti è
basato sul meccanismo di percezione – valutazione – azione che ha luogo quando il
segnale emesso da altri agenti viene propagato nell’ambiente e percepito da certi
altri.
Le principali caratteristiche che contraddistinguono un sistema MMASS sono:
•
gli agenti localizzati: ciascun agente è associato con un sito di uno spazio
MASS (Multi Agent Situated System) e il comportamento dell’agente è
fortemente influenzato dalla sua posizione nella struttura topologica di questo
ambiente;
•
le interazioni tra agenti all’interno del MMASS dipendenti dallo spazio: il
comportamento dell’agente è influenzato da altri agenti (ad es., dalla loro
presenza o dai segnali che emettono) ed entrambi i tipi di interazione sono
fortemente dipendenti dalla struttura spaziale dell’ambiente in cui si trovano gli
agenti. La presenza dell’agente è percepita solo da quelli vicini, mentre i
segnali si propagano secondo la struttura topologica dell’ambiente;
•
il comportamento dell’agente: sia lo stato che la sua posizione possono variare
attraverso l’agente stesso secondo il meccanismo di percezione – valutazione –
azione. Perciò ogni agente reagente che costituisce l’MMASS dopo la
percezione dei segnali emessi da altri agenti, seleziona l’azione locale da
intraprendere (a seconda del suo stato, posizione e tipo) e la esegue;
•
l’eterogeneità: gli agenti sono inoltre caratterizzati dal tipo, che determina la
loro sensibilità percettiva e le loro capacità. Quindi, un MASS è un sistema
eterogeneo di agenti, dove agenti con caratteristiche e capacità diverse
coesistono ed interagiscono. Inoltre, l’ambiente può essere caratterizzato da
una struttura topologica multilivello che è composta da spazi topologici
multipli, eterogenei e interconnessi.
Una descrizione formale del modello MMASS è fornita nell’articolo [3].
6
2.1. Contesti d’uso
L’informatica è una disciplina che si occupa prevalentemente nella risoluzione di
problemi con l’ausilio di computer. Sfortunatamente, compiti che sembrano molto
semplici e intuitivi agli uomini, sono molto spesso più complessi di quello che
sembrano a prima vista, in particolare, quando devono comunicare o essere
eseguiti da una macchina. Per poter superare questa complessità viene creato un
modello. Un modello è una semplificazione del problema originale e il cui compito
è quello di rendere comprensibile qualcosa di difficile, non solo per le macchine
ma anche per uomini.
L’obbiettivo di una simulazione è di riprodurre il comportamento di un sistema
reale. In questo contesto, le simulazioni sono perciò un modello di questi sistemi.
§ La sperimentazione: le simulazioni consentono all’utente di controllare
degli ambienti per fare sperimentazioni. Quanto più è possibile
parametrizzare una simulazione o cambiare il comportamento delle entità
simulate e tanto maggiore sono le possibilità di osservare i cambiamenti nel
sistema.
§ Le scoperte: tramite la sperimentazione di una simulazione è possibile
scoprire come alcuni parametri o soluzioni strategiche possano influenzare
l’ambiente in cui la simulazione viene eseguita. Queste nuove conoscenze
possono essere poi utilizzate per comprendere meglio il mondo reale.
§ La predizione: dopo aver modellato adeguatamente un certo problema con
una simulazione, è possibile utilizzare la ricostruzione per predire i risultati
che si otterranno in diverse condizioni.
§ La formazione: le simulazioni possono essere utilizzate come guide e
supporto alle persone. Uno dei primi usi di questo tipo di utilizzo sono stati
i simulatori di volo per gli aspiranti piloti.
§ Il divertimento: molte simulazioni sono utilizzate nei videogiochi. Alcuni di
essi, tra i più famosi, sono Microsoft Flight Simulator, The Sims, SimCity,
Civilization che sono oltretutto basati su elementi sociali, politici e
culturali.
In generale si possono distinguere due tipi differenti di simulazione: quelle
coinvolte in spazi discreti e in spazi continui. La maggior parte delle simulazioni
avviene in spazi discreti proprio per la semplificazione dei compiti che ne
consegue.
Una prima simulazione trattata in [2] è inerente alla migliore localizzazione di
centri commerciali in aree extra-urbane.
Si tratta di un problema ampiamente
studiato da economisti e urbanisti, in cui
è necessario prendere in considerazione
aspetti come la presenza di strade, la
distribuzione della densità abitativa e la
distanza con altri elementi in
competizione. Questo sistema è stato
sviluppato per identificare nuove aree
potenzialmente
strategiche
alla
creazione di nuove strutture, ma anche
nella possibilità di successo in un’area
Figura 1 : localizzazione di centri
già servita da altri esercizi commerciali.
commerciali in aree extra-urbane.
Per risolvere tali problematiche sono
7
state prese in considerazione sia aspetti geografici che competitivi.
Il contesto potrebbe essere traslato da un’area extra- urbana a quella urbana sempre
nella verifica di spazi adatti ad occupare attività commerciali o strutture pubbliche
come musei, stazioni, cinema, ecc… In questa situazione macroscopica, rispetto
all’applicazione descritta precedentemente, vene a far parte un elemento
fondamentale che precedentemente
poteva essere considerato irrilevante:
l’individuo, l’unita di cui si compone la popolazione assume in questo caso
un’importanza rilevante. Tramite questo elemento è possibile creare una folla, una
società e una popolazione. Per questo motivo, si rende necessaria l’analisi e
l’implementazione di una simulazione in cui ogni aspetto caratterizzante
l’individuo assume un valore fondamentale in una realizzazione quanto più
realistica. Altro aspetto fondamentale è l’ambientazione tridimensionale: il volume
occupato dagli elementi che costituiscono lo spazio rappresenta un’informazione
importante, in quanto le nostre azioni sono composte dalle nozioni che ci giungono
attraverso i nostri sensi e quindi dall’ambiente che ci circonda.
Innanzi tutto per descrivere una persona, oltre l’aspetto fisico, si fa riferimento ai
suoi comportamenti, gesti, azioni, stato sociale e stato culturale. Per creare un
modello adeguato di una persona è necessario dotarlo di sensi (sensori), capacità
motorie, caratteristiche cognitive e capacità relazionali. Con questi elementi a
disposizione è possibile creare simulazioni di diverse tipologie e con differenti
scopi.
Un esempio è dato dall’implementazione di un sensore visivo che consentirebbe di
analizzare le informazioni percepite
dall’agente. In questo modo si
otterrebbero, ad esempio, chiare
indicazioni sul miglior posizionamento
di indicazioni stradali, uscite di
emergenza e cartelli pubblicitari.
Allo
scopo
di
realizzare
una
simulazione realistica in grado di
coinvolgere decine di persone in una
situazione d’emergenza, è, infatti,
indispensabile tener conto dello spazio
coinvolto e di tutti i nostri sensi che
utilizziamo in quelle situazioni: olfatto,
Figura 2: esempio di agenti con coni visivi.
tatto, vista e udito. Attualmente una
simulazione così realistica non è stata implementata, ma esistono i presupposti per
poterla creare. Nella realizzazione di nuove strutture architettoniche si tengono in
considerazione solo gli aspetti di sicurezza imposti dalle leggi. Queste ultime sono
state create e modificate negli anni in base all’esperienza e alle conoscenze che ci
si tramanda. Spesso però queste imposizioni risultano fallimentari perché non vi è
modo di verificarne l’efficacia in situazioni diverse. Il più efficace strumento di
analisi attraverso cui è possibile ricostruire un incidente, solo dopo che è accaduto,
sono le immagini video. Non sono infatti riproducibili, in modo sicuro ed
economico, situazioni di panico con fuoco e fumo in cui decine di persone reali si
comportano coerentemente alle loro sensazioni e al loro stato emotivo.
L’intento è quello di realizzare uno strumento professionale in grado di predire
incidenti di massa in modo economico e privo di rischi, con la possibilità di
ricreare ambienti fedeli alla realtà e simulare le condizioni in modo
parametrizzabile.
8
2.2. Stato dell’arte
Le tecnologie attuali consentono di ottenere delle riproduzioni virtuali fedeli alla
realtà di ambienti anche molto estesi. Tuttavia, tali risorse possono risultare
alienanti perché prive di ogni elemento dinamico o addirittura poco utilizzate
perché esenti da applicazioni
professionali.
Insieme
alle
applicazioni esistenti, è possibile
ottenere simulazioni maggiormente
realistiche
e
utili
nella
progettazione di nuove strutture
architettoniche o negli interventi di
quelle già esistenti ed a uso
pubblico (scuole, stazioni, musei,
stadi…). Questo tipo di risorsa è
fondamentale nella riuscita di una
simulazione il cui obbiettivo è
quello di verificare una corretta
Figura 3: immagine virtuale del quartiere
progettazione. D’altra parte, la
Ramat Gan a Tel Aviv.
qualità riscontrabile nella Figura 3
è superiore ai requisiti necessari per poter utilizzare un applicativo come quello
realizzato. Gli architetti e gli ingegneri utilizzano già alcuni strumenti informatici
per il loro lavoro (il più famoso dei quali è sicuramente Autocad che appartiene
alla stessa società di 3DS Max). Questi progetti, dopo aver apportato alcune
semplici modifiche di sviluppo in altezza, sono facilmente importabili in 3DS.
Nell'anno accademico 2001-2002 lo studente Michele Caletti si laurea con una tesi
dal titolo: "Definizione ed implementazione di un modello computazionale basato
su agenti per la simulazione di comportamenti ed interazioni in città virtuali."
Nel documento si descrive un
modello di folle virtuali in cui i
singoli
agenti
hanno
un
comportamento plausibile ed un
determinato grado d’interazione
con l'utente e tra loro stessi. E' stato
inoltre progettato e sviluppato un
prototipo
d’applicazione
che
implementa il modello attraverso il
linguaggio di programmazione
C++.
L’interfaccia
di
programmazione grafica utilizzata
è DirectX 9 ed è stato sfruttato il
paradigma ad agenti per la
Figura 4: ambiente tridimensionale con folla
creata tramite un modello ad agenti
modellazione di avatar e di altri
elementi rilevanti presenti nel
sistema. Questo sistema è stato analizzato profondamente nella sua complessità. Il
progetto è composto di numerosi moduli: un motore grafico, un sistema di gestione
delle collisioni, un parser per l’importazione dal formato di 3DS, gli oggetti della
scena, la sensoristica degli agenti. Diversi tipi di simulazione sono possibili:
un’aggregazione di persone per verificare il comportamento emergente di folle, una
9
visita guidata in un museo, un insieme di interazioni tra un numero arbitrario di
agenti. Nel complesso è risultata una piattaforma molto potente e con vasti campi
applicativi: divertimento, professionale e web. Nonostante queste stupefacenti
qualità, globalmente è sembrata un’applicazione poco stabile e dipendente
dall’hardware nonostante l’utilizzo di librerie grafiche DirectX che si propongono
essere molto flessibili. Inoltre, benché sia stato affrontato l’argomento con studi
precedenti, il codice, un insieme di istruzioni C++ e DirectX, è stato ostico da
interpretare e da poter apporvi modifiche.
Proprio prendendo spunto da questo progetto si è pensato di realizzare lo strumento
descritto in questa relazio ne. Gli argomenti trattati precedentemente hanno però
convogliato le mie scelte di strumenti di sviluppo verso l’utilizzo diretto di 3DS
Max. In questo modo, infatti, si ha indipendenza sia da librerie DirectX che
OpenGL, la stabilità è garantita dalla professionalità riconosciuta nel mondo e la
flessibilità che, insieme agli standard che si sono formati sui suoi formati, questo
software si è aggiudicato negli anni è dimostrabile attraverso lavori congiunti di
molti team nella creazione di film di animazione come Bugs Life e Shrek. Oltre a
tutto ciò vi è da aggiungere che con tale strumento si ha costantemente un prodotto
aggiornato nelle proprie tecnologie e, per queste ragioni, è possibile scindere in
modo più netto gli aspetti grafici da quelli derivanti da teorie applicative, in
quanto, esistono, e saranno aggiunti anche in futuro, molti moduli predefiniti che
assistono nelle problematiche della grafica tridimensionale.
Applicazioni simili a quella precedente, sono state sviluppate da altre persone, ma
sono prevalentemente indirizzate al loro uso in internet. Questo tipo di piattaforme
si basano sul formato grafico VRML o, diversamente, su plug- in proprietari:
Blaxxun, Superscape, ecc… Tutte
queste tecnologie sono oramai
diventate obsolete perché non
offrono quella qualità grafica che
videogiochi come Quake 3 o Unreal
ci hanno abituato a considerare. Nel
documento [13] viene trattato il
problema
di
generare
automaticamente un tour in
ambienti tridimensionale presenti su
web. Nonostante sia riscontrabile
nella Figura 5 una sottostante
griglia, e quindi un possibile
approccio ad automi cellulari o
agenti, nel documento non è
riscontrabile nessuna teoria di
questo tipo. L’unica trattazione
effettuata è riguardo il problema di
path pla nning e l’architettura Figura 5: path planning in un ambiente VRML
dell’intero sistema basata su
VRML.
Un interessante articolo è apparso su Wired alcuni anni fa, in cui si cita un lavoro
presso i laboratori nazionali di Los Alamos il cui intento è di creare un sistema
reale di vita tramite il videogioco Sim City. Lo scopo è di fornire un aiuto ai
cittadini e alle autorità competenti durante l’evacuazione della città a causa di
10
inaspettate emergenze come terremoti, attacchi chimici o biologici, incidenti
industriali o uragani. La prima città interessata nel progetto sarà Los Angeles ma
attualmente,
nonostante
numerose
ricerche effettuate, non si conoscono gli
sviluppi che questa applicazione ha avuto
negli ultimi anni: l’impressione è che
tutto si sia fermato nel 1998, data a cui
risale
l’ultimo
documento
disponibile[12].
Nella
simulazione,
vengono presi in considerazione i
trasporti, la distribuzione di energia
elettrica, il tempo climatico, le
infrastrutture, la distribuzione di acqua,
l’ecosistema,
la
geografia
e
la
Figura 6: una vista di Sim City.
demografia. Riguardo questi elementi vi è
un’ampia descrizione delle risorse a
disposizioni degli stessi laboratori. Il sistema urbano da essi realizzato è composto
da vari altri sotto-sistemi che comprendono analisi delle comunicazioni, della
distribuzione di cibo, di aree economiche e zone geologiche.
Alcuni moduli di cui è costituito l’intero sistema sono:
§ RAMS (Regional Atmospheric Modeling System);
§ HOTMAC (Higher Order Turbolence Model for Atmospheric Circulation);
§ SWMM (Storm Water Managment Model);
§ RUNOFF (per la diffusione di sostanze chimiche in aree urbane);
§ WASP (Water Qualità Analysis Simulation Program);
§ TOXI5 e EUTRO5 (per i calcoli della dissolvenza di sedimenti nel terreno);
§ DYNHYD (per la simulazione idrodinamica dell’acqua);
§ EIP (Electrical Power Infrastructure);
§ HAZUS (programma per la Federal Emergency Management
Administration);
§ CaISO (database dei terremoti).
Lungo la descrizione di questi elementi, e degli enti con cui collaborano, vi anche
una dimostrazione di come i vari componenti comunicano tra loro e di come
vengono visualizzati i corrispondenti risultati.
Il progetto più aderente a quello che è stato realizzato si trova nell’articolo [14] in
cui si descrive l’importanza di considerare la presenza di un leader nelle
simulazioni di evacuazione. Questo componente può essere identificato in un
poliziotto, una guardia, un uscere o più realisticamente come una qualunque
persona che in tali situazioni ha un potere attrattivo, verso gli altri, maggiore della
norma. Gli esperimenti sono stati condotti nel contesto di un allarme antincendio
con venti avatar eventualmente comandati attraverso internet. Una simulazione
svolta in questo modo, non consente, a mio parere, di rispecchiare quello stato
d’animo in cui si trova normalmente una persona allarmata, in quanto, l’utente a
distanza, può trovarsi comodamente adagiato sulla poltrona del suo ufficio.
11
Due tipologie sperimentali sono state svolte: la prima in cui veniva impartito di
seguire una determinata direzione, la seconda in cui e stato chiesto di seguire una
persona. Dopo alcuni raffinamenti è stato
possibile verificare l’efficacia del secondo
metodo rispetto al primo. Tali risultati sono
visibili nel diagramma riportato in Figura 7.
Per tale simulazione è stato utilizzato lo
strumento
FlatWalk
che
controlla
simultaneamente venti e più agenti ed è
basato sul linguaggio Q, molto simile al
LISP. Anche in questo caso la simulazione
viene svolta solo bidimensionalmente e
solo successivamente rappresentata in un
ambiente
tridimensionale
attraverso
FreeWalk. Quest’ultimo permette di
Figura 7: risultati dei due metodi
stabilire comunicazioni tra avatar sia in
sperimentali.
modo visivo che verbalmente.
Figura 8: simulazione con FlatWalk ( a sinistra) e con FreeWalk (a destra).
Molte altre letture sono state effettuate riguardo teorie e implementazioni di agenti
negli ambienti tridimensionali urbani [15,16,17,18,19,28,29,30], di comportamenti
artificiali [25,27], nella generazione e visualizzazione di attività pedestri
[20,21,31,32], riguardo problemi di ottimizzazione e localizzazione [22,23,24] e
altri ancora per le situazioni di emergenze [26]
La loro trattazione è molto lunga e a volte laterale rispetto le argomentazioni
trattate in questa relazione, ma hanno comunque supportato ed integrato le scelte
teoriche e implementative di questo progetto.
12
3. Una proposta basata su paradigma ad agenti
Nell’articolo di S.Bandini, S.Manzoni e G.Vizzari [1] viene descritto un approccio
MAS (Multi Agent Systems) basato sul modello SCA (Situated Cellular Agents)
[3] adatto alla modellazione di folle. Questo ultimo è un tipo speciale di MMASS
(Multilayered Multi Agent Situated System) che fornisce una rappresentazione
esplicita delle strutture spaziali e dei diversi strumenti di interazione tra agenti.
Gli agenti eterogenei possono essere ottenuti dalla definizione di vari tipi di agenti,
specificando diversi comportamenti e capacità percettive. Questo modello è
radicato su alcuni principi fondamentali di Automi Cellulari (ad es., la definizione
di geometrie adiacenti), ma prende anche in considerazione l’autonomia delle
singole entità , con la loro propria architettura interna.
Una situazione di emergenza può alterare il comportamento degli individui in
modo davvero drastico: ad esempio, in genere le persone escono dai locali dalla
porta da cui sono soliti entrare, non dalla parte più stretta o affollata.
Vari modelli di successo per dinamiche pedonali nel continuo sono basati su un
criterio analitico. Un importante esempio sono i modelli di forza sociale, in cui gli
individui sono trattati come particelle soggette a forze. Altri modelli analitici
prendono spunto dalle forze fluido dinamiche e magnetiche per la
rappresentazione dei flussi pedonali. Un criterio diverso per le creazioni di
individui fornisce la scelta di Automi Cellulari (CA), con una discreta
rappresentazione spaziale dell’ambiente e discreti indici temporali.
Le regole di transizione devono essere stabilite per indicare l’evoluzione dello
stato di ciascuna cella; esse sono basate sul concetto di vicinato di una cella, una
precisa sequenza di celle il cui stato sarà considerato nel calcolo della propria
regola di transizione.
Le interazioni locali tra celle possono rappresentare il moto di un individuo nello
spazio e l’applicazione sequenziale di questa regola nello spazio cellulare totale
può portare a comportamenti emergenti e collettivi, ad esempio formazione di una
coda e configurazioni per l’evacuazione .
Nonostante il criterio basato su Agenti Cellulari (CA) sia in generale meglio
compreso dagli esperti rispetto ai modelli analitici, entrambi questi criteri
possiedono in comune il limite di considerare gli individui come ent ità omogenee
e in genere non forniscono elementi di flessibilità e dinamismo, come i
cambiamenti di comportamento delle persone. Ciò può non essere un problema per
le simulazioni su larga scala, in cui un certo grado di approssimazione è inevitabile
e spesso contrastato dalla scelta di un criterio casuale, tuttavia in altre simulazioni
può essere rilevante valutare questo tipo di informazione.
Ad esempio, la valutazione della collocazione della segnaletica dipende da diversi
fattori legati alla loro efficacia e quindi alla loro visibilità. Quest’ultima dipende
fortemente dal comportamento degli individui che si muovono attraverso
l’ambiente, dai loro obiettivi e destinazioni, ma anche dalla loro capacità
percettiva. Questi fattori sono fondamentali nella scelta della direzione da
prendere; pertanto, includere questi concetti in un Automa Cellulare (CA)
richiederebbe un eccessivo numero di regole, uno stato cellulare molto ampio e
probabilmente l’estensione del concetto di vicinato per la simulazione delle
interazioni a distanza.
13
3.1. Modellazione
Il modello SCA (Situated Cellular Agents) fornisce una chiara rappresentazione
(anche irregolare) delle strutture spaziali e diversi strumenti di interazione agente:
reazioni sincrone tra agenti adiacenti e interazioni a distanza asincrone attraverso
un meccanismo di emissione-diffusione-percezione. Si possono ottenere agenti
eterogenei attraverso la definizione di vari tipi agenti che stabiliscono diversi
comportamenti e capacità percettive. Queste ultime forniscono un meccanismo per
filtrare le informazioni in entrata attraverso la definizione di recettività e sensibilità
dei diversi tipi di campo.
Un sistema SCA si definisce formalmente con una tripla :
Space, F , A
dove A e F sono insiemi finiti che comprendono rispettivamente gli agenti e i
campi, e Space è l’ambiente su unico livello in cui gli agenti sono situati, agiscono
in autonomia ed interagiscono.
E’ possibile definire diversi tipi di agente, introducendo la possibilità di stabilire
diverse abilità e capacità percettive. Definendo T come l’insieme dei tipi, è
appropriato suddividere l’insieme degli agenti in sottoinsiemi disgiunti in
corrispondenza ai diversi tipi. L’insieme degli agenti può perciò essere definito
come segue:
A = Uτ ∈T A
dove Aτ i ∩ Aτ j per τ i ≠ τ j . Un agente di tipo τ è definito dalla tripla:
Στ , Perceptionτ , Actionτ
Dove:
Στ
Definisce il set degli stati possibili,
[
]
[
Perceptionτ : Στ → N × W f 1 K N × W f F
] è la funzione che associa ad ogni agente
un vettore di coppie:
((c (s ),t (s )), (c (s ), t (s ))K(c
1
τ
1
τ
2
τ
2
τ
F
τ
))
(s ), tτF (s )
in cui per ogni coppia i, cτi ( s ) e tτi (s ) esprimono rispettivamente un coefficiente da
applicare al campo in input e la soglia di sensibilità al campo nello stato s. In
questo modo, gli agenti localizzati alla stessa distanza dall’agente che emette un
campo, possono avere diverse capacità di percepire tale campo. Actionτ indica
l’insieme delle azioni che l’agente di tipo τ può rappresentare.
14
Space consiste di un insieme P di siti disposti in una rete (ad es., un grafo indiretto
di siti). Ogni sito p ∈ P può contenere al massimo un agente ed è definito da
a p , Fp , Pp dove a p ∈ A ∪ {⊥ } è l’agente situato in p (a p =⊥) quando p è vuoto;
Fp ⊆ F è l’insieme dei campi attivi in p ( Fp = ø ) quando nessun campo è attivo
in p ); e Pp ⊂ P è l’insieme dei siti adiacenti a p .
Un campo f τ ∈ F che può essere emesso da agenti di tipo τ è indicato da:
W f , Diffusion f , Compare f , Compose f
Dove:
denota il set dei valori che il campo può assumere nella sua diffusione nello
spazio
Wf
{ }+
Diffusion f : P × W f × P → W f
è la funzione di distribuzione del campo su di un
certo sito e tiene conto dell’origine del campo e della sua intensità all’origine.
Il valore può non essere unico, dato che tra l’origine e il sito valutato vi possono
essere più di un cammino, e possono essere di lunghezza diversa.
( )+ → W f
esprime come i campi si compongono ( se dello stesso tipo)
per ottenere un unico campo .
Compose f : W f
Compare f : W f × W f → {True, False}
è la funzione che compara il valore di un campo
in un punto con la soglia di sensibilità per verificare se un agente percepisce il
campo.
Lo spazio di ogni SCA è popolato da un set di individui chiamati agenti . Ogni
agente a ∈ A è definito dalla tripla:
s , p,τ
Dove
s ∈ Στ
denota lo stato dell’agente e può assumere uno dei valori previsti per il tipo,
p ∈ P è il sito dello spazio dove l’agente è situato
τ è il tipo dell’agente, e specifica il set di stati che può assumere, una funzione che
esprima la sensibilità ai campi e il set di azioni che un agente può compiere.
Una posizione p ∈ P viene descritta nella maniera seguente:
p = a , F p , Pp
15
Dove Fp è il set dei campi attivi in p e Pp è il set dei siti adiacenti a p.
denota un set di azioni che l’agente a di tipo τ può compiere.
Esse possono essere:
Actionsτ
-trigger: determina come la percezione del campo crei nell’agente una transizione
di stato.
-transpor: determina lo spostamento dell’agente in base al campo percepito.
-emit: determina l’emissione del campo da parte dell’agente in maniera asincrona.
-reaction: simile alla precedente ma relativa ad un altro agente particolare e
dunque sincrona. Gli agenti interessati devono essere contigui.
L’Automa Cellulare può essere visto come un tipo di Sistema Multi Agente
(MAS), in cui la struttura spaziale dell’ambiente agente è precisa e strutturata su di
una griglia, gli agenti sono immobili, omogenei e compatti (ciascuna cella del CA
è identica e comprende la rappresentazione dell’agente) e il loro comportamento è
sincrono. Questo non è il caso generale dei modelli basati sul MAS, dato che gli
agenti eterogenei e asincroni potrebbero convivere nello stesso ambiente anche
non strutturato.
Un MAS consiste di un numero di agenti definiti a seconda del loro
comportamento e dei parametri caratteristici e sono localizzati in un ambiente che
rende possibili le loro interazioni. Il comportamento di un MAS è descritto come
l’insieme degli effetti globali delle interazioni locali tra agenti autonomi che
popolano l’ambiente.
MABS (Multi Agent Based Simulation) è basato sul concetto che è possibile
rappresentare il comportamento globale di un sistema dinamico come il risultato
delle interazioni che accadono tra un insieme di agenti con la loro propria
autonomia operativa.
Il MAS è stato utilizzato per simulare mondi artificiali come pure fenomeni
naturali e sociali. Nel MABS gli agenti potrebbero rappresentare animali in
ecosistemi, veicoli nel traffico, persone nelle folle o personaggi indipendenti in
animazioni e giochi. Nelle applicazioni MABS il sistema di simulazione è basato
sugli agenti autonomi e distribuiti.
Nonostante il fatto che un’ampia categoria di problemi sia contraddis tinta da
proprietà spaziali prestabilite che richiedono il relativo criterio di modellazione
dello spazio, difficilmente nei modelli MAS viene presa in considerazione la
struttura spaziale dell’ambiente in cui gli agenti sono localizzati.
Diversamente i modelli CA offrono un interessante framework per creare e
simulare i fenomeni naturali ed artificiali che riguardano lo spazio, a causa della
loro definizione e struttura di base e del ruolo preponderante che occupa lo spazio.
Il sistema CA è stato impiegato nell’analisi di vari fenomeni urbani (es.,
simulazione di traffico, urbanizzazione regionale, dinamiche di uso terrestre) che
trattano precisamente della relazione spaziale e dell’interazione tra le locazioni.
Sono stati ottenuti risultati interessanti attraverso la combinazione di MAS e di
CA. Il criterio consiste nel posizionamento di un MAS in uno spazio cellulare ed è
stato soprattutto applicato per analizzare le dinamiche del sistema urbano e
l’attività pedonale.
Nel dominio applicativo scelto, gli individui possono essere creati in qualità di
agenti e la struttura spaziale in cui si trovano può venire rappresentata come un
16
grafo di siti. Uno degli elementi fondamentali che caratterizza questo modello è la
possibilità di definire gli obiettivi e i comportamenti delle entità create. Un
possibile metodo per determinare la tendenza di un agente a muoversi attraverso
aree specifiche è la definizione di campi attrattivi e di azioni precise per stabilire
una reazione adatta alla loro percezione. Un semplice campo d’attrazione f assume
valori in R+, le sue funzioni Compose e Compare sono rispettivamente la somma e
la quantità minore della relazione e ∀p ∈ P si ha:
(
)
Diffusion f p 0, f p0 , p = {
f p0 − dist ( p0 , p ) _ se _ dist ( p 0 , p ) < f p0
0 _ diversamente
dove p 0 e f p0 sono rispettivamente il sito in cui il campo è stato emesso e il valore
alla sua emissione.
Una possibile funzione di percezione per gli agenti sensibili a questo tipo di
campo, mappa ogni stato s in c, t , dove c può essere parte dello stato agente (e
quindi un possibile valore dinamico) indicando la sua recettività a questo tipo di
campo, mentre t è una soglia per filtrare campi a bassa intensità. Dato un agente
situato nel sito p, l’insieme di siti vuoti adiacenti dove un campo d’attrazione f è
attivo viene descritto da:
{
Ppf = p ′ ∈ Pp a p′ =⊥ ∧ f ∈ Fp′
}
In questo framework, l’indicazione specifica del comportamento per gli agenti che
dovrebbero ricercare il sito dove il valore di campo è (localmente) massimo,
dovrebbe comprendere un’azione di transport in cui il termine di condizione
aggiuntiva è indicato come :
condition (q ) = q ∈ Ppf ∧ ∀r ∈ Ppf , f r < f q
dove f x indica il valore del campo f in un sito x .
Gli agenti potrebbero essere definiti come sorgenti di specifici campi d’attrazione
e sensibili solo ai segnali emessi da quello precedente.
In questo caso, la condizione aggiuntiva dell’azione di trasporto potrebbe
comprendere:
condition (q ) = q ∈ Ppf ∧ f l < f q < f h
dove f l e f q sono soglie costanti che indicano il minimo e il massimo di intensità
di campo auspicabile per quel tipo di agente.
Una conseguenza negativa per questa soluzione di modellazione è legata
all’elevato numero di tipi di campo che devono essere definiti (almeno uno per
ogni agente). Un’altra possibile scelta di modellazione prevede l’inserimento
dell’identificatore dell’entità emittente (sorgente di campo) nel valore del campo
d’attrazione. Più precisamente, un più flessibile campo d’attrazione potrebbe
essere definito come segue:
17
Fh =< Wh , Diffusion h , Compareh , Composeh >
con Wh = N × R + . Per ogni wh ∈ W h , wh =< f Id , f In > , dove il primo componente
del valore del campo indica l’identificatore della sorgente di campo, mentre
l’ultimo rappresenta la sua intensità.
Lo stato dell’agente potrebbe essere definito come una coppia s, Sens in cui il
primo componente contiene delle altre informazioni interne dell’agente, mentre il
secondo è l’insieme delle entità identificatrici i cui campi d’emissione saranno
percepiti e valutati. In questo framework, un valore di campo f fId , f In è
percepito da un agente
snSens , p,τ solo quando il valore di intensità di campo
è maggiore della soglia di sensibilità dell’agente e il campo identificatore è
contenuto nell’insieme Sens dell’agente.
Poiché lo stato dell’agente è dinamico, l’eventualità di includervi l’identificatore
della sorgente di campo offre la possibilità di forzare gli agenti a seguire un
percorso specifico. A questo scopo, la ricerca del massimo locale di alcuni valori
di campo potrebbe essere adeguatamente combinata; le sorgenti di campo statico
possono essere introdotti in qualità di way-points e gli agenti possono venire
forniti con due tipi di azioni: una per seguire il gradiente di campo e l’altra per
spostarsi verso il successivo way-point.
18
4. Descrizione dell’architettura del sistema
4.1. Studio di fattibilità
Tre diversi approcci sono stati considerati come possibili soluzioni alla
realizzazione di simulazioni con visualizzazione 3D realistica:
Ø Lo sviluppo completo dell’intero sistema, comprendente una parte dedicata
alla simulazione vera e propria ed un’altra relativa all’interfaccia utente.
Ø Lo sviluppo di un sistema di visualizzazione 3D, di un’applicazione di
simulazione e l’integrazione dei due moduli.
Ø L’interfacciamento di un sistema di simulazione ad un’applicativo esistente per
la visualizzazione dei risultati della simulazione.
Per ognuna di queste possibilità sono stati valutati i seguenti aspetti:
Ø
Ø
Ø
Ø
Ø
Strumenti di sviluppo
Prerequisiti didattici.
Complessità d’implementazione.
Qualità dei risultati.
Supporto e possibilità d’importazione/esportazione di altri formati.
Per lo sviluppo integrale dell’intero sistema si sono considerati i seguenti
linguaggi di programmazione grafica: DirectX e OpenGL. Pur essendo la seconda
maggiormente performante, entrambe le soluzioni offrono un’elevata integrazione
con i più comuni linguaggi di programmazione ma rendono necessaria
l’implementazione di un motore grafico 3D. Solo questo elemento richiede una
completa conoscenza del linguaggio; a ciò vi è da aggiungere la complessità nel
creare sensori e comportamenti, di gestire le collisioni e implementare le regole
fisiche che governano la scena. Esiste la possibilità di sfruttare motori grafici
esistenti ed a uso pubblico (un esempio è quello di Quake), ma anche in questo
caso si richiede un’elevata conoscenza tecnica dell’intero sistema, a volte molto
poco documentata. Il vantaggio fondamentale dei linguaggi di programmazione
grafica è quello di ottenere una visualizzazione real-time, ma, d’altra parte, un
progetto anche lievemente spurio causa scarsa portabilità e instabilità. Nel
complesso sono molto elevati i requisiti ed è difficile realizzare un progetto
completo in breve tempo.
La seconda e la terza possibilità hanno vagliato l’ipotesi di utilizzare le seguenti
piattaforme grafiche: Poser, 3DS Max, Maya, VegaPrime. La prima opzione è
stata scartata rapidamente per le difficoltà riscontrate sin dall’inizio nell’uso dello
stesso strumento: interfaccia poco usabile e difficoltà di ottenere documentazione
ufficiale, in quanto la piattaforma è open source e molti hanno modificato le sue
funzionalità senza fornire adeguati riferimenti. VegaPrime è un ibrido tra un
sistema a tempo-reale e una piattaforma di sviluppo grafico: l’integrazione verso
l’esterno avviene tramite un linguaggio proprietario, supportato da alcuni
strumenti di sviluppo visuali. Nel complesso però è sembrato piuttosto artificioso
19
nella creazione di nuove funzionalità come sensori e comportamenti. Anche i
risultati grafici che si possono ottenere non sono sicuramente comparabili a
prodotti come Maya e 3DS Max. Proprio questi ultimi hanno riscontrato la
maggiore attenzione: forniscono l’interfacciamento attraverso linguaggi
proprietari, ma anche standard, consentendo in questo modo una maggiore
flessibilità di sviluppo degli aspetti legati agli agenti, ai sensori e ai
comportamenti, consentono un realismo molto avanzato, dispongono di una vasta
documentazione e assicurano affidabilità.
La differenza tra i due gruppi distinti precedentemente riguarda il rapporto che si
stabilisce tra le capacità di visualizzare una scena in real-time e la complessità di
calcolo necessaria per effettuare una simulazione a scopi professionali. Più
precisamente, è improbabile riuscire ad implementare un sistema in tempo reale in
cui sia possibile calcolare tutti gli aspetti necessari ad una simulazione con
requisiti sofisticati. Tale onere computazionale è, infatti, sostenibile solo con
piattaforme grafiche in cui è possibile eseguire i calcoli e visualizzarne i risultati in
tempi differenti. Oltre a ciò è possibile configurare in modo più rapido la qualità
visiva desiderata, fornendo, in questo modo, una maggiore scalabilità del rapporto
qualità / rapidità di risoluzione.
A seguito delle valutazioni precedentemente descritte si è scelto di utilizzare 3DS
Max che, attraverso plug- in come Character Studio e Pysique, fornisce le seguenti
caratteristiche:
Ø
Ø
Ø
Ø
Ø
Ø
Ø
Ø
Ø
Ø
Ø
Ø
Ø
Indipendenza tra librerie grafiche DirectX e OpenGL.
Linguaggi di sviluppo orientati agli oggetti: C++ e MaxScript.
Visualizzazioni off- line.
Creazione di ambientazioni realistiche e di forme umane rapidi ed efficaci.
Possibilità di implementare nuovi sensori o parametrizzare quelli predefiniti.
Gestione della dinamica fisica automatica e modificabile.
Gestione delle collisioni configurabile.
Possibilità di implementare nuovi comportamenti e parametrizzare quelli
predefiniti.
Possibilità di integrazione col paradigma ad agenti.
Rendering avanzato della scena e delle dinamiche in essa contenute.
Stabilità ed estendibilità del prodotto.
Supporto didattico vasto e completo.
Formati grafici standard con possibilità di esportare/importare nei più diffusi
formati.
Con questi strumenti a disposizione è stato creato uno script che con un migliaio di
linee di codice è in grado di:
Ø Importare attraverso un parser i dati riguardanti lo spazio e le dinamiche di una
applicazione esterna.
Ø Creare una semplice rappresentazione 3D della scena in modo completamente
automatizzato.
Ø Creare una rappresentazione dei nodi importati e dei percorsi effettuati dagli
agenti.
Ø Creare gli agenti in qualità di avatar con movimenti altamente realistici.
20
Ø Gestire le collisioni in modo avanzato e automatico.
Ø Utilizzare un motore grafico performante che supporta sia DirectX che
OpenGL.
Ø Utilizzare comportamenti parametrizzabili che consentono di definire diversi
tipi di simulazioni.
Ø Risolvere la simulazione vedendo immediatamente i risultati ottenuti.
21
4.2. Progettazione
Il sistema completo è composto fondamentalmente da tre elementi principali:
l’applicazione bidimensionale, il supporto per la condivisione dei dati,
l’applicazione tridimensionale.
Applicazione 2D
File ASCII
Applicazione 3D
Figura 9: schema ad alto livello dell’intero sistema.
Applicazione bidimensionale: si tratta di una libreria che permette di simulare un
considerevole numero di agenti anche durante particolari situazioni di emergenza.
La libreria creata utilizza una piattaforma, implementata precedentemente, per le
simulazioni basate su modello MMASS (Multilayered Multi Agent Situated
System). La libreria è costituita da un insieme di moduli(le locazioni e il grafo, lo
spazio, la diffusione, gli agenti, i campi e il MasManager che rappresenta il gestore
del sistema multiagente) costruiti concettualmente uno sopra all’altro e alla cui
sommità vengono posizionate le simulazioni. Oltre ai moduli fondamentali, atti a
implementare il MMASS, sono inclusi nella libreria alcuni servizi utili, quali
l’editor per lo spazio (consente di costruire delle strutture spaziali generiche tramite
un’interfaccia grafica) e il viewer (utile per visualizzare lo spazio, gli agenti e i
campi durante la simulazione).
Supporto per la condivisione dei dati: si tratta di un file ASCII contenente i dati
riguardanti ogni agente presente nell’applicazione bidimensionale. Per ognuno di
essi è presente la descrizione analitica della sua configurazione iniziale e di ogni
evoluzione nello spazio e nel tempo. Queste informazioni sono lette
dall’applicazione tridimensionale realizzata attraverso un parsing del file in
ingresso. Una descrizione esauriente viene fatta successivamente nel paragrafo 4.4
di questo stesso capitolo.
Applicazione tridimensionale: sviluppata attraverso il linguaggio di scripting
disponibile in 3DS Max è composta da vari moduli di origine prevalentemente
grafica. I dati provenienti dal supporto per la condivisione dei dati vengono tradotti
e memorizzati in una struttura dati per essere maggiormente accessibili. Attraverso
varie funzioni e passaggi, di seguito descritti in dettaglio, viene creata una scena
composta da agenti nell’aspetto di umanoidi (Biped) e da un rappresentante per
ognuno di loro sotto forma di piramide (Delegate), da percorsi creati tramite linee
spline formate dai nodi importati, da un oggetto crowd che raggruppa gli agenti, da
un piano aggiuntivo per una migliore rappresentazione dell’ambiente in cui si
svolge la simulazione e un’ambientazione delle strutture architettoniche generate
automaticamente.
Node: è una forma circolare che rappresenta il nodo importato tramite la fase di
parsing.
Node
Spline
Input Data
Parsing
Plane
Delegate
Crowd
Figura 10: schema della fase iniziale di creazione della scena.
Spline: è una curva definita tramite due o più nodi. Il livello di segmentazione e
quindi anche di curvatura è definito tramite il suo coefficiente di interpolazione.
Plane: è una superficie piana che indica lo spazio cartesiano su cui si svolge la
simulazione.
Delegate: è uno strumento ausiliario a forma piramidale usato nelle animazioni di
folle. La punta della piramide indica la direzione del movimento. Può essere
associato ad un biped o a qualsiasi altro elemento che si voglia animare.
Tramite l’accesso ai suoi attributi è possibile impostare la velocità, l’accelerazione
e la decelerazione massima, gli angoli massimi di rotazione, visualizzare le forze
agenti su di esso come vettori ed altri parametri.
Team: è una struttura astratta che consente di raggruppare infiniti Delegate.
Crowd: è uno strumento ausiliario che controlla uno o più Delegate. Tramite
questo oggetto è possibile creare infiniti team ed associarli ai Behavior creati.
Biped: è una figura umanoide che rappresenta, nel nostro caso, un agente. Si tratta
di una collezione di forme geometriche con particolari vincoli secondo una
gerarchia predefinita. Hanno caratteristiche avanzate per quello che riguarda i
movimenti complessivi del corpo ma anche del singolo elemento. Attraverso lo
strumento Physique che realizza le forze agenti nel mondo reale, come la forza di
gravità, si ottengono simulazioni molto realistiche. Come per ogni altro oggetto
inoltre, è possibile una personalizzazione visiva del personaggio attraverso texture
e skin, ma poiché tali caratteristiche implicano un costo computazionale elevato,
non saranno utilizzate in questa dimostrazione.
Trasformation Controller: viene anche detto “body controller” perché consente
di modificare la posizione e la rotazione dell’intero biped o, a scelta, solo uno dei
componenti appartenenti alla sua gerarchia operando sulle matrici di rototraslazione di ogni vertice. Viene applicato al bacino che rappresenta la radice
della gerarchia di tutte le parti del corpo.
23
Delegate
1
1
Biped
1
Team
1
N
N
N
Trasformation
Controller
Behavior
N
Crowd
1
1
Motion Flow
1
Cognitive
Controller
1
N
Clip
Figura 11: schema delle associazioni tra i componenti costituenti un delegate
MotionFlow: è un grafo composto da una o più Clip in relazione tra loro tramite
una serie di transizioni. Tale schema permette di specificare quale Clip possa essere
utilizzata durante la simulazione, con quale probabilità e in quale momento.
Viene reso possibile decidere quali direzioni e gesti possano essere svolti
dall’agente a partire dallo stato precedente in cui si trovava.
Clip: singolo elemento costituente un grafo MotionFlow. Ad ogni Clip viene
associato un file esterno che contiene i dati relativi ad una particolare sequenza di
movimento.
Behavior: è il comportamento assegnato al team. Esistono una decina di
comportamenti prestabiliti e parametrizzabili ma vi è la possibilità di definirne di
nuovi tramite script. Ad ogni delegate è possibile associare infiniti comportamenti
con diverse priorità tra loro.
Cognitive Controller: è un grafo costituito da stati e transizioni. Ogni stato
contiene uno script che consente di costruire istruzioni condizionali per le
simulazioni dinamiche dipendenti dalla situazione. Ogni oggetto Crowd può avere
un unico controllo cognitivo. Se un Biped ha finito di seguire il proprio percorso è
possibile decidere, ad esempio, se farlo fermare o farlo sedere.
24
4.2.1.
Procedura
L’applicazione che esegue la simulazione nel piano bidimensionale, crea
inizialmente un file di testo contenente la configurazione iniziale: per ogni agente
coinvolto, identificato tramite una numerazione univoca, viene descritta la
posizione del nodo in cui si trova in termini di coordinate cartesiane. Essendo la
situazione ancora statica, ognuno di essi avrà un indice temporale uguale a uno;
tale informazione, viene aggiunta alle precedenti. Ad ogni iterazione, comandata
secondo le regole locali dell’applicazione, fino al termine dell’evoluzione, viene
aggiunto al file un nuovo record contenente le informazioni precedentemente
descritte, aggiornate e con l’indice temporale incrementato ad ogni ciclo.
Ogni record contiene un ulteriore campo: un coefficiente moltiplicativo. Questo
ultimo permette di rappresentare nell’ambiente tridimensionale una distanza
elevata tra due nodi senza varia rne la rappresentazione nell’applicazione originaria.
Una volta completata la scrittura del file è possibile ricreare all’interno di 3DS Max
un’ambientazione molto più realistica ed importare i dati molto semplicemente.
Una funzione infatti ne legge il contenuto separando i singoli record e campi. La
memorizzazione viene effettuata in un array bidimensionale che ha come indici il
valore identificativo dell’agente e quello temporale. Ogni cella contiene le
coordinate cartesiane rivalutate secondo il relativo coefficiente moltiplicativo.
A questo punto è possibile creare la scena visualizzando il piano di lavoro calcolato
trovando le coordinate di valore maggiore per ogni direzione, i cerchi che
rappresentano ogni nodo importato, le spline che costituiscono i percorsi di ogni
agente lungo l’asse temporale, i delegate con i rispettivi Biped e l’oggetto Crowd.
Durante tale fase, percepibile dall’utente solo attraverso una barra di progressione,
viene creato un unico strumento ausiliario Crowd, vengono realizzati tanti Delegate
quanti memorizzati nell’array e associati ad un unico oggetto Biped. Per ogni
Delegate si crea/associa un nuovo Trasformation Controller che consente la
creazione di un grafo MotionFlow, a sua volta costituito da un set predefinito di
Clip che caricano i corrispondenti file esterni. Ogni Delegate viene assegnato ad un
unico Team a cui vengono attribuiti i Behavior necessari. In questa applicazione
verranno utilizzati solo i seguenti comportamenti:
§ Segui percorso formato dalla rispettiva spline.
§ Evita collisioni con gli altri agenti e gli oggetti della scena.
§ Trova obbiettivo.
Successivamente il Team costituito viene a far parte di Crowd a cui è possibile
legare un Cognitive Controller. Tale elemento, congiuntamente al MotionFlow,
rende possibile la scelta delle azioni da intraprendere da parte dell’agente durante
la simulazione. A questo punto è sufficiente premere un tasto per ottenere una
prima risoluzione della simulazione.
Ogni elemento descritto è altamente parametrizzabile ed estendibile; ciò consente
di ottenere, a partire da un unico set di informazioni iniziali, diverse tipologie di
simulazioni. Se ad esempio si aggiungono Clip per i movimenti durante la corsa e
si realizzano adeguatamente i corrispondenti MotionFlow e Cognitive Controller è
possibile simulare situazioni di emergenza. Aggiungendo e creando nuovi Behavior
si otterranno risultati rispecchianti in modo più fedele la realtà. Anche controllando
i valori dei parametri a disposizione e che realizzano dei sensori è possibile
ottenere risultati molto differenti tra loro.
25
4.2.2.
Scenari possibili
Poiché l’intero sistema è composto da vari elementi e funzionalità che possono
essere prese in considerazione, sono stati definiti tre fondamentali scenari possibili
per la computazione. Tale distinzione non è categorica e può essere modificata
inserendo nuovi aspetti non ancora definiti.
ESATTA
Configurazione iniziale
2D Rappresentazione
bidimensionale
dello
stato
complessivo iniziale.
Gestione percorso
2D Viene calcolato attraverso la emissione-diffusionepercezione di campi e crea un file con la descrizione
analitica di ogni passo del percorso.
Gestione
collisioni 2D Attraverso l’emissione di campi repulsori o di un layer
statiche
aggiuntivo indicante i siti percorribili.
Gestione
collisioni 2D Attraverso la presenza di un unico agente in ogni sito.
dinamiche
Comportamento
2D Traverso le specifiche di intra-actions e inter-actions
agents.
Configurazione finale
2D Rappresentazione
bidimensionale
dello
stato
complessivo finale.
Tabella 1: rappresentazione “Esatta” delle funzionalità nel 2D e nel 3D.
In questo tipo di scenario, ogni aspetto viene calcolato bidimensionalmente e l’applicazione
3D ha la funzione di creare solamente una rappresentazione grafica tridimensionale dei
risultati ottenuti.
APPROSSIMATA
Configurazione iniziale
2D
Gestione percorso
2D
3D
Gestione
collisioni 2D
statiche
Gestione
collisioni 3D
dinamiche
Comportamento
2D
3D
Configurazione finale
3D
Rappresentazione
bidimensionale
dello
stato
complessivo iniziale.
Viene calcolato attraverso la emissione-diffusionepercezione di campi e crea un file con la descrizione
analitica di ogni target del percorso gestito poi da script
e motion flow.
Attraverso l’emissione di campi repulsori o di un layer
aggiuntivo indicante i siti percorribili.
Viene calcolato attraverso tool integrati preesistenti ma
parametrizzabili.
Attraverso intra-actions e inter-actions agents viene
creato un file con la descrizione analitica della
sequenza e viene gestito poi da script, motion flow e
controller cognitivi.
Rappresentazione tridimensionale dello stato finale.
Tabella 2: rappresentazione “Approssimata” delle funzionalità nel 2D e nel 3D.
Questo tipo di separazione delle funzionalità svolte nell’ambiente 2D e in quello 3D,
consente una spartizione dei costi computazionali, permette di ottenere una
rappresentazione grafica tridimensionale adeguata mantenendo la parte più rigorosa del
dinamismo presente nell’applicazione bidimensio nale.
26
SEPARATA
Configurazione iniziale
3D
Gestione percorso
3D
Gestione
collisioni 3D
statiche
Gestione
collisioni 3D
dinamiche
Comportamento
3D
Configurazione finale
3D
Viene proposta una configurazione specifica o una
random.
Viene calcolato attraverso script, motion flow e
controller cognitivi.
Viene calcolato attraverso tool integrati preesistenti
ma altamente parametrizzabili.
Viene calcolato attraverso tool integrati preesistenti
ma altamente parametrizzabili.
Viene calcolato attraverso behaviour script e
controller cognitivi.
Rappresentazione
tridimensionale
dello
stato
complessivo finale con annessi risultati analitici.
Tabella 3: rappresentazione “Separata” delle funzionalità nel 2D e nel 3D.
Quest’ultima soluzione proposta rappresenta la delega di ogni aspetto e funzionalità
all’ambiente di sviluppo tridimensionale. Ciò comporta sicuramente notevoli
difficoltà implementative e può essere considerato come obbiettivo finale per la
creazione di una piattaforma a scopo commerciale.
Nella realizzazione di questo progetto, è stato possibile ricreare le condizioni per
ottenere un tipo di scenario “esatto”, ma anche “approssimato”. Tale distinzione
può essere effettuata attraverso il tool creato, semplicemente scegliendo l’opzione
di utilizzo esclusivo dei Delegate o diversamente in modo congiunto con
l’integrazione tra Delegate e Biped. Solo applicando un avatar ad ogni
rappresentante, infatti, è possibile aggiungere la gestione delle collisioni statiche e
di quelle dinamiche. In questo modo si hanno ripercussioni anche sui percorsi
effettivamente compiuti e nei comportamenti intrapresi dagli agenti.
27
4.3. Teorie e strumenti utilizzati
4.3.1.
Paradigma ad agenti
Nonostante le potenti funzionalità disponibili in 3DS Max per la realizzazione di
rappresentazioni realisticamente adeguate per quanto riguarda la fisica del mondo
che ci circonda e di cui ne siamo parte, ci sono aspetti così complessi che ci
coinvolgono che restano difficilmente proiettabili in un ambiente grafico.
Le informazioni che percepiamo con i nostri sensi, quelle insite negli oggetti, nelle
persone e nell’ambiente sono sfumature essenziali del nostro essere così come la
nostra memoria e la nostra capacità di apprendere.
Per poter ottenere risultati apprezzabili in una simulazione è tassativo prendere in
considerazione tali aspetti.
Una possibile discretizzazione del nostro mondo è stata realizzata attraverso i
modelli basati su paradigma ad agenti.
Esiste una vasta letteratura riguardo agli agenti, la loro definizione, la loro
implementazione, e le possibilità d’impiego. Ovviamente non vi è accordo assoluto
su quali siano i diversi requisiti perché una certa entità software possa essere
definita “agente”: esistono definizioni più rigide che prevedono totale autonomia di
movimento, percezione, decisione e azione sul mondo, mentre altre definizioni più
transigenti definiscono come agenti anche entità che godono solo di alcune di
queste proprietà in modo integrale.
In un articolo [33], Stan Franklin e Art Graesser introducono una tassonomia di
agenti e citano diverse definizioni possibili, sottolineando che spesso esse sono il
frutto di osservazioni su specifiche implementazioni, e che quindi ne riflettono le
peculiarità e le limitazioni.
“Un agente è qualunque cosa che percepisca il proprio ambiente attraverso sensori
ed agisca su di esso attraverso effettori“ [7]. Questa definizione dipende
pesantemente da cosa si
intenda con ambiente,
sensori ed effettori: per
giungere
ad
una
separazione tra agenti e
programmi si dovranno
restringere le suddette
nozioni.
“Agenti autonomi sono
sistemi computazionali
Figura 12: rappresentazione di un agente.
che abitano un ambiente
dinamico e complesso,
percepiscono e agiscono autonomamente in questo ambiente e facendo ciò
realizzano una serie di scopi o compiti per cui sono disegnati” [35]. Si aggiunge un
punto cruciale, l’aspetto della realizzazione di un compito. Inoltre gli ambienti
devono essere complessi e dinamici.
“Il termine agente è usato per rappresentare due concetti ortogonali. Il primo è
l’abilità dell’agente di eseguire compiti autonomamente, il secondo è la capacità di
eseguire ragionamenti orientati al dominio dell’agente stesso.”. L’esecuzione
28
autonoma è chiaramente il punto focale, e gli altri concetti sono ad esso
subordinati.
Franklin e Graesser elaborano a loro volta una definizione di agente: “un agente
autonomo è un sistema situato dentro un ambiente ma separato da esso che
percepisce il suddetto ambiente e agisce su di esso, nel tempo, per raggiungere
scopi propri, e compiendo azioni che percepirà in futuro”.
Il punto chiave che permette di separare agenti da programmi semplici (dato che
tutti gli agenti software sono programmi, ma non tutti i programmi sono agenti) è la
parte finale, secondo cui un vero agente deve avere un feedback delle proprie
azioni, cosa che non accade nei semplici programmi, a meno di estendere
forzosamente l’ambiente sino a includere l’utente.
Vengono individuate quindi alcune classi di agenti, classi che però sono suscettibili
di modifica, rimozione o aggiunta, dato che la classificazione è dichiaratamente
non univoca. Le definizioni riportate non sono mutuamente esclusive, e si possono
in gran parte combinare per creare agenti con particolari proprietà.
Proprietà
Reattivo
Altri nomi
Percettivo e attivo
Autonomo
Pro-attivo
Goal oriented, Con scopo
Temporalmente
continuo
Comunicativo
Sociale
Learning
Adattivo
Mobile
Personaggio credibile
Flessibile
Significato
Risponde in tempo reale ai
cambiamenti
dell’ambiente
Esercita controllo sulle
proprie azioni
Non agisce solo in
reazione all’ambiente
È’ un processo che esiste
in un tempo continuo o in
una
buona
approssimazione di esso
Comunica con altri agenti,
ed eventualmente con
persone.
Modifica
il
proprio
comportamento in base
all’esperienza
In grado di passare da una
macchina all’altra.
Con personalità, stati
emotivi.
Le azioni non fanno parte
di uno script
Tabella 4: distinzione di classi di agente.
Chiaramente tutti queste proprietà e queste definizioni non possono essere
facilmente soddisfatte contemporaneamente, e andrà quindi scelto un sottoinsieme
appropriato alle necessità e al dominio in esame.
Si potrebbe considerare che un agente non flessibile (che agisce su script) non può
essere autonomo. D’altra parte un agente potrebbe coordinare autonomamente
diversi script di basso livello in comportamenti complessi ed intelligenti. Di nuovo
le possibilità interpretative sono ampie.
29
E’ evidente che partendo da cosa è necessario, e non da un’idea precostituita di
agente che si deve di volta in volta adeguare, è più semplice dividere cosa si può
considerare agente da quello che non lo è.
Daniel Thalmann [8,36] introduce vari criteri tassonomici per classificare gli agenti
per categorie, sotto diversi punti di vista.
Inizialmente viene definito [36] un set di caratteristiche minime per la simulazione
di agenti dal comportamento umanoide:
§
Percezione: attraverso sensori virtuali l'agente percepisce il mondo che lo
circonda al fine di ottenere informazioni e compiere azioni guidate dal
feedback sensoriale.
§
Emozione: le azioni sono originate da uno stato d'animo, e a loro volta le
emozioni sono generate da eventi esterni, esiti di azioni, percezioni.. Si può
pensare, in termini più “meccanicistici” di stato interno.
§
Comportamento: il comportamento ha una natura gerarchica, ovvero
esistono macro-comportamenti di alto livello e poi via via di livello più
basso.
Essi sono la risposta verso l'ambiente del complesso
percezione/emozione.
§
Azione: Il comportamento è solo la delibera di azioni, che sono determinate
quindi da percezione emozione, comportamento, in cascata. Il risultato è
vagliato dalla percezione e può portare ad un feedback nell'agente.
In aggiunta a tutto questo vi è un altro parametro fondamentale:
§
Memoria: Interviene insieme agli altri parametri ed influenza il risultato
finale. Non è posta eccessiva enfasi su questa parte, tuttavia.
In [8] si sottolinea che in particolari situazioni intervengono parametri aggiuntivi
altrimenti poco rilevanti (in caso di simulazione di incendio la capacità respiratoria
in costante diminuzione) o alcuni parametri emotivi vengono fortemente esaltati
(situazioni di panico totale, annullamento della volontà..)
La necessità di agenti autonomi nasce dall'osservazione che essi, in molti campi
reali, semplificherebbero molto il compito dell'utilizzatore umano, e
aumenterebbero la qualità del prodotto finale: basti pensare all'animazione di folle
in sequenze CGI (Computer Generated Images) da inserire in un film, se il loro
comportamento fosse auto determinato attraverso regole semplici e comportamenti
emergenti complessi, si otterrebbe il doppio vantaggio di un risultato più plausibile
dell'animazione “a mano” raggiunto con minor sforzo.
30
Thalmann [36] riconosce tre livelli di autonomia:
§
Agenti Guidati: seguono uno script in modo abbastanza rigido.
§
Agenti Programmati: gestiscono script o macro-azioni predefinite
seguendo gli eventi.
§
Agenti Autonomi: il più possibile indipendenti, tendono ad usare memoria
ed analisi semantica per raggiungere lo scopo.
Livello di autonomia L'agente si sposta verso una
degli agenti:
locazione determinata
Guidato
Necessitano di una serie di punti
liberi da collisione attraverso i
quali spostarsi
Programmato
Autonomo
L'agente compie
un'azione
Necessita di
informazioni comp lete
su cosa, quando e come
agire.
Path più o meno fisso,
Gestisce le azioni con
programmati per gestire le
una certa autonomia
collisioni
all'interno di una
gamma stabilita.
Usa percezione e memoria per
Decide quando
raggiungere l'obbiettivo scegliendo compiere azioni, e la
il path autonomamente
modalità è guidata in
parte dalla
programmazione, in
parte dalla memoria.
Tabella 5: livelli di autonomia di un agente.
I paradigmi proposti non sono da intendere come rigidi in maniera assoluta, si
possono unire elementi diversi, come agenti programmati con memoria, o
autonomi, ma senza di essa. Le soluzioni vanno tarate sul dominio applicativo in
questione.
La classificazione proposta [36] si può applicare anche alle folle, oltre che ai
singoli agenti:
§
§
§
Folle Guidate
Folle Programmate
Folle Autonome
Il parallelismo con gli agenti singoli è molto forte, dato che l'autore immagina la
folla come una sorta di macro-agente.
Questo approccio può essere discutibile, dato che in questo modo si escludono i
meccanismi di comportamento emergente dato dalla somma delle individualità
degli agenti. Il vantaggio è che determinando a priori regole applicate alla folla
come ente unico, il risultato è sicuro e prevedibile, oltre che regolabile con
semplicità e sicurezza.
Altrove [8] lo stesso autore propone invece folle a comportamento emergente, con
differenze, dipendenti dalle varie situazioni (interazione sociale ad un party,
evacuazione per incendio..), dei comportamenti individuali. Pone anche accento sia
sul lato interattivo più generico, che su quello pienamente cooperativo,
31
evidenziando come i meccanismi che rendono una società virtuale realistica siano
numerosi e sfaccettati.
In [8] si introducono ulteriori classificazioni e gerarchie, con suddivisioni in:
§
§
§
Folle
Gruppi
Agenti
dove l'elemento chiave è il gruppo che contiene informazioni aggiuntive rispetto
gli individui, mentre le folle sono collezioni di gruppi.
I gruppi possono avere o meno un leader, che può essere imposto dall'utente, scelto
a caso o selezionato con regole sociali.
I gruppi, come già gli agenti e le folle possono essere:
§
§
§
Gruppi Guidati: obbediscono a ordini esterni, cioè all'utente
Gruppi Programmati: obbediscono a uno script, che funge da simulazione di
comportamenti innati. Non serve intervento esterno.
Gruppi Autonomi: obbediscono a regole di comportamento che permettono
quindi un grado di adattabilità all'ambiente superiore e di autonomia sia dai
comportamenti innati che dai comandi dell'utente.
Thalmann [8] sottolinea che è importante differenziare gli individui sia sotto il lato
comportamentale macroscopico, che sotto quello attinente ai singoli gesti, alle
posture, alle caratterizzazioni individuali.
Un mondo popolato da personaggi visivamente identiche che si comportano in
modo differenziato suona falso e irrealistico, come pure personaggi con animazioni
e rappresentazioni varie che agiscono identicamente risultano immediatamente
inadeguati. Entrambi gli aspetti hanno un grande peso nel realismo complessivo.
Per implementare umani credibili, essi vanno dotati di un modello percettivo
realistico. Un modello eccessivamente semplice potrebbe dar luogo a effetti di
apparente “stupidità ” dell'agente, che in realtà manca più che di regole efficaci, di
dati completi da elaborare. Thalmann [8] sottolinea che sebbene la modellazione
debba essere ad imitazione dei sensi biologici, essi non devono essere strettamente
simulati. In altre parole basterà che il comportamento del sensore sia
macroscopicamente simile a quello reale, e non sarà necessario modellare
meccanismi acustici, ottici, tattili complessi.
Il dominio applicativo scelto porta alla definizione di agenti con precisi requisiti.
Informalmente un agente software può essere definito come un’entità inserita in un
contesto (il suo mondo) ed in grado di:
- percepire elementi del proprio mondo
- spostarsi autonomamente nel mondo
per fare ciò l’agente dovrà avere:
- una rappresentazione del mondo e/o del proprio stato (stato interno)
- un set di regole di decisione che permettano di effettuare passaggi da uno stato
all’altro, azioni sul mondo, spostamenti in esso.
Il modello teorico preso in considerazione e riguardante le modalità in cui le
informazioni hanno origine, si diffondono, e vengono percepite dagli agenti si basa
sulla teoria dei campi. L’SCA (Situated Cellular Agents) è un approccio per la
32
modellazione di folle basato sul modello MAS (Multi Agent Systems). Si tratta di
una particolare categoria di MMASS (Multilayered Multi Agent Situated System)
che ha origine dal modello CA (Cellular Automata).
Un’esposizione analitica di tale modello viene fornita al capitolo 3.
33
4.3.2.
Linguaggio di programmazione
Maxscript è il linguaggio messo a disposizione per interfacciarsi e complementare
le funzionalità di 3DS Max. Internamente è object-oriented, tutte le classi
predefinite sono localizzate secondo una gerarchia ereditaria. La maggior parte
delle funzioni predefinite sono polimorfiche ma quelle create non lo sono. Ha
molte caratteristiche e costrutti speciali come il contesto del sistema di coordinate,
le primitive degli oggetti fino ad arrivare ai più sofisticati concetti di materiali e
luci disponibili abitualmente tramite le interfacce del software stesso. L’accesso
agli elementi della scena avviene attraverso la stessa gerarchia che caratterizza ogni
oggetto 3DS Max. Voluminose collezioni di oggetti sono gestite internamente in
modo efficiente. Consente di realizzare rapidamente semplici applicazioni o
prototipi e di creare interfacce per estendere quelle esistenti e predefinite. Tramite
questo strumento è possibile creare utility, macroscript e plug- in.
Vantaggi
•
•
•
•
•
•
•
•
•
•
•
La sintassi del linguaggio è semplice e richiama quella del C++
Un comando come b=box() crea un cubo con i parametri di default ma in
realtà, per avere un controllo completo è necessario conoscere tutti gli attributi
e i metodi di tale oggetto.
Benché l’array abbia un costrutto complesso, è consentito l’uso di array
dinamici.
L’accessibilità a ogni parametro dell’oggetto lo rende uno strumento molto
avanzato.
Accesso ai file ASCII sia per esportare che per importare dati da altre
applicazioni .
Ereditarietà, tramite cui è possibile definire una sottoclasse di una classe
esistente in modo da estenderne il comportamento.
Polimorfismo che permette di utilizzare un determinato oggetto in un contesto
in cui ne venga richiesto un altro, a patto che l’oggetto utilizzato sia una
sottoclasse di quello richiesto.
Garbage collector, si occupa di ripulire la memoria dagli oggetti non più
referenziati e quindi non più utilizzati. Avviene in automatico ma può essere
svolto anche manualmente.
Information Hiding ovvero l’incapsulamento prevede che il contenuto
informativo di una classe rimanga nascosto all’utente, in modo tale che i
metodi siano l’unica via per interagire con un determinato oggetto.
Permette l’uso di interfacce consentendo di associare un tipo ad una collezione
di metodi privi di implementazione.
La possibilità di utilizzare comandi di 3DS direttamente tramite script.
Apprezzabile lo strumento VisualScript Editor che consente di creare interfacce
semplici ma funzionali.
34
Figura 13: screenshot di VisualScript
Svantaggi
• La struttura dati onnipresente è l’array e non esiste la possibilità di creare
matrici di dimensioni superiori a 4 X 3. Ogni oggetto, anche molto complesso,
è costituito da un insieme di vertici ognuno dei quali è definito tramite una
matrice 4 X 3.
• Non è possibile definire classi astratte ovvero classi con metodi privi di
implementazione.
• No overloading, ovvero non esiste la possibilità di dichiarare all’interno di una
classe più metodi con lo stesso identificatore, specificando volta per volta una
lista di parametri diversi per numero e/o per tipo in modo da adeguarlo a
contesti d’uso differenti.
• No overriding, ovvero non è possibile estendere il comportamento di una classe
aggiungendo nuovi metodi o ridefinendo metodi già dichiarati nella
superclasse.
• Frequentemente si hanno eccezioni di sistema sconosciute che rendono poco
affidabile il codice scritto.
• Si sente la mancanza di un debugger più efficiente e avanzato. Quello a
disposizione è poco più di un editor di testo in cui è possibile inserire i singoli
comandi e verificarne l’esecuzione.
Figura 14: screenshot del Listener (sinistra) e del MaxScript editor (destra).
35
4.4. Protocollo di comunicazione tra applicazione 2D e 3D
Per facilitare la distinzione da file contenenti altri tipi di dati necessari in futuro,
quello successivamente descritto ha estensione *.23D.
Di seguito viene specificato come si presenta il singolo record all’interno di un
qualsiasi file di testo:
Type#aaa#bbb#ccc#xxx#yyy#zzz@
Elenco campi:
Type
aaa
bbb
ccc
xxx
yyy
zzz
#
@
•
•
•
•
•
•
: stringa che identifica il tipo di record.
: numero intero che identifica univocamente il record rispetto al
tipo.
: numero intero indicante la sequenza temporale.
: numero intero indicante il coefficiente moltiplicativo.
: numero intero indicante la coordinata X.
: numero intero indicante la coordinata Y.
: numero intero indicante la coordinata Z. In questo caso valore
fissato a 000.
: delimitatore di campo.
: delimitatore di record.
La lunghezza di ogni campo può essere variabile se si utilizzano dei
delimitatori, diversamente, deve essere fissata a priori per evitare possibili
problemi di lettura. Nel nostro caso si adottano entrambe le soluzioni.
Per semplicità di lettura il delimitatore di campo e di record può essere un
qualsiasi carattere non alfanumerico.
La voce Type identifica il tipo di record presente. Questo campo è stato
introdotto per una rapida espansione del protocollo in situazioni in cui sono
presenti diversi tipi di agente, di informazioni o di spazi multilivello. In queste
simulazioni sono stati utilizzati due tipi di record: uno per indicare gli agenti e
un altro per definire lo spazio discreto in cui si opera.
Il campo che contiene l’identificativo permette di avere in un unico file i dati
riguardanti tutti gli agenti e gli spazi coinvolti. Diversamente, senza nessun
tipo di distinzione, si sarebbe dovuto creare un file per ogni agente.
La sequenza temporale consente di ricostruire lungo l’asse del tempo ogni
movimento effettuato. Tramite la lettura di questo valore e del relativo
tracciamento di posizione è possibile ottenere sincronicità o meno tra i diversi
componenti. La posizione iniziale dell’agente avrà come indicatore temporale
il valore 000.
Il coefficiente moltiplicativo consente di specificare il livello di
discretizzazione per ogni singola distanza. Il valore di default per questo
campo è 001 dove si assume che la distanza che intercorre tra la posizione
precedente e quella successiva sia pari a 1 unità. Questo parametro consente di
rappresentare nel 2D una distanza elevata tra due nodi come una qualsiasi
altra. Il suo utilizzo è semplice: durante la lettura del record, i valori delle
coordinate x,y,z vengono moltiplicate per questo coefficiente. Il valore unità
può essere associato a qualsiasi altra unità di misura: miglia, metri, chilometri.
36
•
•
Tutte le coordinate sono riferite rispetto all’origine assoluta localizzata nel
punto (0,0,0).
In questa applicazione non saranno utilizzati valori diversi da 000 per il campo
#zzz@. La sua presenza consente comunque di estendere le funzionalità di
questo protocollo anche per progetti futuri che utilizzano più livelli.
STEP 0
STEP 1
Asse Y
(0,0)
Asse Y
Asse X
(0,0)
Asse X
Figura 15: rappresentazione di interazioni di due agenti in uno spazio discreto
Nella figura di sinistra (STEP 0), l’agente, in questo caso l’Avatar 001 è
posizionato nel nodo di coordinate (4,3,0) e successivamente (STEP 1) si sposta in
(3,2,0). L’Avatar 002 è posizionato nel nodo di coordinate (3,5,0) (STEP 0) e
successivamente (STEP 1) si sposta in (3,4,0). Sebbene la distanza tra i nodi
(4,3,0) e (3,2,0) è rappresentata bidimensionalmente nello stesso modo delle altre,
nel 3D avrà una lunghezza dieci volte maggiore perché il coefficiente
moltiplicativo del secondo nodo è pari a 10. Nel file di testo si avrà la seguente
configurazione:
Avatar#001#001#001#004#003#000@
Avatar#002#002#001#003#005#000@
Avatar#001#002#010#003#002#000@
Avatar#002#001#001#003#004#000@
Space#001#001#001#001#006#000@
Space#001#002#001#002#005#000@
Space#001#003#001#004#005#000@
Space#001#004#001#004#004#000@
Space#001#005#001#003#004#000@
Space#001#006#001#003#002#000@
Space#001#007#001#004#002#000@
Space#001#008#001#005#002#000@
Definizione della
dinamica delle entità
Definizione della
struttura spaziale
Come è possibile notare dalla configurazione precedentemente descritta è possibile
inserire i vari record in ordine sparso sia rispetto al valore identificativo
37
dell’agente, sia rispetto il valore indicante la sequenza temporale. L’unica
eccezione a queste flessibilità è data dalla necessità della presenza cronologica di
ogni step in ordine continuo e con una numerazione iniziale pari a 001. Anche per
quanto riguarda il campo identificativo la numerazione deve iniziare con 001.
L’esempio seguente chiarisce la restrizione:
Avatar#000#001#001#004#003#000@
Avatar#000#003#010#003#002#000@
In questo caso, mancando il nodo dell’Avatar 001 allo Step 002 viene generato il
percorso fino allo Step 001 e viene omesso lo Step 003 poiché manca continuità
temporale tra lo Step 001 e lo Step 003. In realtà nessun percorso generato poiché
l’identificativo dell’Avatar è 000 che non è consentito.
38
5. Implementazione
Tramite l’interfaccia realizzata è possibile creare in pochi passi l’intera scena ed
essere pronti per risolvere la simulazione. Innanzitutto è necessario scegliere
l’applicazione AI Tool tra le utility caricate e disponibili nel menu a discesa del
rollout “Script” presente in 3DS Max. La prima
operazione da effettuare è di caricare i dati memorizzati
nel file di testo con estensione 23D. Ogni altro pulsante
è infatti disabilitato finché ogni record non è stato letto
dal parser ed inserito nell’array. La barra di
avanzamento permette di avere un feedback visivo
durante tutte le operazioni che richiedono un tempo non
immediato. L’indice “Global Increase” consente un
incremento delle dimensioni dell’intera scena
modificando direttamente le coordinate al momento
della memorizzazione nella struttura dati. Nel secondo
gruppo di opzioni si trovano i pulsanti per generare il
piano in cui si svolge la simulazione e una
rappresentazione dei nodi importati e corrispondenti a
quelli presenti nel grafo dell’applicazione di origine. Il
terzo elemento crea, in modo completamente
autonomo, un’ambientazione tridimensionale semplice
ma di notevole impatto visivo. Eccetto quest’ultimo
bottone, che aggiunge un comportamento agli agenti
per evitare collisioni, i rimanenti non influiscono sui
risultati della simulazione. La scelta di separare e
rendere opzionali questi elementi è motivata dalla
possibilità di inserire un ambiente virtuale esterno
creato da terze parti. Nel gruppo “Simulation” si sceglie
se utilizzare le figure umanoidi durante la risoluzione.
Questa casella di controllo influisce sostanzialmente nel
costo computazionale complessivo e nei risultati
ottenibili. L’utilizzo dei bipedi aggiunge il calcolo di
leggi fisiche, modifica la volumetria dell’agente e le
azioni possibili da intraprendere. Se vi è la necessità di
apportare modifiche alla simulazione è utile disabilitare
Figura 16: interfaccia di
questa funzione per avere in questo modo una
AI Tool.
risoluzione più rapida visualizzando un rappresentante
in qualità dell’agente. “Render Object” aggiunge i nodi e i percorsi nella creazione
del rendering finale. Un ultimo passo nella generazione della scena è dato dal
pulsante “Draw Scene” che opera disegnando i percorsi sotto forma di polilinee
che compieranno gli agenti; oltre a ciò vengono aggiunti tutti gli avatar e per
ognuno il relativo delegato nel punto di origine corrispondente. A questo punto si è
in grado di avviare la simulazione con la semplice pressione del secondo pulsante
di questo gruppo che, inoltre, orienta ogni agente nella direzione corretta del
proprio percorso. Vi sono inoltre altri cinque bottoni non ancora descritti, ma il cui
funzionamento è chiaro: eliminano gli oggetti corrispondenti.
39
Questo strumento consente di ottenere una rappresentazione grafica
tridimensionale di qualsiasi applicazione che fornisca i propri risultati attraverso un
file ASCII rispecchiando il protocollo descritto nel paragrafo 4.4.
Nell’immagine a fianco è
possibile osservare i risultati
ottenuti tramite questa utility
senza
operare
nessuna
modifica
aggiuntiva;
gli
elementi visibili in colore
turchese
sono
le
pareti
dell’ambiente ricostruito, i
cerchi rappresentano i nodi con
la medesima disposizione
dell’ambiente bidimensionale.
Questi anelli si differenziano
nel colore per identificare
Figura 18: rappresentazione grafica completa di una
quelli utilizzati durante la
simulazione.
simulazione (rossi), da quelli
che
costituiscono
semplicemente lo spazio del
grafo di origine (verdi).
Durante la risoluzione sono
presenti sia gli avatar che i loro
delegati. La comunione di
questi due elementi rappresenta
il singolo agente. Il delegato è
visualizzato
attraverso
un
triangolo con la punta rivolta
verso
la
direzione
di
movimento
iniziale.
Altri
elementi
sono
visibili
nell’immagine di lato: tutte le
Figura 17: ingrandimento della scena durante la
forze
agenti
vengono
risoluzione.
rappresentate tramite vettori di
vario colore e di lunghezza corrispondente al loro modulo. Nel caso del delegato
rappresentato in Figura 19 sono
presenti la velocità e il raggio
d’azione del sensore per la
ricerca dell’obbiettivo. Il volume
entro
cui
sono
calcolate
eventuali collisioni è definito
attraverso una sfera bianca
visibile nella parte superiore
della Figura 17, mentre gli
obbiettivi
determinati
dinamicamente lungo il percorso
sono di colore blu e di
dimensioni minori. E’ possibile
ottenere ulteriori informazioni
Figura 19: possibili vettori agenti su un delegato
visive ma l’insieme risulterebbe
40
troppo caotico.
Figura 20: diverse visualizzazioni della medesima scena.
L’effetto della casella di controllo “Render Object” è osservabile nella Figura 20
dove è possibile notare (immagine di destra) diverse rappresentazioni umanoidi. La
scelta di tale opzione è utile nella verifica della corrispondenza tra le posizioni
calcolate nelle interazione dell’applicativo bidimensionale e quelle che avvengono
in questo strumento. In effetti vi è spesso una certa differenza tra i risultati, dovuti
al calcolo aggiuntivo che rende maggiormente realistica questo tipo di simulazione.
Aspetti come le collisioni con altri agenti sono risolti nei grafi o nelle griglie,
semplicemente ponendo il vincolo che in ogni nodo o cella può essere presente un
solo agente per ogni interazione. Inoltre gli spostame nti avvengono nella maggior
parte dei casi in modo sincrono. Per ottenere dei movimenti fluidi e realistici,
questo sistema opera in modo asincrono, causando però, conseguentemente,
potenziali collisioni tra avatar gestite tramite variazioni di percorso, rallentamenti o
soste. Nonostante la possibilità di rendere questi oggetti come parte della scena, le
presentazioni non comprenderanno tali elementi che conferiscono un aspetto
maggiormente artificiale alla simulazione.
Esistono innumerevoli parametri, comportamenti e oggetti che si possono
aggiungere per raffinare, migliorare o mutare il risultato complessivo
dell’elaborazione. Probabilmente verranno aggiunte in futuro ulteriori interfacce
per impostare questi aspetti ma ora sarebbero state di intralcio all’obbiettivo di
creare un strumento di immediato utilizzo.
41
5.1. Dimostrazione d’uso
Nel corso degli studi effettuati durante questo periodo di stage, è stato possibile
collaborare con un altro laureando e utilizzare gli scenari da lui creati per verificare
l’uso di AI Tool. Sono stati considerati quattro tipi diversi di spazi. Per i primi tre è
stata analizzata sia una situazione di evacuazione in cui gli agenti si trovano in uno
stato normale, sia in uno stato di shock.
Nelle varie stanze vengono diffusi tre campi :
•
Entrata: campo che viene diffuso dalla porta di entrata
•
Emergenza: campo che viene diffuso dalle porte di emergenza.
•
Fine: campo che viene diffuso dagli agenti-attrattori posti nei contenitori.
Questi tre campi vengono diffusi nello stesso modo, ma con intensità opportune e
differenti tra loro, scelte in base alle dimensione della stanza e al numero di agenti.
L’intensità dei campi “entrata” ed “emergenza” è la stessa, mentre il campo “fine”
è diffuso solo all’interno del contenitore di fine simulazione, e gli agenti lo
possono percepire solo una volta attraversata la porta.
L’unica azione permessa agli agenti è quella di tipo “transport”. Essa viene
regolata dalla ricezione dei segnali emessi dagli agenti statici delle porte di
emergenza.
Gli individui seguono il segnale, se sono in grado di percepirlo, muovendosi in una
cella adiacente alla propria, nella quale sia attivo il campo ed esso abbia intensità
maggiore. Nel caso in cui, diversamente, il campo non sia percepile, l’agente si
muoverà in modo casuale.
L’agente avrà raggiunto il vano della porta quando si troverà in una cella la cui
intensità del campo sia maggiore della più grande intensità presente tra le celle
adiacenti.
A questo punto l’agente cambia sensibilità e inizia a seguire il campo di tipo
“fine”; questo instante segna, come già detto, la fine della simulazione, essendo
ininfluente il comportamento una volta varcata la porta.
Essendo il contenitore modellato in forma di corridoio, l’agente cercherà di
avvicinarsi il più possibile all’attrattore posto al termine di esso.
42
SIMULAZIONE 1
In questo primo esempio sono presenti 20 agenti per un totale
di 474 interazioni. Viene rappresentato un locale molto ampio
come quello di un museo, in cui la linea composta da nodi
verdi è un ostacolo posto al centro della stanza mentre i due
nodi verdi presenti a lato del primo nodo rosso (agente), sono
campi attrattori posti come stipiti di una porta e utilizzati per
dirigere gli agenti verso l’uscita. L’elemento di colore giallo è
il punto finale da raggiungere. Il grafo di questa immagine
rappresent
a lo stato
finale
della
simulazio
ne in cui
tutti
gli
agenti
Figura 21: spazio
bidimensionale
sono
della prima
usciti e si
simulazione.
recano nel
corridoio.
Questo
ultimo
elemento
non
è
stato
rappresentato ma il risultato
Figura 22: stato iniziale dello spazio tridimensionale
non cambia.
della prima simulazione.
Le immagini di Figura 22 e
Figura 23 rappresentano rispettivamente lo stato iniziale e quello finale durante la
simulazione a tre dimensioni. Sebbene tutti gli agenti riescano ad uscire dalla
stanza, i tempi richiesti durante
le due simulazioni sono
differenti. Ciò è dovuto al
tempo richiesto nei movimenti
degli agenti che devono
evitarsi
a
vicenda
e
contemporaneamente raggirare
gli
ostacoli
posti
nell’ambiente.
Questa simulazione considera
tutti gli agenti in uno stato
emozio nale equilibrato, mentre
le
successive
immagini
descrivono i risultati ottenuti
quando alcuni di essi si
Figura 23: stato finale dello spazio tridimensionale
trovano
in
uno
stato
della prima simulazione.
confusionale. Tale situazione
influisce sulle loro capacità percettive e quindi nelle loro reazioni. Questo aspetto
viene realizzato esclusivamente nell’applicazione di origine in quanto è parte delle
specifiche del modello ad agenti SCA. Per elaborare tale sistema sono state
necessarie 622 interazioni.
43
Figura 24: stato iniziale e finale della simulazione con alcuni agenti in stato confusionale.
44
SIMULAZIONE 2
Nella successiva dimostrazione ci sono due stanze comunicanti; nella prima sono
presenti 10 avatar che a seguito di 243 interazioni, si spostano verso l’altro locale
Figura 25: grafo bidimensionale e stato iniziale, intermedio e finale della seconda
simulazione. Gli agenti si spostano da un locale a quello adiacente per trovare l’uscita più
vicina.
alla ricerca di un’uscita. Poiché ve ne sono due disponibili, la scelta di quella più
prossima viene valutata attraverso l’intensità di campo generato e propagato dai
nodi presenti presso gli stipiti della porta.
Figura 26: stato iniziale e finale con agenti nello stato di shock. Questi ultimi non trovano
la via per dirigersi verso l’uscita ubicata nel locale adiacente.
45
Nella Figura 26 ci sono due screen shot riguardanti la dimostrazione con dieci
agenti di cui due in stato di agitazione e un totale di 344 interazioni. Anche in
questo caso è possibile notare come gli agenti confusi non riescano a perseguire il
proprio obbiettivo trovando l’uscita.
46
SIMULAZIONE 3
Questa ricostruzione aumenta le difficoltà generali dell’intero sistema. Sono infatti
presenti 48 agenti che interagiscono attraverso 1455 passi risolutivi. Ciò che si è
voluto creare è un ambiente simile ad un’aula scolastica o ad una libreria.
La complessità dovuta ad un numero elevato di personaggi ha richiesto che la
simulazione utilizzasse, almeno inizialmente, i delegati in sostituzione delle figure
umanoidi. Tramite l’uso esclusivo di questi rappresentanti è infatti possibile
eliminare temporaneamente il problema
delle collisioni, ottenere una rapida
visualizzazione dell’intero sistema e solo
in un secondo momento, dopo aver
eventualmente apportato modifiche alle
strutture, completare la simulazione con
l’aggiunta degli avatar. I risultati ottenuti
in questo modo sono visibili nelle
immagini della Figura 27. Nello schema a
fianco
è
possibile
risalire
alla
disposizione iniziale degli agenti (rossi) e
dei campi attrattori presso le uscite
(verdi). Sono presenti inoltre altri nodi di
colore verde che rappresentano le
indicazioni verso le porte. Le parti che
costituiscono lo spazio percorribile sono
Figura 28: grafo di un’aula scolastica
in nero mentre quelli gialli sono i punti
con campi attrattori verso le uscite.
finali in cui si raggruppano tutti gli agenti
Figura 27: due diverse rappresentazioni della medesima simulazione. In alto vengono
utilizzati gli avatar mentre in basso i loro delegati.
47
che trovano la via d’uscita dalla stanza. Ogni altro spazio non rappresentato da un
nodo, è il caso delle aree comprese tra due file di agenti, viene a far parte delle
strutture rigide della rappresentazione virtuale.
Di seguito è possibile osservare i risultati grafici ottenuti e quelli derivanti dalla
simulazione di agenti con uno stato
interno normale, utilizzando un avatar
per ognuno di loro o più semplicemente
un delegato.
Utilizzando sempre lo stesso numero di
agenti, ma definendone alcuni, durante la
simulazione, in stato confusionale, sono
stati ottenuti diversi risultati (Figura 29).
I delegati che restano nella stanza durante
l’evacua zione sono cerchiati di rosso e i
tragitti fatti da ognuno sono visibili
Figura 29: risultato finale della
attraverso le linee che creano delle
simulazione ottenuta con alcuni agenti in
geometrie simili a quadrati. Nel
stato confusionale.
rettangolo verde sono invece evidenziati
quelli che hanno trovato la via d’uscita nella parte destra dell’aula. Per tale scopo si
sono rese necessarie 1883 interazioni nell’applicazione sorgente.
48
SIMULAZIONE 4
Un ultimo esperimento è stato fatto prendendo in considerazione la morfologia
architetturale di un’area dell’ultimo piano dell’edificio U6. Sono stati presi in
esame 25 agenti per un totale di 1024 interazioni. Come indicato nella Figura 30
l’ambiente è composto da due stanze (il laboratorio LABIC e l’aula seminari), un
corridoio orizzontale e due laterali in cui convogliano le persone durante
un’evacuazione. Tale schema è stato ripreso direttamente dai disegni esposti lungo
il corridoio e che indicano le uscite di emergenza. I nodi di colore rosa indicano gli
ostacoli presenti all’interno dei locali.
I risultati ottenuti dimostrano che la presenza di un’unica indicazione al centro del
corridoio induce gli agenti uscenti dalla seconda porta da sinistra a dirigersi verso
il corridoio a maggior distanza da loro.
Figura 30: grafo utilizzato dall’applicazione bidimensionale per la simulazione ad agenti.
Figura 31: stato iniziale (sinistra) e finale (destra) della simulazione ambientata in un settore
del quarto piano dell'edificio U6.
49
6. Sviluppi futuri
• L’ipotesi di rendere 3DS Max l’unica applicazione necessaria per la realizzazione di
simulazioni come quella descritta in questo documento è un obbiettivo possibile ma
ostico. Ciò significa riuscire ad implementare il modello ad agenti all’interno del
codice principale; il problema maggiore sarebbe quello di trovare un metodo per
poter passare
da uno spazio
continuo,
Livello 2
come
un
ambiente
vasto di una
città, a quello
discreto,
Livello 1
come quello
presentato
nelle
dimostrazioni
d’uso
di
questo
documento,
Livello 0
su cui poter
realizzare
i
Figura 32: tre possibili livelli di discretizzazione.
calcoli
di
maggiore
complessità e onere computazionale. Una possibile soluzione a tale problematica
può essere, almeno in via teorica, quello di rappresentare l’ambiente come un
“continuo di spazi discreti”. Nella Figura 32 vengono rappresentati tre livelli di
discretizzazione: il livello 0 rappresenta lo spazio continuo come può essere una
città; il livello 1 è un primo livello di discretizzazione che rappresenta nel nostro
esempio un quartiere e il livello 2 è l’area intorno ad un singolo palazzo. Il principio
è quello dell’algoritmo Quadtree molto diffuso negli ambienti di grafica.
Altre questioni giungono comunque immediate: come distribuire l’intelligenza negli
oggetti Max e come farli interagire tra loro e con il mondo in maniera non banale.
• L’inserimento di nuove caratteristiche come la vista è un’altra possibile
motivazione per continuare questo
progetto. La creazione di un sensore
è molto complesso e necessita
almeno uno studio delle principali
leggi della fisica che lo governano.
Tuttavia non è sempre necessario
avere una sistema completamente
rispecchiante la realtà. Nel caso
della vista umana è sufficiente
ottenere due coni che partono dal
viso dell’avatar per avere una
corrispondenza
adeguata.
Figura 33: avatar con coni visivi.
Un’ulteriore
modellazione
più
50
semplicistica può essere fatta utilizzando un unico segmento, rappresentante la zona
di maggior interesse che risiede nella parte centrale dei due coni visivi. La necessità
di ridurre tale sensore a forme geometriche elementari è dovuta al costo
computazionale che richiederebbe un sistema in cui, per ogni agente, andrebbero
calcolate tutte le collisioni tra i triangoli che compongono il proprio campo visivo e
le migliaia di triangoli costituenti gli oggetti del mondo in cui è inserito.
Le applicazioni derivanti da questo tipo di implementazione sono numerose e
variano anche nel campo commerciale. Oltre a rendere tutta la simulazione
maggiormente realistica, ad esempio, nella ricerca di obbiettivi senza ulteriori fonti
cognitive sottostanti, tali simulazioni risulterebbe
utili per coloro che necessitano di sapere quali sono
le aree a maggior impatto visivo. Chi si occupa di
inserire spazi pubblicitari all’interno di una piazza o
di una via otterrebbe dei risultati vantaggiosi anche
dal punto di vista economico; si potrebbe verificare
il corretto posizionamento di segnalazioni stradali e
di indicazioni delle uscite di emergenza. I risultati
ottenuti potrebbero essere sotto forma analitica o in
maniera più comprensibile attraverso una realtà
aumentata con visualizzazioni “a falsi colori” delle
aree di interesse.
Oltre a tutto ciò è possibile inserire ulteriori sensori.
L’udito e l’olfatto potrebbero essere implementati
agevolmente nelle applicazioni bidimensionali
proprio per le loro caratteristiche di propagazione e
la complessità dei calcoli che si trascinano.
Diversamente il tatto apparirebbe fuori luogo in una
Figura 34: un avatar che
afferra una teiera.
locazione piatta. I fattori che intervengono, in
questo caso, sono infatti inscindibili dal volume che
occupano e dalla posizione assunta.
• Estendendo i comportamenti in termini di quantità e
tipologia, creandone eventualmente alcuni ad hoc,
aumenterebbe l’aspetto eterogeneo dell’intero sistema e
consentirebbe una diversificazione delle simulazioni. Se si
tengono in considerazione gli aspetti sociologici e
comportamentali alla base delle nostre azioni, è
facilmente intuibile come esse possano influenzare le
attività di un insieme di persone che condividono uno
spazio. Le modalità di raggruppamento durante un corteo
o una manifestazione sono, ad esempio, un aspetto
studiato diffusamente in molti ambiti. Allo stesso modo,
anche ciò che coinvolge due persone può essere
espressivo di molte sfumature che passano spesso
inosservate ma che fanno parte della cultura di ognuno di
noi.
Figura 35: avatar che
interagiscono
stringendosi la mano.
• L’incremento di funzionalità, la creazione di interfacce e di strumenti di
parametrizzazione della simulazione per un elaborato utilizzo che consenta una
quantificazione dell’affollamento, la localizzazione georeferenziata delle sorgenti e
51
dei target, la modifica del livello di eterogeneità degli agenti, del comportamento
globale o di quello di ogni singolo elemento, delle interazioni col mondo e con ogni
elemento che lo costituisce. Questi sono alcuni aspetti complessivi che trovano però
riscontro e necessitano di puntualizzazioni in ogni istanza del sistema.
• Tutti gli sviluppi futuri descritti ai punti precedenti realizzano potenzialmente un
tipo di simulazione che ha molto rilievo nel mondo attuale. La sicurezza è stata
ultimamente sens ibilizzata e studiata in modo approfondito da sociologi, ingegneri,
architetti, ecc… Tuttavia, l’analisi e la progettazione delle strutture possibilmente
coinvolte in questo ambito si basano essenzialmente sull’esperienza. Non è difficile
infatti guardare nel passato e accorgersi degli errori che sono stati commessi e che
hanno causato la morte di migliaia di persone e di cui hanno provveduto
Data
Luogo
Morti (Feriti)
Situazione
1863
Santiago, Chile
2000
Church
1881
Vienna, Austria
570
Theatre
1883
Sunderland, UK
182
Theatre
1903
Chicago, USA
602
Theatre
1943
London, UK
173
Tube Station
1961
Rio de Janeiro, Brazil
250
Circus
1964
Lima, Peru
318
Stadium
1967
Kayseri, Turkey
40
Stadium
23.06.1968
Buenos Aires, Argentina
75 (150)
Stadium
1970(*)
St. Laurent-du-Pont, France
146
Dance Hall
02.01.1971
Ibrox, UK
66
Stadium
17.02.1974
Cairo, Egypt
49
Stadium
03.12.1979
Cincinatti, USA
11
Concert
20.10.1982
Moscow, USSR
340
Stadium
29.05.1985(*)
Brussels,
VIDEO
38 (>400)
Stadium
10.03.1987(*)
Tripoli, Libya
2 (16)
Stadium
12.03.1988(*)
Katmandu, Nepal
93 (>100)
Stadium
15.04.1989
Hillsborough,
VIDEO
95
Stadium
1990
Mecca, Saudi Arabia
1425
Pedestrian Tunnel
13.01.1991(*)
Orkney, South Africa
>40
Stadium
1991
New York, USA
9
Concert
1863-1992
World
6461
.
Belgium
Sheffield,
UK
Tabella 6: data, luogo e numero di morti (feriti) nei maggiori incidenti verificatesi
precedentemente al 1992. Nell’ultima riga sono riportati in colore rosso il conteggio totale dei
morti (feriti) avvenuti negli incidenti di massa in tutto il mondo.
successivamente a porre dei rimedi. Analizzando i fatti, si scopre che è stata
l’incapacità di prevedere il comportamento umano insieme ad una superficiale
52
progettazione a causare i danni maggiori. Non si è attualmente in grado di
ricostruire situazioni di panico o di evacuazione di vasti ambienti, se non attraverso
un’analisi di immagini video. Questo strumento consent irebbe tuttavia di fare
previsioni riguardo la sicurezza e la gestione di emergenze in strutture non ancora
edificate o soggette a modifiche essenziali.
Si conoscono i dati statistici dei maggiori incidenti di massa avvenuti in tutto il
mondo ma non si è ancora in grado di rendere i luoghi in cui viviamo sicuri da noi
stessi.
La presenza di fumo, fuoco o gas in concomitanza con un vasto numero di persone
coinvolte, sono situazioni difficilmente riproducibili , controllabili e analizzabili a
posteriori.
Realizzare uno strumento sofisticato ma che non intende porsi come la panacea di
ogni male può essere un obbiettivo ambizioso ma anche stimolante.
• L’utilizzo del linguaggio MAXscript, seppur offrendo caratteristiche avanzate e
rapide
per
un’implementazione
prototipale,
costringe
lo
sviluppatore ad interagire con
l’ambiente grafico 3DS Max
nella sua forma completa.
Poiché questo ultimo è uno
strumento avanzato ed adatto
ad un ampio spettro di
tipologie
applicative,
le
interfacce che lo compongono
sono innumerevoli e spesso
risultano superflue per chi ha
obbiettivi ben determinati.
Per
ovviare
a
quest’inconveniente, 3DS Max
offre la possibilità di sviluppare
un’applicazione
proprietaria
utilizzando le librerie che lo
stesso software sfrutta per il
proprio funzionamento. L’SDK
(Software Development Kit) è
un insieme di librerie scritte in
linguaggio C++ e create
appositamente per agevolare lo
sviluppo di plug- in di cui lo
stesso ambiente grafico è in
maggior parte costituito. I plugin esistenti sono infatti creati
utilizzando Microsoft Visual
Figura 36: le principali classi esposte tramite SDK
C++ e vengono implementati
chiariscono quali siano le effettive potenzialità di
questo strumento.
come DLL (Windows Dynamic
Link Libraries).
53
6.1. Conclusioni
Oltre ad aver esteso le mie conoscenze nell’area dell’intelligenza artificiale e in
quella della grafica tridimensionale, questo progetto ha consentito di confrontarmi
con un problema concreto e attuale. La realizzazione di un software che possa
essere di aiuto a molte persone e forse a salvarne alcune è un’idea ambiziosa ma
stimolante. Anche se la tecnologia progredisce continuamente con rapidità
impressionante, attualmente non è possibile creare un applicazione troppo
sofisticata e utilizzarla su macchine commerciali. Tuttavia, queste imposizioni non
devono limitare la fantasia e la creatività di chi ha buone idee.
Spero che il lavoro svolto possa in futuro essere utile a qualcuno e mi auguro che
possa essere fonte di ispirazione, come altri progetti lo sono stati per me.
54
7. Riferimenti
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]
[9]
[10]
[11]
[12]
[13]
[14]
[15]
[16]
[17]
[18]
[19]
[20]
[21]
[22]
[23]
[24]
[25]
[26]
S.Bandini, S.Manzoni, G.Vizzari: “Situated Cellular Agents: a Model to
Simulate Crowding Dynamics“.
S.Bandini, S.Manzoni, G.Vizzari: “MMASS Approach to Localization
Problem“.
S.Bandini, S.Manzoni, C.Simone: “Dealing with Space in Multi- Agent
System: a model for Situated MAS“.
S.Bandini, G.Mauri, G.Vizzari: “Supporting Action-at-distance in Situated
Cellular Agents“.
S.Bandini, S.Manzoni, C.Simone: “Enhancing Cellular Spaces by
Multilayered Multi Agent Situated System“.
F.De Paoli, G.Vizzari: “Context dependent management of field diffusion:
an experimental framework“.
S.Russell, P.Norving: “Intelligenza Artificiale, un moderno approccio“.
Daniel Thalmann, “The foundations of a virtual human society”.
Adam Szarowicz, Juan Amiguet-Vercher, Peter Forte, Jonathan Briggs,
Petros Gelepithis , Paolo Remagnino : “The Application of AI to
Automatically Generated Animation” .
Adam Szarowicz, Juan Amiguet-Vercher, Peter Forte: “Multiagent
interaction for crowd scene simulation”.
Schreckenberg, M., Sharma, S.: “Pedestrian and Evacuation Dynamics.”
Los Alamos National Laboratory :“Mankind’s future will unfold largely in
urban settins“.
R.Ranon :“Guiding Visitors of Web3D Worlds through Automatically
Generated Tours“.
Y.Mukarami, K.Minami, T.Kawasoe, T.Ishida: “Multi- Agent Simulation
for Crisis Management“.
Bin Jiang :“Agent-Based Approach to modelling Environmental and Urban
System Within Gis“.
M.L.Mather, J.S.Gero :“Agent Models of 3D Virtual Words“.
Z.Huang, A.Eliens, C.Visser :“3D Agent-based Virtual Communities“.
P.M.Torrens :“How Cellular Models of Urban System Work“.
F.Semboloni :“The dynamic of an urban cellular automata in a 3D spatial
pattern“.
J.Dijkstra, H.J.P. Timmermans, A.J.Jessurun :“A Multi- Agent Cellular
Automata System for Visualising Simulated Pedestrian Activity“.
K.Tsutsuguchi, K.Sugiyama, N.Sonehara :“The motion Generation of
Pedestrians as Avatar and Crowd of People“.
M.P.Johnson, A.P.Hurter :“An Optimization model for location of
subsidized housing in metropolitan areas“.
A.Karim, S.O.Hassan :“ Normed Distances and Their Applications in
Optimal Circuit Design”.
J.Ozsa, Z.Aly, G.Arbormagyar, A.Szentesi :“ An Efficient Algorithm for
Global Path Optimization in MPLS Networks”.
F.Tecchia, C.Loscos, R.Conroy, Y. Chrysanthou :”Agent Behaviour
Simulator (ABS): A Platform for Urban Behaviour Development”.
D.Helbing, I.J.Farkas, P.Molnar, T.Vicsek :”Simulation of Pedestrian
Crowd in Normal and Evacuation Situations” .
55
[27]
J.P.Granieri, W.Becket, B.D.Reich, J.Crabtree, N.I.Badler :“Behavioral
Control for Real- Time Simulated Human Agents“.
[28] B.M.Namee, P.Cunningham :“A Proposal for an Agent Architecture for
Proactive Persistent Non Player Characters“.
[29] K.Nagel, B.Raney :“ Large scale multi-agent simulations for transportation
applications“.
[30] B.Jiang :“Agent-based Approach to Modelling Urban and Environmental
Systems within GIS”.
[31] B. Ulicny, D.Thalmann :“Crowd simulation for interactive virtual
environments and VR training systems“.
[32] A.Shadschneider, A.Kirchner, K.Nishinari:“CA Approach to Collective
Phenomena in Pedestrian Dynamics”.
[33] S.Franklin, A.Graesser, “Is it an Agent, or just a Program?: A Taxonomy
for Autonomous Agents”.
[35]
P.Maes: “Artificial Life Meets Entertainment: Life like Autonomous
Agents”.
[36] D.Thalmann, S.R.Musse, M.Kallmann ”From individual human agents to
crowds”.
7.1. Risorse Web
•
•
•
•
•
•
•
•
http://www.crowddynamics.com
http://www.urbansimulation.com
http://www.red3d.com/cwr/steer/
http://www.swarm.org/
http://roddy.net/kim/thesis_links.htm
http://www.ees.lanl.gov
http://angel.elte.hu/~panic/
http://www.wired.com/news/technology/0,1282,16077,00.html
•
•
•
•
•
•
•
http://www.discreet.com
http://www.gamedev.net
http://www.gamasutra.com
http://www.gameprog.it
http://www.3dcafe.com
http://www.geosimulation.org
http://www.scriptspot.com
•
•
•
•
•
•
http://www.multigen.com
http://www.isi.edu
www-2.cs.cmu.edu
http://agents.media.mit.edu/
http://www.casa.ucl.ac.uk/working_papers.htm
http://www.hig.se/~bjg/Publications.htm
56
8. Indice delle figure
Figura 1 : localizzazione di centri commerciali in aree extra-urbane.
Figura 2: esempio di agenti con coni visivi.
Figura 3: immagine virtuale del quartiere Ramat Gan a Tel Aviv.
Figura 4: ambiente tridimensionale con folla creata tramite un modello ad agenti
Figura 5: path planning in un ambiente VRML
Figura 6: una vista di Sim City.
Figura 7: risultati dei due metodi sperimentali.
Figura 8: simulazione con FlatWalk ( a sinistra) e con FreeWalk (a destra).
Figura 9: schema ad alto livello dell’intero sistema.
Figura 10: schema della fase iniziale di creazione della scena.
Figura 11: schema delle associazioni tra i componenti costituenti un delegate
Figura 12: rappresentazione di un agente.
Figura 13: screenshot di VisualScript
Figura 14: screenshot del Listener (sinistra) e del MaxScript editor (destra).
Figura 15: rappresentazione di interazioni di due agenti in uno spazio discreto
Figura 16: interfaccia di AI Tool.
Figura 17: ingrandimento della scena durante la risoluzione.
Figura 18: rappresentazione grafica completa di una simulazione.
Figura 19: possibili vettori agenti su un delegato
Figura 20: diverse visualizzazioni della medesima scena.
Figura 21: spazio bidimensionale della prima simulazione.
Figura 22: stato iniziale dello spazio tridimensionale della prima simulazione.
Figura 23: stato finale dello spazio tridimensionale della prima simulazione.
Figura 24: stato iniziale e finale della simulazione con alcuni agenti in stato
confusionale.
Figura 25: grafo bidimensionale e stato iniziale, intermedio e finale della seconda
simulazione. Gli agenti si spostano da un locale a quello adiacente per
trovare l’uscita più vicina.
Figura 26: stato iniziale e finale con agenti nello stato di shock. Questi ultimi non
trovano la via per dirigersi verso l’uscita ubicata nel locale adiacente.
Figura 28: grafo di un’aula scolastica con campi attrattori verso le uscite.
Figura 27: due diverse rappresentazioni della medesima simulazione. In alto
vengono utilizzati gli avatar mentre in basso i loro delegati.
Figura 29: risultato finale della simulazione ottenuta con alcuni agenti in stato
confusionale.
Figura 30: grafo utilizzato dall’applicazione bidimensionale per la simulazione ad
agenti.
Figura 31: stato iniziale (sinistra) e finale (destra) della simulazione ambientata in
un settore del quarto piano dell'edificio U6.
Figura 32: tre possibili livelli di discretizzazione.
Figura 33: avatar con coni visivi.
Figura 34: un avatar che afferra una teiera.
Figura 35: avatar che interagiscono stringendosi la mano.
57
9. Indice delle tabelle
Tabella 1: rappresentazione “Esatta” delle funzionalità nel 2D e nel 3D.
Tabella 2: rappresentazione “Approssimata” delle funzionalità nel 2D e nel 3D.
Tabella 3: rappresentazione “Separata” delle funzionalità nel 2D e nel 3D.
Tabella 4: distinzione di classi di agente.
Tabella 5: livelli di autonomia di un agente.
Tabella 6: data, luogo e numero di morti (feriti) nei maggiori incidenti verificatesi
precedentemente al 1992. Nell’ultima riga sono riportati in colore rosso
il conteggio totale dei morti (feriti) avvenuti negli incidenti di massa in
tutto il mondo.
58
10. Ringraziamenti
Ringrazio la Prof.ssa Stefania Bandini per avermi dato la possibilità di
sviluppare la tesi all’interno del Laboratorio di Ingegneria della Conoscenza.
Ringrazio tutti i ragazzi del LABIC. Ringrazio Giuseppe per i preziosi consigli,
il supporto e la comprensione avuta in ogni momento; Michele che mi ha dato
ispirazione e aiutato in ogni modo e circostanza.
Ringrazio tutta la mia famiglia per il sostegno e l’infinita pazienza avuta in
questi anni, per avermi incoraggiato e aver sempre creduto in me ; mie sorelle
Laura e Paola con cui ho trascorso tutta la vita e mi hanno anche accudito.
Un riferimento particolare a Mariadaria, che mi ha accompagnato nei momenti
di maggiore difficoltà offrendomi tutte le sue energie, e a Lele, amico e fratello.
Mi è impossibile non citare tutti gli amici cari con cui ho sempre condiviso le
migliori esperienze: papà Cero con tutta la famiglia, Khama, Manu, Raffa,
Eros, Ragno, Cri, Patty, Roby, Manu, Dario, Claudio, Turri, Dada, Teo, Doc,
Frank,…
Un bacio alle mie nipotine Federica, Giorgia e Giulia.
59