INGEGNERIA DELLE TELECOMUNICAZIONI

Transcript

INGEGNERIA DELLE TELECOMUNICAZIONI
UNIVERSITÀ DEGLI STUDI DI NAPOLI FEDERICO II
FACOLTÀ DI INGEGNERIA
CORSO DI LAUREA IN
INGEGNERIA DELLE TELECOMUNICAZIONI
(CLASSE DELLE LAUREE SPECIALISTICHE IN INGEGNERIA DELLE TELECOMUNICAZIONI CLASSE N°30/S)
DIPARTIMENTO DI INFORMATICA E SISTEMISTICA
ELABORATO DI LAUREA
Progettazione ed implementazione di un sistema per il Ramp
Management basato su architettura multiagente
RELATORE
CH. MO PROF.
DOMENICO COTRONEO
CANDIDATO
ANGELO DAVIDE FRAGLIASSO
MATR. 887/000216
CORRELATORE
ING. LUIGI BATTAGLIA
ING. GABRIELLA CARROZZA
ANNO ACCADEMICO 2007/2008
Ringrazio la mia famiglia…
In particolare mia Mamma, mio Padre e mia Sorella
sempre vicini in qualsiasi momento, vi adoro.
Ringrazio Nina, sei importantissima, e tutti i miei Amici per tutti i
bellissimi momenti trascorsi insieme.
Ringrazio il Prof. Cotroneo, Gabriella e Luigi che mi hanno seguito in
questo lavoro.
Infine, ma non meno importante, ringrazio me stesso per tutto l’impegno.
“ L’importante è andare fino in fondo e non voltarsi troppo indietro”
Indice
Indice…………………………………………………………………………………………..1
Indice delle figure……………………………………………………………………………...3
Introduzione……………………………………………………………………………………6
Capitolo 1: Ramp management………………………………………………………………..8
1.1 Scenario di riferimento…………………………………………………………………….8
1.2 Gestione aeroportuale……………………………………………………………………..10
1.3 Entità aeroportuali………………………………………………………………………...11
1.3.1 Sistema informativo di scalo………………………………………………………….12
1.4 Servizi di handling………………………………………………………………………..14
1.4.1 Servizi di rampa………………………………………………………………………14
1.4.2 Funzionalità…………………………………………………………………………...18
1.4.3 Schematizzazione funzionalità del sistema…………………………………………...24
1.4.4 Requisiti non funzionali……………………………………………………………....34
1.4.5 Architettura del sistema……………………………………………………………....35
Capitolo 2: Sistemi multi-agente e JADE……………………………………………………37
2.1 Motivi della scelta………………………………………………………………………..37
2.2 Gli agenti software……………………………………………………………………….38
2.3 Architetture sistemi multi-agente………………………………………………………...40
2.4 Comunicazione e coordinamento………………………………………………………...43
2.5 Lo standard FIPA………………………………………………………………………...46
2.5.1 Agent management…………………………………………………………………...46
2.5.2 Linguaggio FIPA-ACL……………………………………………………………….49
2.6 La piattaforma JADE……………………………………………………………………..51
2.6.1 Architettura JADE……………………………………………………………………53
2.6.2 Message Transport Service…………………………………………………………...55
2.6.3 IMTP………………………………………………………………………………….56
2.6.4 Special agents………………………………………………………………………..57
2.6.5 Fault tolerant platform……………………………………………………………….63
2.6.6 Security in JADE…………………………………………………………………….67
2.6.7 Add-on per dispositivi mobili………………………………………………………..70
Capitolo 3: Implementazione del prototipo..………………………………………………..82
3.1 Procedura di handling “prova motori”…………………………………………………..82
3.2 Prototipo in modalità stand-alone……………………………………………………….84
3.3 Scheduling ed esecuzione di behaviour…………………………………………………88
3.4 Agent communication…………………………………………………………………...90
3.5 Classi utilizzate………………………………………………………………………….91
3.6 Prototipo in ambiente wireless…………………………………………………………..98
3.7 Classi utilizzate………………………………………………………………………….101
3.8 Procedura di handling de-icing / de-snowing…………………………………………...102
Conclusioni e sviluppi futuri…………………………………………………………………106
Bibliografia…………………………………………………………………………………...108
Indice delle figure
Figura 1: schema aree aeroportuali ……………………………………………..9
Figura 2: esempio di posizionamento handling…………………………………17
Figura 3: servizio di follow me………………………………………………….19
Figura 4: servizio di push back…………………………………………………..21
Figura 5: operazioni di rifornimento……………………………………………..22
Figura 6: de-icing………………………………………………………………...23
Figura 7: esempio di architetture di agenti reattivi……………………………....41
Figura 8: architettura PRS……………………………………………………….42
Figura 9: architettura a strati……………………………………………………..43
Figura 10: contract net…………………………………………………………...45
Figura 11: modello di riferimento FIPA………………………………………....47
Figura 12: formato dei messaggi………………………………………………....48
Figura 13: parametri di un messaggio FIPA compliant…………………………..49
Figura 14: FIPA communicative act……………………………………………...50
Figura 15: architettura con un insieme di piattaforme…………………………....54
Figura 16: message transport protocols…………………………………………..56
Figura 17: interfaccia Dummy Agent………………………………………….....58
Figura 18: interfaccia Introspector Agent………………………………………...59
Figura 19: interfaccia Sniffer Agent……………………………………………...60
Figura 20: diagramma delle classi degli agenti in JADE………………………...62
Figura 21: main-container replication……………………………………………64
Figura 22: parametri di configurazione accesso DB……………………………..65
Figura 23: JADE-LEAP run time environment………………………………….73
Figura 24: LEAP IMTP………………………………………………………….75
Figura 25: split execution mode…………………………………………………76
Figura 26: modalità di esecuzione JADE-LEAP………………………………...77
Figura 27: il mediatore……………………………………………………….......78
Figura 28: procedura di start up di uno split container………………………......80
Figura 29: procedura di riconnessione…………………………………………...81
Figura 30: accompagnamento in prova motori con traino………………………83
Figura 31: schema accompagnamento in prova motori senza traino…………….84
Figura 32: interfaccia dell'RMA con due main-container………………………..86
Figura 33: finestra di dialogo JADE-S…………………………………………...87
Figura 34: path di esecuzione del thread di un agente……………………………89
Figura 35: jade “asynchronous message passing”………………………………..90
Figura 36: interfaccia duty manager……………………………………………...93
Figura 37: finestra relativa alla procedura attivata……………………………….93
Figura 38: interfaccia di un handling agent………………………………………95
Figura 39: PDA Hp IPAQ………………………………………………………...99
Diagrammi e schemi
Schema 1.1: duty manager………………………………………………………...25
Schema 1.1.1: duty manager……………………………………………………26-27
Schema 1.2: follow me…………………………………………………………….29
Schema 1.3: tecnici dell’aeroporto………………………………………………...30
Schema 1.4: push back…………………………………………………………….31
Schema 1.5: De-icer……………………………………………………………….32
Schema 1.6: ulteriori funzionalità…………………………………………………33
Schema 1.7: architettura sistema…………………………………………………..35
Diagramma 3.1: sequence diagram comunicazione topic-based…………………97
Diagramma 3.2: class diagram prototipo stand-alone…………………………….98
Diagramma 3.3: sequence diagram comunicazione non topic-based……………104
Diagramma 3.4: class diagram prototipo in ambiente wireless………………….105
Introduzione
Questo lavoro di tesi riguarda la progettazione e l’implementazione di un sistema di supporto
per la fornitura di servizi in ambito aeroportuale.
La maggior parte del lavoro è stato svolto presso lo stabilimento di SELEX s.p.a.,
sito in Giugliano (NA), una restante parte è stata svolta al D.I.S. (Dipartimento di Informatica e
Sistemistica) dell’Università di Napoli Federico II.
Dopo una fase iniziale di studio di documenti relativi allo scenario di riferimento e delle
tecnologie presenti si è passati alla progettazione e all’implementazione di un prototipo.
Dato che l’obiettivo era creare un sistema di supporto al “ramp management”, cioè alla
gestione dei mezzi di rampa, sono state analizzati in dettaglio i mezzi e le procedure di
handling.
Quest’analisi ha portato ad un insieme di requisiti e di diagrammi UML che hanno aiutato la
scelta della tecnologia e lo sviluppo dell’applicazione.
I requisiti più importanti sono la necessità di attuare procedure in modo automatico e il
supporto che il sistema deve offrire in ambiente mobile.
In base a questi requisiti è stata fatta una ricerca delle tecnologie presenti e come soluzione si è
pensato ai sistemi multiagente.
Questi rispettano i requisiti di progetto e si adattano bene allo scenario di riferimento, sono una
tecnologia che permette l’interazione e la cooperazione tra i vari attori del sistema, in modo da
poter creare un “ autonomous system”.
In particolare per implementare il nostro sistema multiagente si è scelto, come framework,
JADE ( “Java Agent Development Framework” ).
Questo è stato sviluppato da TILab s.p.a ( Telecom Italia Lab ) in collaborazione con
l’Università di Parma, ed è scaricabile gratuitamente dal suo sito internet.
Esso gode di buone caratteristiche: è open source, è scritto completamente in java, fornisce un
ottimo supporto in fase “run time” , e dispone di una serie di agenti, già implementati, che
permettono di monitorare lo stato della piattaforma e degli agenti ad essa connessi.
E’ stato poi sviluppato un prototipo, che permette di attivare varie procedure di handling in
modo automatico.
Tra le procedure studiate sono state considerate quella di accompagnamento in posizione prova
motori e quella di de-icing / de-snowing.
Queste due erano spiegate abbastanza dettagliatamente, la prima inoltre implicava l’utilizzo di
più mezzi di rampa e quindi di più agenti.
Sono state sviluppate delle interfacce che permettono di avviare le procedure, di visualizzare i
messaggi inviati da altri agenti e lo stato degli agenti connessi al sistema.
Andrebbero comunque implementate altre procedure ed andrebbero effettuate delle simulazioni
che permettono la valutazione delle prestazioni del prototipo in uno scenario più complesso e
con un maggior numero di nodi.
Capitolo 1 - Ramp management
Capitolo 1
Ramp Management
Questo elaborato di tesi ha come obiettivo lo sviluppo di un sistema di supporto alle decisioni per il
ramp management. In questo capitolo verrà illustrato dapprima lo scenario di riferimento,
l’aeroporto, e poi la funzione del ramp management.
1.1 Scenario di riferimento
Per aeroporto si intende: ogni località destinata anche in via temporanea all’approdo ed allo
stazionamento degli aeromobili.
E’ utile fare una classificazione delle aree di un aeroporto che possono essere suddivise in base alle
operazioni che avvengono in esse:
1. Area di atterraggio
2. Area di movimento
3. Area di manovra
L’area di atterraggio è l’area destinata alle manovre di atterraggio e decollo. Si potrebbe tendere ad
associare l’Area di atterraggio alla pista di decollo, in realtà ciò è restrittivo perché possono esistere
anche altre aree di decollo destinate ad esempio agli elicotteri o agli aeromobili VTOL ( Vertical
Take-off and Landing ).
L’area di manovra è definita come quella parte dell’aeroporto usata per il decollo, atterraggio e per
il rullaggio degli aeromobili escludendo i piazzali.
Per via di rullaggio, su di un aerodromo terrestre, si intende un percorso adibito al rullaggio degli
aeromobili, che intende garantire un collegamento tra due parti dell’aerodromo stesso.
Pertanto fanno parte dell’area di manovra le piste e le aree di atterraggio nonché tutte le vie di
circolazione che conducono a tali zone.
Non fanno parte di tale area la zona di manutenzione, gli hangars, e i piazzali di parcheggio.
8
Capitolo 1 - Ramp management
L’area di movimento per definizione è quella parte di un aerodromo che dev’essere utilizzata per il
decollo, l’atterraggio ed il rullaggio degli aeromobili comprendente l’area di manovra ed i piazzali,
ossia qualsiasi area pavimentata o non, sulla quale un aeromobile può transitare.
Tale area comprende quindi oltre alle aree di atterraggio e alle taxiways ( vie di rullaggio), anche i
piazzali di parcheggio, le piazzole prova motore e i piazzali della zona di manutenzione.
I piazzali ( aprons ) sono previsti ovunque sia necessario permettere l’imbarco e lo sbarco dei
passeggeri, il carico e lo scarico di merci e di posta, le operazioni di servizio degli aeromobili
associate con il rifornimento, le pulizie, il carico di vettovaglie, lo scarico di rifiuti, i controlli e la
piccola manutenzione, senza interferire con il traffico dell’aerodromo.
Un esempio di suddivisone dell’area aeroportuale è quello in figura:
Figura 1: Schema aree aeroportuali
9
Capitolo 1 - Ramp management
Nella figura in blu viene evidenziata l’area di manovra, in verde l’area dell’apron ed in rosso l’area
destinata alla circolazione dei veicoli interna all’aeroporto. L’area di movimento comprende tutte e
tre le aree mentre l’area di atterraggio comprende l’area blu escluse le vie di rullaggio.
1.2 Gestione aeroportuale
Le infrastrutture degli aeroporti statali per il traffico commerciale sono per la massima parte di
proprietà demaniale.
La loro gestione però molte volte è affidata a società esterne, soggetti pubblici o privati o a
partecipazione mista a cui è affidata la gestione dell’opera e di qualunque sua parte.
La procedura di affidamento consente allo stato di mantenere la proprietà delle strutture ed al
gestore di occuparsi della manutenzione, della costruzione di nuove strutture e della gestione
economica dell’opera per un determinato periodo di tempo.
La gestione aeroportuale può essere sostanzialmente di tre tipi:
1. Gestione totale
2. Gestione parziale
3. Gestione diretta
Gestione totale: l’intero aeroporto, incluse le infrastrutture di volo, è affidato ad un unico
concessionario. Di questa tipologia sono gli aeroporti di Malpensa, Linate, Fiumicino, Ciampino,
quelli di Genova e di Torino.
In questo caso le attività affidate alle società di gestione riguardano:
•
Manutenzione ordinaria e straordinaria delle infrastrutture.
•
Predisposizione di servizi ( fornitura di energia, di illuminazione, di acqua, riscaldamento, il
condizionamento, la depurazione, lo smaltimento rifiuti, la pulizia ed il sistema informativo
).
Nel caso di gestione parziale le infrastrutture di volo rimangono dello stato ( ENAC [1]), mentre
l’affidamento in concessione riguarda le aerostazioni e le relative pertinenze.
Nella gestione diretta invece è l’ENAC che provvede direttamente alla realizzazione e alla
manutenzione dei beni aeroportuali, mentre l’assistenza a terra è di norma effettuata in
10
Capitolo 1 - Ramp management
auto-produzione dalle stesse compagnie aeree.
1.3 Entità aeroportuali
All’interno di un aeroporto sono presenti vari enti che hanno una funzione di supervisione e di
coordinamento.
•
Gestore aeroportuale
•
Operatore aeroportuale
Il gestore aeroportuale, già in precedenza citato, è il soggetto cui spetta il compito di amministrare
e gestire le infrastrutture di scalo, e di controllare le attività dei vari operatori presenti all’interno
dell’aeroporto. Ad esempio nel caso del sistema aeroportuale milanese tale ruolo è svolto da SEA
[2], secondo una convenzione stipulata con ENAC.
Per operatore aeroportuale si intende: gli handlers cioè i servizi di assistenza aeroportuale (
biglietteria, rifornimento aeromobili, guida al parcheggio etc ), gli enti o società che prestano servizi
di assistenza a terra all’interno dell’aeroporto e gli operatori commerciali coinvolti nell’attività
operativa di scalo.
Gli operatori che prestano assistenza devono essere in possesso dell’attestazione di idoneità
rilasciata da ENAC.
Tutti gli operatori presenti nello scalo devono prevedere una struttura di coordinamento operativo,
che garantisca la gestione e il controllo delle operazioni di propria competenza. Tale struttura deve
operare in modo integrato con le attività di supervisione e coordinamento dello scalo, svolte dal
gestore aeroportuale attraverso la sua funzione di Coordinamento Scali.
In particolare per ogni problematica che abbia conseguenze sulla normale operatività dello scalo, gli
operatori, devono fare riferimento al Duty Manager.
Questa entità scambia informazioni con gli operatori aeroportuali e con gli enti di stato interessati
per definire congiuntamente la risoluzione di criticità operative o emergenze che possono limitare la
capacità operativa dello scalo.
La funzione di supervisione e di coordinamento sul complesso aeroportuale dev’essere continuativa
per tutte le 24 ore.
11
Capitolo 1 - Ramp management
Il coordinamento scali deve ricevere dagli operatori aeroportuali e dagli enti di stato le informazioni
relative all’operatività dei voli e alla capacità operativa disponibile per l’erogazione dei servizi
aeronautici diretti ed indiretti.
Le informazioni raccolte vengono utilizzate dal Duty Manager per valutare se necessario un
intervento specifico o per valutare l’operatività dello scalo, infatti il Duty Manager utilizza
strumenti di analisi statistica per analizzare i principali parametri utilizzati per misurare il livello di
servizio dello scalo.
Esso provvede a trasferire queste informazioni opportunamente elaborate agli enti responsabili ed
alle diverse linee di attività.
Il coordinamento scali effettua il monitoraggio ed il controllo dell’andamento delle diverse linee
operative di competenza al fine di garantire il massimo rispetto dei criteri gestionali definiti per le
risorse di scalo.
Allo scopo di risolvere situazioni di criticità operativa, il coordinamento scali si avvarrà del diritto
di richiedere particolari prestazioni di assistenza da parte degli operatori presenti sullo scalo, anche
per voli non di diretta competenza. L’operatore compatibilmente con le risorse al momento
disponibili, dovrà in tal caso garantire l’assistenza ai soggetti che pur non essendo suoi clienti, la
richiedano. In particolare dovrà fornire la propria collaborazione per le operazioni di soccorso, in
conformità alle disposizioni impartite dagli enti competenti.
1.3.1
Sistema informativo di scalo
Il sistema informativo di scalo è denominato Base Dati Voli ( BDV ). Esso permette la gestione
dell’archivio degli orari dei voli e il monitoraggio operativo; ha il compito di gestire in modo
centralizzato le fasi di generazione, aggiornamento e diffusione delle informazioni operative di
scalo.
Le informazioni principali, aggregate e organizzate, sono identificate essenzialmente dal seguente
insieme di dati:
•
Scalo di origine
•
Orari di arrivo
•
Numero di volo in arrivo
•
Tipo aeromobile
12
Capitolo 1 - Ramp management
•
Numero volo in partenza
•
Orari di partenza
•
Scalo di destinazione
Principali funzioni del sistema BDV:
•
Mantiene memorizzati gli orari stagionali delle compagnie aeree operanti sullo scalo,
rendendoli disponibili in lettura e per i periodici aggiornamenti.
•
Produce, a partire dai precedenti, gli orari operativi giornalieri, acquisendo in essi, eventuali
modifiche, ignote all’orario stagionale e provenienti direttamente dalle compagnie ( voli
cancellati, voli charter, voli sostitutivi, ecc ), rendendole disponibili in lettura a qualunque
sistema ne abbia necessità
•
Mantiene aggiornati i dati di monitoraggio operativo provenienti dai diversi sistemi
permettendo di archiviarli in un’apposita base dati di raccolta storica.
Il sistema informativo mette a disposizione i sottosistemi e i dati a tutti gli operatori aeroportuali, al
fine di garantire il corretto scambio delle informazioni sulle attività operative dello scalo.
Il scalo gestisce e distribuisce, attraverso il sistema BDV, in modalità standard le seguenti
informazioni:
•
Identificatori del volo e dati di orario operativi
•
Identificatori di movimento, dati di orario e di operatività programmati
•
Stato operativo del volo
•
Risorse di scalo associate al volo
Mentre gestisce e distribuisce a richiesta, i seguenti dati:
•
Dati di carico finalizzati all’handling del volo
•
Specifiche di servizio
•
Risorse di handling associate al volo
•
Parametri di scalo
13
Capitolo 1 - Ramp management
1.4 Servizi di handling
Una parte fondamentale dei servizi forniti all’utenza sono i servizi di handling, cioè tutti i servizi di
assistenza a terra agli aeromobili, passeggeri, bagagli, merci e posta, ed alle operazioni in pista.
Con il termine handling si è soliti indicare tutti i servizi di assistenza aeroportuale:
•
Prestazioni rese ai passeggeri: biglietteria, accettazione, informazioni.
•
Prestazioni inerenti ai velivoli: carico e scarico, pulizie, rifornimenti, guida al parcheggio.
•
Prestazioni inerenti le merci: carico e scarico, stoccaggio, documentazione.
L’ENAC, per ragioni inerenti la sicurezza, alla capacità o allo spazio disponibile nell’aeroporto, può
limitare il numero di prestatori di alcune categorie di servizi ( assistenza bagagli, assistenza
operazioni in pista, assistenza merci e posta, etc.); questi servizi hanno, quindi, una infrastruttura di
controllo centralizzata.
1.4.1 Servizi di rampa
Il termine mezzi di rampa sta ad indicare tutti quei mezzi che sull’airside sono adibiti ai servizi di
handling, per tutti i velivoli in fase di stazionamento o di movimento sull’apron.
Questi veicoli, semoventi e non, sono utilizzati dagli operatori del settore per le seguenti funzioni:
•
Assistenza al parcheggio del velivolo;
•
Assistenza bagagli, merci, posta, carico e scarico aereo;
•
Trasporto dell’equipaggio;
•
Pulizie di bordo;
•
Climatizzazione della cabina;
•
Rimozione neve o ghiaccio o sbrinamento del velivolo;
•
Assistenza all’avviamento del velivolo;
•
Assistenza al parcheggio del velivolo;
•
Assistenza ai passeggeri in partenza, in arrivo o in transito;
•
Guida dell’aereo all’arrivo o alla partenza negli spostamenti sull’apron;
•
Rifornimento del velivolo di carburante e di acqua potabile;
14
Capitolo 1 - Ramp management
•
Servizi di catering;
•
Eventuale manutenzione del velivolo;
Tali servizi sono svolti da un insieme di mezzi che sono l’oggetto del ramp management.
Infatti il ramp management è un servizio che si occupa della gestione dei di rampa, che
costituiscono l’handling aeroportuale. I mezzi di rampa sono:
I follow me: mezzi che si occupano di accompagnare l’aeromobile dall’area di manovra alla
piazzola di sosta cui è assegnato e viceversa.
In particolare prendono in consegna dalla torre di controllo ( dal controllore ENAV [3] ) l’aereo, in
corrispondenza dell’area di manovra e lo guidano lungo il piazzale di parcheggio precedendolo.
Sono i soli mezzi ad avere la precedenza assoluta ed a non dover obbligatoriamente rispettare la
segnaletica orizzontale del piazzale se ciò garantisce il rispetto dei livelli di sicurezza delle
operazioni a terra.
Tale mezzi inoltre accompagnano anche i mezzi esterni sul sedime aeroportuale.
Gli interpista: autobus di diverse grandezze, utilizzati per il trasporto dei passeggeri e di equipaggi
tra terminal ed aeromobili, qualora il layout aeroportuale non garantisca la presenza dei loading
bridge atti a tale funzione.
I loading bridge: ponti mobili di carico su ruote o su binari. Fanno parte delle strutture centralizzate
sotto il diretto controllo del gestore aeroportuale e provvedono alla sostituzione dei servizi di: GPU,
condizionamento della cabina, rifornimento acqua potabile e di carburante.
Le scale passeggeri: scale semoventi o non che consentono ai passeggeri e all’equipaggio di
scendere o di salire su aeromobili in scalo, qualora non siano raggiunti da loading bridge.
Gli elevatori per passeggeri disabili: mezzi semoventi utilizzati per consentire l’imbarco e lo sbarco
di passeggeri portatori di handicap, a cui sia impedita la normale deambulazione. La procedura
impone che tali passeggeri siano imbarcati prima degli altri e sbarcati dopo che gli altri abbiano
lasciato il velivolo.
I baggage dolly: carrelli da traino adoperati per il trasporto dei bagagli e/o merci sia in arrivo che in
partenza. Hanno una capacità di 2500 Kg e possono raggiungere una velocità massima di 30 Km/h,
sono presenti due tipologie: coperti e scoperti, primi possono essere utilizzati in qualsiasi
condizione climatica, in modo da garantire un trasporto sicuro dei bagagli e merci.
15
Capitolo 1 - Ramp management
I trattori leggeri: sono trattori piccoli e maneggevoli utilizzati per la movimentazione dei convogli
di baggage dolly, di container e di cargo dolly sulla superficie dell’apron. Sono efficienti in
qualsiasi condizione climatica ed hanno mediamente una capacità di carico di 80 tonnellate.
I conveyor belt loader : nastri trasportatori utilizzati dagli operatori di rampa per velocizzare le
operazioni di carico e scarico bagagli e merci dai velivoli. Hanno una capacità di carico di 120
kg/metro di nastro.
I push back: sono trattori pesanti utilizzati per spostare un aereo in fase di decollo, quando questo
deve lasciare la piazzola, dove si trova in “stallo”, per recarsi nell’area di manovra e decollare,
senza effettuare tale operazione in “self manoeuvering”.
Hanno una grande capacità di carico, infatti sono in grado di spostare anche aerei di grosse
dimensioni.
Elevatori per servizio di catering: mezzi utilizzati per il trasporto e lo stivaggio di cibo e bevande a
bordo dei velivoli.
I GPU ( Ground Power Unit ): sono generatori di potenza utilizzati da velivoli sprovvisi di
APU ( Auxiliary Power Unit ). Tale unità genera energia sia elettrica che sottoforma di aria
compressa, utilizzate per l’alimentazione degli impianti elettrici e dei sistemi pneumatici di bordo.
Possono anche supplire al fabbisogno di energia elettrica del velivolo a motori spenti, quando
staziona sull’apron per lunghi periodi di tempo.
I cargo loader: sono utilizzati per le operazioni di carico e scarico di velivoli che trasportano merci.
Hanno una capacità di carico di circa 7300 Kg ed una velocità massima di 10 Km/h. Le dimensioni
della piattaforma di carico sono standardizzate in funzione del numero e del tipo di unità di carico
da spostare. Le unità di carico adibite al trasporto merci hanno dimensioni specifiche prestabilite
dalla IATA [4] ed identificate tramite un codice alfanumerico.
I cargo dolly: sono piattaforme per il carico dei container, aventi capacità di carico di 7300 Kg,
trainate da trattori leggeri.
Gli ASU ( Aircraft Starter Unit ): veicoli semoventi o a rimorchio utilizzati per agevolare
l’accensione di un velivolo in partenza. Inviano aria ad una determinata pressione, al sistema
pneumatico dei compressori dei turboreattori.
I veicoli per il rifornimento di carburante: autobotti utilizzate per il rifornimento dei velivoli. Sono
equipaggiati con una scala a rimorchio utilizzata dagli operatori per raggiungere i bocchettoni sotto
le ali del velivolo. Visti i rischi di elevate infiammabilità del combustibile utilizzato dai velivoli, le
operazioni di rifornimento devono avvenire sempre nel massimo rispetto delle norme di sicurezza.
Ogni piazzola che ospita un velivolo viene sempre comunque dotata di particolari tipi di estintori
utilizzabili nel caso si verifichino situazioni pericolose.
16
Capitolo 1 - Ramp management
I veicoli di servizio toilette: vengono utilizzati a richiesta, durante lo stazionamento dei velivoli, con
l’ausilio di mezzi, dotati di una piccola cisterna, può essere effettuato il servizio di evacuazione
delle toilette di bordo.
I veicoli di rifornimento acqua potabile: piccole autobotti che permettono il rifornimento dei
serbatoi idrici dei velivoli rimasti sprovvisti di acqua potabile, durante lo stazionamento. La
procedura impone che, ogni volta che viene effettuato il rifornimento di un velivolo, l’intera
cisterna debba essere scaricata e rifornita nuovamente.
In figura 2 riportiamo un esempio del posizionamento di questi mezzi di rampa:
Figura 2: esempio di posizionamento handling
17
Capitolo 1 - Ramp management
I veicoli vengono posizionati radialmente, così che il posizionamento di uno di essi non ostacoli il
movimento degli altri. Inoltre durante il rifornimento di un velivolo, tutti i vari mezzi di rampa sono
provvisti di un’opportuna via di fuga, che velocizza le operazioni di sgombero della piazzola, ad
esempio in caso di incidente.
1.4.2 Funzionalità
In questo paragrafo vengono esposte, in modo più preciso, le funzionalità di alcuni elementi
descritti in precedenza, alfine di individuarne i compiti precisi.
Ognuno di questi viene coordinato e supervisionato dal coordinamento scali ( Sala di controllo ),
che definisce la procedura operativa da attivare.
I primi i servizi di cui si parla sono quelli che costituiscono l’apron management. Questi servizi
erogati congiuntamente dalla società di gestione ed ENAV, hanno lo scopo di garantire il
movimento di aeromobili sul piazzale in condizioni di sicurezza ed efficienza operativa.
L’apron management opera un coordinamento informativo tra i soggetti responsabili dei servizi di
ground handling e le funzioni ENAV che amministrano l’accesso alle infrastrutture dello scalo.
La sala apron è situata all’interno della torre di controllo, a norma della regolamentazione I.C.A.O.
[5] e nel rispetto delle competenze, il servizio ha l’obiettivo di:
•
Ridurre al minimo il rischio di conflitti tra aeromobili e veicoli;
•
Ridurre al minimo il rischio di conflitti tra veicoli e veicoli;
•
Migliorare la sicurezza degli operatori che si muovono sull’apron senza l’ausilio di mezzi
semoventi;
•
Raggiungere un’efficace gestione del flusso di traffico;
Il coordinamento scali fornisce il servizio di follow me agli operatori nelle seguenti condizioni
operative:
ƒ
Guida degli aeromobili sul piazzale e sulle vie di rullaggio in condizioni di scarsa
visibilità ( su richiesta della compagnia aerea o della torre );
ƒ
Movimento degli aeromobili per motivi tecnici od operativi, non inerenti le
operazioni di atterraggio e decollo, sulle vie di rullaggio in aree coordinate dalla
torre di controllo: rientrano in questa casistica i decentramenti per prova motori o
18
Capitolo 1 - Ramp management
riposizionamento tra i due terminal. Per questa classe di eventi il servizio è
obbligatorio;
ƒ
Guida degli aeromobili al parcheggio, in condizioni particolare e/o su richiesta della
compagnia;
ƒ
Accompagnamento di mezzi esterni sul sedime aeroportuale, che vengono autorizzati
alla circolazione all’interno del sedime a condizione che siano guidati dal mezzo
follow me. Il servizio in tale situazione è obbligatorio;
ƒ
Guida degli aeromobili in condizioni particolari di limitazioni del movimento sul
piazzale per lavori in corso. Il servizio è reso obbligatorio da NOTAM [6];
ƒ
Guida degli aeromobili a fronte di manovre errate compiute dagli stessi o situazioni
di conflitto nell’accesso alle taxi-ways e link. Il servizio è richiesto dalla torre o dal
coordinamento scali, cioè anche quando non richiesto dalla compagnia aerea è
comunque obbligatorio usufruire del servizio;
Figura 3: Servizio di follow me
19
Capitolo 1 - Ramp management
Traino aeromobili:
Il servizio comporta l’utilizzo di un push back ed è fornito nelle seguenti situazioni:
ƒ
Richiesta inoltrata dalla compagnia: la richiesta di movimentazione di un aeromobile da
parte di una compagnia dev’essere inoltrata al coordinamento scali.
Le richieste saranno soddisfatte in base alla disponibilità di risorse ed alle implicazioni
operative connesse alle operazioni di push-back ed ai rullaggi.
In caso di traino alla posizione prova motori la compagnia dovrà fornire un orario stimato
per il rientro.
ƒ
Richiesta effettuata dal coordinamento scali: in questo caso è il coordinamento scali ad
inoltrare la richiesta alla compagnia aerea.
ƒ
Riposizionamento da arrivo per partenza e viceversa, il coordinamento scali provvederà, il
giorno precedente il programma di massima di tali operazioni, ad inoltrare la richiesta alla
compagnia aerea.
20
Capitolo 1 - Ramp management
Figura 4: Servizio di push back
Operazioni di rifornimento:
Il rifornimento di carburante agli aeromobili deve essere effettuato nel rispetto delle norme di
sicurezza.
Le operazioni di rifornimento si intendono eseguite a cura e sotto la responsabilità dell’esercente
dell’aeromobile, indipendentemente dalle misure di sorveglianza e di controllo adottate dalle
autorità aeroportuali.
L’esercente dell’aeromobile deve assicurare la presenza di una persona competente, responsabile
del rifornimento, che garantisca l’osservanza delle procedure e sia in contatto con il responsabile
del servizio della società petrolifera. L’esercente e la compagnia petrolifera possono concordare che
le funzioni di rifornimento vengano effettuate dallo stesso responsabile della compagnia petrolifera.
21
Capitolo 1 - Ramp management
Figura 5: operazioni di rifornimento
De-icing / De-snowing:
Le procedure di de-icing e de-snowing, anti-icing e de-snowing vengono svolte sotto responsabilità
del vettore aeroportuale, che deve farne prima richiesta al Coordinamento Scali.
Lo stoccaggio del liquido utilizzato per le operazioni di de-icing e di de-snowing è a carico del
Coordinamento Scali che è responsabile di renderlo in quantità adeguata al volume degli interventi
prevedibili per le caratteristiche ambientali dello scalo e per la tipologia ed i volumi di traffico
programmati. Il mezzo che permette l’operazione di de-icing è il de-icer presente in figura 5.
22
Capitolo 1 - Ramp management
Figura 6: de-icing
Dopo aver esposto dettagliatamente le funzioni di alcuni dei servizi di apron management, parliamo
dei Loading bridge:
Il coordinamento scali definisce un programma stagionale, sulla base del traffico programmato, di
pre-assegnazione delle posizioni di stazionamento aeromobili.
I dati di pre-assegnazione sono distribuiti attraverso i sistemi di scalo agli operatori interessati (
handling agent, compagnia aerea, etc ).
Il coordinamento scali definisce nella giornata precedente a quella operativa, il programma di
assegnazione giornaliero, sulla base delle reali condizioni di traffico sullo scalo e della possibilità di
impiego delle strutture ( es. presenza guasti, attività di manutenzione programmata ).
Tra le unità preposte all’attività di assegnazione dei bridge e gli operatori aeroportuali coinvolti,
devono essere scambiate informazioni che possono interessare l’operatività dello scalo, relative a:
23
Capitolo 1 - Ramp management
•
Variazioni dell’attività operativa a terra ( aggiornate dall’handling );
•
Variazioni dell’orario dei voli ( aggiornate dalle compagnie aeree);
•
Malfunzionamenti o guasti delle infrastrutture o della strumentazione: la persona che rileva
l’anomalia o il malfunzionamento tecnico deve darne comunicazione, per quegli impianti
con impatto diretto sulla capacità aeronautica, al proprietario
dell’impianto/sistema/attrezzatura e quindi alla sala controllo del coordinamento scali che
successivamente informerà i reparti manutentivi; mentre per quegli impianti che non hanno
un diretto impatto sulla capacità operativa dovrà darne comunicazione ai reparti manutentivi
che successivamente informeranno la sala controllo del coordinamento scali.
Per ulteriori dettagli si rimanda a [7];
1.4.3 Schematizzazione funzionalità del sistema
Riportiamo adesso un insieme di schemi che permette di comprendere la funzione del ramp
management ed analizzare il sistema che permette questo tipo di funzione. Si procederà poi ad
un’analisi dei requisiti. Gli attori considerati in questo insieme di grafici sono: il duty manager ed i
servizi di follow me, push back, Tecnici dell’aeroporto, de-icer.
Quelli non considerati hanno all’incirca funzioni analoghe.
Il primo schema riporta il duty manager, che è l’attore che effettua una pianificazione e prende
decisioni sulle azioni da compiere.
Esso per gestire i mezzi di rampa compie tre azioni principali:
comunicare con i servizi di ramp management, assegnare loro compiti, fare un monitoring del
sistema. Nello schema 1.1 sono riportate le sue funzioni.
Quindi i requisiti di questo attore saranno:
•
Un sistema che permette di comunicare; tale sistema deve avere un accesso ristretto e sicuro,
inoltre deve garantire una trasmissione dati efficiente;
•
Capacità di assegnare compiti;
•
Servizio che permette il monitoraggio del sistema in modo tale da controllare tutti i mezzi
presenti ed attivi all’interno dell’aeroporto;
24
Capitolo 1 - Ramp management
Schema 1.1: duty manager
Una vista più completa della funzione del duty manager è data dallo schema 1.1.1, dove gli attori
del ramp management sono indicati con il termine “operatore generico”.
Nello schema sostanzialmente ci sono questi due attori, duty manager ed un operatore generico, che
scambiano messaggi; questo tipo di comportamento è comune a tutti gli attori del ramp
management, che lo ereditano per specializzazione.
25
Capitolo 1 - Ramp management
System
Assegna i compiti ai mezzi di "ramp management"
Operatore generico
Duty manager
Comunica con i mezzi di "ramp management"
Effettua un monitoring del sistema
Schema 1.1.1: duty manager
Di seguito è riportata la descrizione in forma testuale dei casi d’uso del duty manager, in tutti i casi
d’uso il prerequisito è la possibilità di scambiare messaggi e quindi che ci sia un sistema atto a tale
funzione. Ci sono due tipi di estensioni: una è quella che si verifica quando un operatore non è
disponibile ( non connesso al sistema ), l’altra riguarda il caso d’uso “ effettua un monitoring del
sistema” che non può essere portato a termine se il sistema è inattivo.
26
Capitolo 1 - Ramp management
Nome caso d'uso: comunica con i mezzi di "ramp management"
Attori partecipanti: operatore generico, duty manager
Flusso di eventi:
1.Invia un messaggio
2.Riceve un messaggio
Prerequisiti:
1.Sistema che permette lo scambio messaggi
Extends:
1.L'operatore non è disponibile
Nome caso d'uso: effettua un monitoring del sistema
Attori partecipanti: duty manager
Flusso di eventi:
1.Il duty manager visualizza gli operatori connessi
2.Determina i piani relativi ad ogni operatore
Extends:
1.Sistema inattivo
Nome caso d' uso: assegna compiti ai mezzi di "ramp management"
Attori partecipanti: operatore generico, duty manager
Flusso di eventi:
1.Il duty manager decide quale task assegnare
2.Invia il task
3.Verifica la risposta
Prerequisiti:
1.Sistema che permette lo scambio messaggi
2.Conoscenza del task da assegnare
Extends:
1.L'operatore non è disponibile
Schema 1.1.1: duty manager
27
Capitolo 1 - Ramp management
Lo schema 1.2 è quello del servizio di follow me.
Questo operatore ha due casi d’uso propri e due ereditati dall’operatore generico prima esposto.
I casi d’uso quindi sono quattro: Comunica con gli altri mezzi, comunica con il duty manager,
accompagna mezzi esterni sul sedime aeroportuale, accompagna gli aeromobili sul piazzale e sulle
vie di rullaggio.
Quindi l’insieme dei requisiti di questo attore sono:
•
Un sistema per comunicare; questa volta, tale sistema, oltre a rispettare i requisiti precedenti
deve anche permettere al follow me di comunicare con gli altri mezzi di rampa per ottenere
da essi un attegiamento cooperativo.
Nello schema 1.2 inoltre viene riportata una specifica dei casi d’uso propri di questo attore:
“accompagna i mezzi esterni sul sedime aeroportuale” e “accompagna gli aeromobili sul piazzale e
sulle vie di rullaggio”.
L’estensione dei due casi d’uso è la stessa ed è quella che riguarda il guasto del sistema o una
situazione di allerta generica.
28
Capitolo 1 - Ramp management
Operatore generico
Accompagna i mezzi sul sedime aeroportuale
Follow me
Accompagna gli aeromobili sul piazzale e sulle vie di rullaggio
Nome caso d'uso: Accompagna i mezzi sul sedime aeroportuale
Attori partecipanti: Follow me
Flusso di eventi:
1.Il duty manager inoltra una richiesta
2.L'operatore richiede la posizione del mezzo
3.Il duty manager fornisce la posizione attuale
4.L'operatore richiede dove accompagnare il mezzo
5.Il duty manager fornisce la posizione e il percorso
5.L'operatore fornisce il risultato dell'operazione
Extends: Guasto generico o situazione di allerta
Prerequisiti: L'operatore è connesso ad un sistema
Nome caso d'uso: Accompagna aeromobili sul piazzale e sulle vie di rullaggio
Attori partecipanti:Follow me
Flusso di eventi:
1.Il duty manager inoltra una richiesta
2.L'operatore richiede la posizione del velivolo
3.Il duty manager fornisce la posizione attuale
4.L'operatore richiede dove accompagnare il velivolo
5.Il duty manager fornisce la posizione ed il percorso
6.L'operatore fornisce il risultato dell'operazione
Extends: Guasto generico o situazione di allerta
Prerequisiti: L'operatore è connesso ad un sistema
Schema 1.2: follow me
29
Capitolo 1 - Ramp management
Lo schema 1.3 riguarda il servizio di Tecnici dell’aeroporto.
Questo operatore ha un caso d’uso specifico e due ereditati dall’operatore generico
I casi d’uso quindi sono: comunica con gli altri mezzi, comunica con il duty manager, conosce la
posizione del velivolo.
I requisiti per questo servizio sono:
•
Un sistema per comunicare analogo al caso del follow me
.
Schema 1.3: tecnici dell’aeroporto
30
Capitolo 1 - Ramp management
Lo schema 1.4 riguarda il servizio di push back.
Oltre ad ereditare i casi d’uso dell’operatore generico ne ha uno specifico: “traino aeromobili”.
I casi d’uso quindi sono: comunica con gli altri mezzi, comunica con il duty manager traina gli
aeromobili.
Quindi l’insieme dei requisiti di questo attore sono:
•
Un sistema per comunicare analogo al precendente
Nome caso d'uso: traina gli aeromobili
Attori coinvolti: Push back
Operatore generico
Flusso di eventi:
1.Il duty manager inoltra la richiesta
2.L'operatore richiede la posizione del velivolo
4.Il duty manager risponde
5.L'operatore fornisce il risultato dell'operazione
Traina gli aeromobili
Push back
Extends: Guasto generico o situazione di allerta
Prerequisiti: L'operatore è connesso ad un sistema
Schema 1.4: push back
31
Capitolo 1 - Ramp management
Lo schema 1.5 riguarda il servizio di de-icer.
Questo oltre ad ereditare i casi d’uso dell’operatore generico ne possiede uno specifico: “De-icing /
De-snowing”.
I casi d’uso dunque sono: comunica con gli altri mezzi, comunica con il duty manager, De-icing /
De-snowing.
Quindi i requisiti di questo attore sono:
•
Un sistema di comunicazione con il duty manager.
Nome caso d'uso : De-icing / De-snowing
Attori coinvolti: De-icer
Operatore Aeroportuale
Flusso di eventi:
1.Il duty manager inoltra la richiesta
2.Il duty manager inoltra la posizione del velivolo
3.L'operatore risponde se disponibile
Extends: guasto generico o situazione di allerta
De-icing / De-snowing
Prerequisiti: l'operatore è connesso ad un sistema
De-icer
Schema 1.5: De-icer
32
Capitolo 1 - Ramp management
Infine riportiamo una funzione che può esser comune a tutti i mezzi di rampa cioè il caso d’uso
“comunica con gli altri mezzi di rampa“.
In questo modo si pensa di avere un attegiamento cooperativo di tutti i mezzi di rampa presenti, in
caso di allerta o di guasti.
Una delle due estensioni del caso d’uso riguarda il caso di un operatore malizioso che potrebbe
attentare alla sicurezza del sistema aeroportuale.
Operatore aeroportuale 1
Comunica con i mezzi di rampa
Operatore aeroportuale 2
Operatore aeroportuale 3
Nome caso d'uso: Comunica con i mezzi di rampa
Attori coinvolti: Operatore aeroportuale 1, Operatore aeroportuale 2, Operatore aeroportuale 3
Flusso di eventi:
1.Un operatore invia un messaggio ad un altro
Extends:
1.Guasto al sistema
2.Operatore malizioso
Prerequisiti:
1.Gli operatori sono connessi ad un sistema
2.L'operatore è stato autorizzato dal duty manager a comunicare
Schema 1.6: ulteriori funzionalità
33
Capitolo 1 - Ramp management
1.4.4 Requisiti non funzionali
:
1)Discovery degli attori presenti: deve essere presente un servizio che indica la disponibilità di un
attore ed eventualmente di ottenere un riferimento ad esso.
2)Utilizzo di tecnologie open source: si vogliono utilizzare le tecnologie open source presenti sul
mercato in particolare per la realizzazione dei servizi che il sistema deve fornire.
3)Portabilità dei servizi: capacità dei singoli servizi ed attori di poter migrare su piattaforme
diverse.
4)Tolleranza ai guasti: il sistema sviluppato deve essere tollerante ai guasti.
5)Fronteggiare la scarsa capacità dei dispositivi: le prestazioni devono essere adeguate anche in
ambiente mobile in cui bisogna far fronte alla scarsa disponibilità di risorse.
6)Cooperazione: si vuole fornire agli attori del sistema la capacità di cooperare.
7)Trasparenza dal sistema operativo: indipendenza da un particolare sistema operativo che può
essere disponibile su un dispositivo mobile su cui installare il sistema di supporto al ramp
management.
8)Scalabilità: deve essere possibile aggiungere nuovi componenti e funzionalità al sistema
34
Capitolo 1 - Ramp management
1.4.5 Architettura del sistema
Dopo aver illustrato gli attori, le loro funzionalità e requisiti possiamo dire che c’è una parte del
sistema comune a tutti gli attori. Questa parte è quella che garantisce la comunicazione che può
essere implementata grazie ad un framework che garantisca i servizi di cui il sistema ha bisogno: la
connessione ad un sistema, la comunicazione con altri utenti del sistema e quindi l’invio e la
ricezione di messaggi.
Questi servizi costituiscono i core services di questa applicazione.
Poi ci sono un insieme di procedure che costituiscono i casi d’uso di ogni specifico attore che
costituiscono servizi aggiuntivi che il sistema dovrebbe fornire.
Schema 1.7: architettura sistema
35
Capitolo 1 - Ramp management
Il sistema di ramp management così come deriva dalla trattazione precedente viene illustrato nello
schema 1.7.
I componenti di colore celeste rappresentano i servizi offerti dal sistema, questi sono suddivisi in
core services ed altri servizi.
I core services sono la registrazione di un utente, l’invio e la ricezione di un messaggio, il discovery
di nuovi utenti e tutta la parte di comunicazione che è comune a tutti gli utenti del sistema.
Gli altri servizi sono quelli propri di ciascun attore del sistema e dovranno essere implementati
seguendo i diagrammi in precedenza esposti.
36
Capitolo 2 – Sistemi multi-agente e JADE
Capitolo 2
Sistemi multi-agente e JADE
2.1 Motivi della scelta
Nel primo capitolo sono state messe in luce le caratteristiche che il framework di nostro interesse
deve offrire e i requisiti di cui abbiamo bisogno.
Dopo aver studiato le tecnologie presenti sul mercato è stata proposta l’architettura multi-agente ed
in particolare JADE.
I motivi di questa scelta sono:
1) Agenti autonomi e cooperativi: ogni attore del nostro sistema può essere un agente e quindi
agire autonomamente, ciò è molto importante in quanto il sistema che si vuole andare a
creare è un sistema autonomo.
In particolare verranno implementate delle procedure che richiedono esecuzioni automatiche
svolte dagli agenti. Inoltre gli agenti possono agire in modo cooperativo tra loro.
2) Gli agenti possono manifestare un comportamento di tipo “goal oriented” cioè può essere
assegnato un obiettivo comune a più agenti.
3) Un agente può essere reattivo, cioè percepisce l’ambiente e risponde ai suoi cambiamenti
4) Un agente può essere proattivo, cioè non agisce soltanto percepisce in relazione ai
cambiamenti dell’ambiente circostante,ma può anche prendere iniziativa mostrando un
comportamento “goal directed”.
5) Supporto in ambiente mobile: JADE fornisce un supporto in ambiente mobile con
un’implementazione per dispositivi mobili. Inoltre grazie ad un algoritmo di bilanciamento
del carico evita l’eccessivo consumo di risorse.
37
Capitolo 2 – Sistemi multi-agente e JADE
6) Supporto alla security: è presente in JADE un supporto alla sicurezza con autenticazione
degli utenti e criptazione dei messaggi.
7) Licenza di tipo open source: JADE è distribuito sotto licenza open source ( LGPL )
In questo capitolo viene illustrato il concetto di agente software di sistema multi-agente e le
principali caratteristiche di entrambi.
Viene poi posta l’attenzione su un particolare sistema, JADE ( Java Agent Development
Framework ), sviluppato da TILab di Torino in collaborazione con l’Università di Parma [8].
2.2 Gli Agenti Software
Un agente è un’entità software presente in ambienti vari ed eterogenei, capace di agire
autonomamente in questo ambiente, in modo da poter portare a termine gli obiettivi per i quali è
stato progettato.
La ragione dell’esistenza e della diffusione degli agenti va ricercata nel fatto che l’informatica si è
mossa sempre più verso cinque concetti:
1) Ubiquità: ubiquità delle risorse intesa nel senso di elaborazione mobile e di pervasive
computing.
2) Interconnessione: non si pensa più ai computer isolati ma interconnessi in sistemi distribuiti.
3) Intelligenza: i compiti che ci aspettiamo di poter delegare ai computer siano sempre più
complessi.
4) Delega: lasciare il controllo ai computer anche in situazioni critiche.
5) Human orientation: si tende sempre di più a ragionare sulle macchine in termini di concetti
e di metafore simili al modo in cui noi percepiamo il mondo.
Gli agenti siano utilizzati in molti ambiti, quali la robotica, sistemi di controllo, sistemi di
automazione e nel caso degli agenti assistenti.
Esempi di sistemi di controllo che utilizzano gli agenti software sono quelli della “ROCKWELL”
azienda che ha deciso di implementare gli agenti software sui suoi PLC, invece un esempio di
agenti assistenti sono quelli implementati dalla “MICROSOFT” che ha introdotto nella suite di office
38
Capitolo 2 – Sistemi multi-agente e JADE
degli Agenti Assistenti, con il compito di dare suggerimenti agli utenti per utilizzare al meglio i
prodotti.
Le caratteristiche degli agenti possono essere espresse attraverso degli aggettivi che ne descrivono
anche il funzionamento e l’utilità:
1) Autonomo: agisce senza un intervento esterno, ed ha il controllo delle sue azioni e del suo
stato interno.
2) Sociale: collabora con l’ambiente esterno e con altri agenti per il raggiungimento di un
obiettivo.
3) Reattivo: percepisce l’ambiente in cui si trova e risponde ai cambiamenti che avvengono in
esso.
4) Proattivo: agisce non soltanto in risposta ai cambiamenti dell’ambiente in cui si trova, ma
può anche prendere iniziativa mostrando comportamenti “goal-directed”.
5) Mobile: può migrare attraverso diversi nodi presenti nella rete.
6) Veritiero: non fornisce deliberatamente false informazioni
Inoltre altri aggettivi di un agente sono: persistenza, benevolenza, versatilità.
In un certo senso un agente può esser visto come un oggetto ( OOP ) con un obbiettivo, ma ci sono
alcune sostanziali differenze tra i due elementi:
Oggetto
•
•
•
Agente
Incapsula uno stato e lo controlla
Incapsula uno stato e lo controlla
attraverso i metodi.
attraverso i metodi ed i suoi obiettivi.
Passivo, non ha controllo sull’esecuzione
Attivo, decide quando e come
dei metodi.
agire.
Non autonomo.
Autonomo.
Il termine agente appartiene anche all’intelligenza artificiale, il cui compito è quello di replicare
l’intelligenza umana. Tipicamente però lo scopo dei sistemi multi-agente è più limitato, volendo
intendere sistemi capaci di fare qualcosa di utile in un ambiente spesso circoscritto.
39
Capitolo 2 – Sistemi multi-agente e JADE
Nonostante, questo i sistemi di agenti sono spesso considerati la più importante espressione della
DAI – Distributed Artificial Intelligence.
Ne sistemi multi-agente si tende spesso a ridurre l’intelligenza del singolo agente in favore
dell’intelligenza collettiva, infatti spesso l’attenzione è nel coordinamento più che nelle capacità del
singolo.
Nei MAS ( Multi-Agent System ) infatti gli obiettivi principali sono: il coordinamento, la
capacità/volontà di cooperazione, la negoziazione.
2.3 Architetture sistemi multi-agente
Ci sono vari tipi di architetture per sistemi multi-agente, esse possono essere suddivise in quattro
gruppi fondamentali:
1) Logic Based
2) Reattivi
3) BDI
4) Layered
Nel primo caso l’architettura è di tipo knowledge based, cioè l’ambiente è rappresentato in modo
simbolico, e gli obiettivi, per i quali l’agente è stato progettato, sono raggiunti attraverso tecniche di
ragionamento simboliche.
Il vantaggio di usare questo approccio è che la conoscenza umana, molte volte è di tipo simbolico,
e quindi codificarla, e trasmetterla ad un sistema è molto semplice. Inoltre una volta trasmessa
all’agente tale conoscenza, ad esempio dell’ambiente circostante, può essere semplice da
comprendere nel caso si voglia capire che tipo di ragionamento fa un agente.
Lo svantaggio è che la conoscenza può essere molto complessa, e la sua manipolazione può
rallentare molto il processo di esecuzione, di un agente, con tempi di risposta troppo lenti per essere
utilizzati.
La seconda architettura, basata su agenti di tipo reattivo, che prendono decisioni sulla base di un
meccanismo di tipo stimulus-response e si basano sul modello di Brooks [9].
Diversamente dalle architetture di tipo logic based, queste non hanno un modello di riferimento
simbolico dell’ambiente esterno, e perciò non utilizzano meccanismi complessi di ragionamento.
40
Capitolo 2 – Sistemi multi-agente e JADE
Questo modello può essere spiegato attraverso la figura 7, dove sono rappresentati degli strati di una
macchina a stati finiti, che sono connessi a sensori che trasmettono informazioni in tempo reale:
Figura 7: esempio di architetture di agenti reattivi
Questi strati formano una gerarchia di comportamenti, dei quali, quelli più bassi hanno meno
controllo rispetto a quelli più alti. In base a questo esempio si capisce che gli agenti, che rispettano
questo modello, percepiscono le condizioni ed agiscono ma non fanno una pianificazione.
Il vantaggio di questo approccio è che in scenari che cambiano rapidamente, abbiamo tempi di
risposta più brevi, lo svantaggio è che i dati provenienti dai sensori possono non essere sufficienti a
determinare l’azione da compiere.
Il terzo tipo di architettura è quella BDI (Belief Desire Intention) che trae origine dalla filosofia ed
offre una logica per definire gli stati mentali, di convinzione, desiderio, intenzione.
Le convinzioni sono le aspettative dell’agente rispetto all’ambiente esterno, i desideri di un agente
sono le preferenze rispetto ai cambiamenti dell’ambiente circostante e la sua linea d’azione, le
intenzioni sono il set di obiettivi per i quali l’agente è stato progettato.
Un’implementazione del modello BDI è PRS ( Procedural Reasoning System ) che si basa su
cinque concetti chiave: convinzioni, desideri, intenzioni, pianificazione, ed un interprete.
Rispetto ad un’architettura BDI sono stati aggiunti due elementi.
Il primo, la pianificazione, che rappresenta la linea d’azione, che un agente deve seguire per portare
a termine i suoi obiettivi ed il secondo, un interprete che seleziona l’azione da compiere in base alle
intenzioni correnti dell’agente.
41
Capitolo 2 – Sistemi multi-agente e JADE
Uno schema rappresentativo dell’architettura PRS è il seguente:
Figura 8: architettura PRS
L’ultima architettura considerata è quella stratificata che permette sia agenti di tipo reattivo che di
tipo deliberativo. Per ottenere questa flessibilità l’architettura è organizzata in strati di tipo
gerarchico. Ci sono due tipi di stratificazioni, quella orizzontale e quella verticale, nella prima tutti
gli strati sono direttamente connessi con l’input dato dai sensori e l’output è l’azione da compiere,
nella seconda l’informazione è passata solo ad uno strato alla volta.
Il vantaggio di un’architettura di tipo orizzontale è che se si necessita di n tipi di comportamenti c’è
bisogno soltanto di n strati, il principale svantaggio è che ciascuno strato rappresenta un agente e le
loro azioni possono essere inconsistenti, dando origine a conflitti.
Nel caso di un’architettura di tipo verticale il vantaggio è che l’interazione tra i diversi strati è molto
ridotta rispetto al caso orizzontale, lo svantaggio è che se c’è un guasto in uno strato l’intero sistema
viene bloccato, quindi è un’architettura intollerante ai guasti.
Uno schema di riferimento è quello in figura 9.
42
Capitolo 2 – Sistemi multi-agente e JADE
Figura 9: architettura a strati
2.4 Comunicazione e coordinamento
La comunicazione è una delle componenti più importanti in un sistema multi-agente, infatti gli
agenti per cooperare e coordonarsi tra loro hanno bisogno di scambiare messaggi.
Gli agenti comunicano tra loro usando speciali linguaggi di comunicazione che si basano sulla
teoria Speech act [9] [10], che prevedono una separazione tra il contenuto del messaggio ed il tipo
di messaggio ( performatives ), cioè l’intenzione che il messaggio vuole trasmettere.
Uno dei primi linguaggi di comunicazione tra agenti è stato il KQML [11], attualmente il
linguaggio per lo scambio messaggi tra agenti più utilizzato è FIPA ACL che deriva dallo stesso
KQML.
Gli aspetti principali di FIPA ACL, sono la possibilità di scelta tra diversi linguaggi per i contenuti
e tra vari tipi di protocolli di interazione.
Il coordinamento è un processo molto importante, tramite il quale gli agenti riescono a cooperare.
Ci sono diverse ragioni del perché gli agenti debbono cooperare:
1) Le azioni che gli agenti svolgono per il raggiungimento degli obiettivi possono creare
conflitti.
2) Gli obiettivi degli agenti possono essere comuni.
43
Capitolo 2 – Sistemi multi-agente e JADE
3)Gli agenti possono avere diverse capacità e conoscenze.
4)Gli obiettivi comuni possono essere raggiunti più rapidamente se più agenti lavorano su di
essi.
Ci sono diversi approcci al coordinamento tra gli agenti: Struttura organizzata, contract net, multiagent planning, negoziazione.
Nel primo tipo di approccio [12] il sistema multi-agente ha una struttura predefinita con dei ruoli e
path per comunicare e c’è un agente che ha una larga visione del sistema e forma una struttura
gerarchica.
Il paradigma di comunicazione tra gli agenti è di tipo master/slave o client/server, infatti è il
master che assegna i task e le risorse ai vari slave, riceve inoltre i messaggi che si scambiano i vari
agenti e crea dei piani.
Comunque un approccio di questo tipo con una struttura così centralizzata in molti casi è
inapplicabile, data la natura distribuita dei sistemi multi-agente.
Un altro approccio è quello della contract net [13] in questo caso abbiamo una struttura
decentralizzata e un agente può assumere due ruoli: manager e contraente.
Il concetto alla base di questo tipo di approccio è che se un agente non è in grado di svolgere un
determinato compito, in base alle proprie risorse, lo scompone in più sottoproblemi.
La risoluzione di questi problemi è assegnata agli agenti seguendo questi passi: il manager
annuncia il contratto, uno o più agenti rispondono all’offerta, il manager decide qual’è l’offerta
migliore e lo comunica. In figura 10 vengono rappresentati questi passi che portano alla
sottomissione del task.
44
Capitolo 2 – Sistemi multi-agente e JADE
Figura 10: contract net
Nell’approccio multi-agent planning [14] viene fatta una pianificazione che esprime in modo
dettagliato tutte le azioni che gli agenti compieranno, tutte le interazioni che ci saranno tra di loro
per compiere il set di obiettivi. Il planning può essere sia centralizzato che distribuito.
In quello di tipo centralizzato c’è un agente principale che riceve tutti i piani locali e parziali degli
agenti, analizza questi per rilevare contrasti e inconsistenze, dopodichè fa una modifica eliminando
tutte le possibili situazioni di conflitto che potrebbero sorgere e crea un piano generale che non
presenta conflitti.
Nel caso distribuito ciascun agente ha un modello del piano degli altri agenti, essi quindi
comunicano e migliorano i loro piani individuali eliminando i conflitti.
L’approccio negoziazione [15] consiste nel raggiungere un accordo sui problemi che si presentano,
può essere di due tipi, cooperativo o competitivo, in dipendenza dal comportamento degli agenti
coinvolti.
La negoziazione competitiva è usata in situazioni nelle quali gli agenti hanno degli obiettivi che
possono creare conflitti e non c’è un atteggiamento cooperativo. La negoziazione cooperativa è
utilizzata in situazioni in cui gli agenti hanno un obiettivo comune o un singolo task da eseguire.
In questo caso il sistema è pensato per portare a termine un solo obiettivo.
Inoltre c’è un ultimo approccio, Partial global planning [16], che unisce i punti di forza di altri tre:
struttura organizzativa, contract net e planning.
45
Capitolo 2 – Sistemi multi-agente e JADE
2.5 Lo standard FIPA
L’organizzazione internazionale FIPA ( Foundation for Intelligent Physical Agents [17] ), nata nel
1996, è un’associazione no-profit, che ha come scopo quello di fornire standards utili per le
industrie nella realizzazione di applicazioni commerciali.
In particolare ha studiato il problema dell’interoperabilità tra agenti formulando standards per vari
livelli: trasporto dei messaggi, semantica del linguaggio di comunicazione fra agenti intelligenti e
servizi di gestione di base ( pagine bianche e pagine gialle ).
FIPA fornisce un modello di riferimento ma nessuna implementazione fisica, i dettagli
dell’implementazione e le varie caratteristiche degli agenti dipendono dalle scelte progettuali degli
sviluppatori.
2.5.1 Agent management
FIPA ha creato un modello logico di riferimento per la creazione, registrazione, locazione,
comunicazione, migrazione e operazioni di agenti, questo modello consiste dei componenti presenti
nella figura 11.
46
Capitolo 2 – Sistemi multi-agente e JADE
:
Figura 11: modello di riferimento FIPA
Descrizione dei componenti:
Agent Platform ( AP ): un’infrastruttura fisica nella quale sono sviluppati i componenti. Essa
consiste di macchine, sistemi operativi e componenti FIPA per il management degli agenti ( che
vengono descritti di seguito). Il design interno della piattaforma è lasciato agli sviluppatori e non fa
parte dello standard, inoltre una singola piattaforma può risiedere su più host di conseguenza anche
gli agenti possono essere collocati su diverse macchine.
Agent: un agente è un processo che risiede all’interno di una piattaforma e tipicamente offre uno o
più servizi che possono essere pubblicati per renderli visibili ad altri agenti, la struttura di tali
servizi non è stata standardizzata. Esso deve avere almeno un gestore e deve essere identificato da
un proprio AID ( Agent Identifier ). L’AID è un’etichetta che viene utilizzata all’interno del sistema
per identificare in maniera univoca e non ambigua un determinato agente, inoltre un agente ha un
indirizzo di livello trasporto al quale può essere contattato.
Directory Facilitator ( DF ): è un componente che fornisce un servizio di pagine gialle. Gli agenti
possono registrare i proprio servizi nel DF oppure interrogarlo per conoscere i servizi messi a
disposizione dagli altri agenti. Un AP può supportare qualsiasi numero di DF, che registrandosi ad
altri possono formare federazioni. Non ci sono obblighi da parte degli agenti, essi possono
registrarsi e deregistrarsi quando preferiscono e possono modificare la propria descrizione.
47
Capitolo 2 – Sistemi multi-agente e JADE
Il DF può restringere l’accesso alle informazioni presenti nella sua directory e verificare i permessi
degli agenti che accedono allo stesso DF.
Agent Management System ( AMS ): è un componente che esercita una funzione di controllo
sull’accesso e sull’uso di tutto il sistema: creazione e cancellazione di agenti, supervisiona la
migrazione degli agenti da una piattaforma all’altra.
Per ogni piattaforma esiste un solo AMS che inoltre fornisce un servizio di pagine bianche, infatti
un agente si registra all’AMS e ottiene un AID. Questi AID vengono poi salvati all’interno di una
directory in modo da conoscere il numero di agenti presenti nella piattaforma ed il loro stato.
La descrizione degli agenti, tenuta dall’AMS, può essere modificata e gli agenti possono cercarsi
grazie a questo servizio.
Quando un agente termina la sua esecuzione il suo AID viene cancellato ed è disponibile ad altri
agenti.
L’AMS può provocare lo shut-down di un agente ed ha l’autorità di richiedere l’esecuzione di
operazioni che sono state ignorate.
Message Transport Service ( MTS ): è un servizio che permette la comunicazione fra agenti
localizzati sulla stessa o su diverse piattaforme, i messaggi scambiati hanno un formato che
contiene un insieme di parametri la cui struttra è mostrata in figura 12.
Figura 12: formato dei messaggi
48
Capitolo 2 – Sistemi multi-agente e JADE
2.5.2 Linguaggio FIPA-ACL
Lo standard FIPA specifica in maniera completa e precisa il linguaggio che viene utilizzato nella
comunicazione fra agenti. Questo linguaggio, chiamato ACL ( Agent Communication Language []
), definisce la sintassi e la semantica della comunicazione fra agenti che necessitano di relazioni
complesse per collaborare, competere e negoziare.
Le radici di questo linguaggio sono nella teoria speech act [18], che dice che i messaggi trasmessi
rappresentano delle azioni, anche detti communicative acts, cioè un messaggio ha un intento che è
quello di trasferire le intenzioni e i desideri del mittente al destinatario.
Il linguaggio FIPA-ACL, si basa su 22 communicative acts, un agente per essere FIPA-compliant
deve esser in grado di ricevere uno qualsiasi di questi.
Lo standard FIPA non definisce il linguaggio di espressione dei contenuti.
Un messaggio FIPA-ACL, contiene un insieme di parametri ma l’unico parametro obbligatorio è il
performative, la tabella in figura 13 riporta tutti questi parametri:
Figura 13: parametri di un messaggio FIPA compliant
L’insieme di tutti i communicative acts sono contenuti nella specifica FIPA [17] e sono riportati in
figura 14:
49
Capitolo 2 – Sistemi multi-agente e JADE
Figura 14: FIPA communicative act
50
Capitolo 2 – Sistemi multi-agente e JADE
2.6 La piattaforma JADE
JADE ( Java Agent Development Framework [8]) è un framework per lo sviluppo di applicazioni di
agenti, fornendo servizi conformi allo standard FIPA ed interoperabili con altre piattaforme
conformi allo stesso standard.
JADE è stato sviluppato da TILab s.p.a di Torino, in collaborazione con il Dipartimento di
Ingegneria dell’Informazione dell’Università di Parma.
Esso è distribuito da TILab come software open source, sotto licenza LGPL [19] ( Lesser General
Public License ).
Tale licenza permette di fare copie del software, di distribuire queste copie, di avere accesso al
codice sorgente, di apportare modifiche e miglioramenti ad esso. Nel caso vengano fatti dei lavori
derivati da JADE o dei lavori basati su esso devono essere distribuito sotto la stessa licenza.
JADE è stato interamente scritto in linguaggio JAVA, in particolare l’architettura del sottosistema
di comunicazione sfrutta la moderna tecnologia ad oggetti distribuiti che permette di scegliere a
tempo d’esecuzione il miglior protocollo di comunicazione.
Ci sono alcune scelte di progetto che influenzano il modello di agente e di applicazione:
•
Agenti autonomi e proattivi: un agente ha un proprio thread di esecuzione che usa per
controllare il suo ciclo di vita; decide autonomamente quando compiere un’azione.
•
Sistema peer to peer: ogni agente è identificato da un nome unico ( AID ), può aggiungersi
ad una piattaforma e può lasciarla quando preferisce, può cercare altri agenti attraverso il
servizio di pagine bianche e il servizio di pagine gialle. Un agente può iniziare e terminare
una comunicazione quando preferisce.
La comunicazione è di tipo asincrono, infatti un agente che vuole comunicare manda un messaggio
ad una destinazione ( o ad un set di destinazioni ), e non c’è dipendenza temporale tra il mittente ed
il destinatario, quest’ultimo può anche essere non disponibile al momento dell’invio del messaggio.
Non c’è bisogno di ottenere l’object reference del destinatario, ad esempio per inviare un
messaggio, ma può bastare il nome, infatti è il livello trasporto a risolvere la corrispondenza nomeindirizzo.
51
Capitolo 2 – Sistemi multi-agente e JADE
Elenco delle caratteristiche e dei servizi di JADE:
•
Runtime environment: ambiente dove gli agenti vivono, che dev’essere attivo su un host
prima che uno o più agenti vengono eseguiti.
•
Librerie: una libreria di classi che i programmatori hanno a disposizione per sviluppare i
loro agenti.
•
Tools grafici: una suite di tools grafici che permettono di amministrare e monitorare
l’attività degli agenti. E’ possibile ascoltare le comunicazioni degli agenti, e controllare da
remoto la attività.
•
Un ambiente totalmente distribuito dove gli agenti sono in esecuzione con un proprio
thread, potenzialmente presente su macchine remote. La piattaforma fornisce API che
astraggono l’infrastruttura di comunicazione.
•
Una totale conformità con gli standard FIPA. Inoltre il team di JADE partecipa al processo
di standardizzazione FIPA.
•
Trasporto efficiente ed asincrono di messaggi. La piattaforma evita il marshalling ed
unmarshalling dei dati, infatti quando vengono attraversati i confini di una piattaforma la
sintassi, la codifica e il protocollo di livello trasporto dei messaggi viene trasformato
automaticamente, in modo da rispettare gli standard FIPA.
•
Servizi di pagine bianche e pagine gialle, possono inoltre essere formarte federazioni di
questi.
•
Gestione del ciclo di vita degli agenti semplice. Quando vengono creati gli viene assegnato
automaticamente un identificativo unico e un indirizzo di livello trasporto, che poi viene
utilizzato per il servizio di pagine bianche. Inoltre vengono fornite APIs e tools grafici, in
modo da poter controllare da remoto il ciclo di vita degli agenti; tramite interfaccia è
possibile effettuare le seguenti funzioni: freeze, resume, create, suspend, thaw, migrate,
clone, kill.
•
Supporto alla mobilità. Sia lo stato che il codice di un agente possono migrare da una
macchina all’altra in modo trasparente rispetto alla comunicazione, cioè un agente può
continuare ad interagire anche durante il processo di migrazione.
•
Meccanismo di sottoscrizione. Tramite questo meccanismo gli agenti ed eventualmente
applicazioni esterne possono essere notificati di tutti gli avvenimenti che ci sono all’interno
della piattaforma.
52
Capitolo 2 – Sistemi multi-agente e JADE
•
Supporto per le ontologie e ai linguaggi di contenuti. Il controllo sulle ontologie e sui
linguaggi di contenuti è fatto automaticamente dalla piattaforma, i programmatori possono
scegliere, in base alle loro preferenze, oppure possono crearne nuovi.
•
Integrazione con varie tecnologie Web based: JSP, servlet, applets e web services.
•
Supporto alla piattaforma J2ME e all’ambiente wireless.
•
Un kernel estensibile. Questo permette di estendere le funzionalità attraverso l’aggiunta di
servizi distribuiti di livello kernel.
2.6.1 Architettura JADE
La piattaforma è composta da container, ogni istanza del JADE run time è un container, che
fornisce il JADE run time e tutti i servizi per ospitare ed eseguire gli agenti.
C’è un container speciale, il main-container, che fa da bootstrap per la piattaforma, infatti è il primo
container ad esser lanciato e tutti gli altri container devono unirsi e registrarsi ad esso.
Le principali funzioni del main-container sono:
1. Management del Container Table ( CT ), cioè il registro degli object reference e degli
indirizzi di livello trasporto di tutti i container che compongono la piattaforma.
2. Management del Global Agent Description Table ( GADT ), il registro di tutti gli agenti
presenti nella piattaforma che contiene il loro stato e la loro locazione.
3. Ospitare l’AMS e il DF, che sono gli agenti che provvedono al servizio di pagine bianche e
pagine gialle rispettivamente.
Un esempio dell’architettura è in figura 15, dove è stata inserita anche un’altra piattaforma con il
proprio main-container:
53
Capitolo 2 – Sistemi multi-agente e JADE
Figura 15: architettura con un insieme di piattaforme
Si potrebbe pensare che il main-container è un bottleneck, in realtà è possibile fare delle cache
locali ad ogni container che contengono un Local Agent Description Table ( LADT ), in questo
modo ogni volte che un agente vuole un riferimento ad un altro agente va a cercare prima nella
cache locale, se non lo trova contatta il main-container ed effettua un refresh della sua cache.
Il main-container è comunque unico quindi se subisce un guasto, la piattaforma non può più
funzionare. Per questo motivo sono state pensate tecniche di replicazione del main-container [20],
in modo da ottenere piattaforme fault tolerant.
Come abbiamo già detto l’identità di un agente è contenuta nel suo AID, che è composto da una
serie di slot, in accordo con la semantica definita da FIPA. Il nome dell’agente è creato dalla
piattaforma concatenando il nickname, dello stesso agente, al nome della piattaforma.
Gli agenti speciali, presenti di default, in ogni piattaforma, così come in figura 15, sono il DF e
l’AMS.
54
Capitolo 2 – Sistemi multi-agente e JADE
2.6.2 Message Transport Service
Questo servizio gestisce lo scambio messaggi all’interno della piattaforma e tra le piattaforme.
Per ottenere l’interoperabilità tra i vari tipi di piattaforme ( non JADE ) JADE supporta tutti gli
MTP definiti dallo standard FIPA, dove ognuno di questi include la definizione di un protocollo di
livello trasporto e di una codifica standard dei messaggi.
In figura 16 viene riportata la tabella dei protocolli disponibili, ciascuno contenuto all’interno di un
file jar.
Di default JADE quando viene avviato utilizza il protocollo http che crea una server socket sull’host
del main-container.
Dalla linea di comando tramite opzioni è possibile utilizzare più MTP sullo stesso container.
Tale opzione può essere attivata anche dalla GUI creata dall’agente RMA.
Grazie a questa opzione, si possono individuare agenti, che hanno connessioni aperte verso reti
esterne, aumentando il livello di sicurezza della rete.
Quando su un container, viene attivata una nuova MTP, l’intera piattaforma ottiene un nuovo
indirizzo di livello trasporto, che è un nuovo end-point dove i messaggi possono essere ricevuti.
Infatti questo indirizzo viene aggiunto alle seguenti strutture dati:
•
Platform profile, ottenibile dall’AMS grazie all’azione get-description.
•
Al local AID, che ogni agente su ogni container può ottenere grazie al metodo getAID();
•
All’oggetto ams-agent-description, contenuto nell’AMS repository, ottenibile grazie ad una
operazione di ricerca.
Con la distribuzione principale di JADE, sono dispobili i protocolli IIOP ed HTTP, tutti gli altri
protocolli possono essere scaricati dal sito come add-on.
Grazie alla console JADE RMA è possibile attivare e disattivare gli MTP installati, mentre la
piattaforma è in esecuzione, tramite le opzioni della GUI install a new MTP e uninstall a new MTP.
Tramire un’altra opzione a linea di comando, è possibile disattivare l’MTP che di default è attivo
sul main-container; questo isola la piattaforma dalle comunicazioni con piattaforme remote.
55
Capitolo 2 – Sistemi multi-agente e JADE
Figura 16: message transport protocols
I container della stessa piattaforma comunicano, invece, grazie ad un altro protocollo chiamato
IMTP ( Internal Message Transport Protocol ).
2.6.3 IMTP
IMTP è il protocollo di tipo proprietario, usato per lo scambio dei messaggi tra gli agenti che
vivono in container differenti della stessa piattaforma.
E’ di tipo proprietario perché operando all’interno della stessa piattaforma, può anche non essere
compatibile con gli altri standardizzati dalla FIPA, non è usato soltanto per lo scambio dei messaggi
ma anche per trasferire comandi, come ad esempio lo shut-down di un container.
Esistono due tipi di IMTP uno, attivo di default, che si basa su JAVA RMI [21] ed un altro
utilizzato per i dispositivi mobili, data l’assenza di supporto per JAVA RMI, che può esser aggiunto
come add-on.
Per entrambi i protocolli ci sono opzioni che permettono un fine-tuning, per particolari reti e
particolari dispositivi.
Il protocollo RMI-IMTP è implementato dal package jade.imtp.rmi e stabilisce che quando il maincontainer viene avviato cerca l’RMI registry, se non lo trova ne crea uno nuovo.
Invece quando un container viene avviato cerca l’RMI registry e richiede l’object reference del
main-container, dopodichè invoca il metodo addnode(), dello stesso main-container, e registra il suo
object reference.
56
Capitolo 2 – Sistemi multi-agente e JADE
Sono disponibili opzioni attraverso le quali è possibile specificare l’host e ,attraverso questo, il
main-container al quale agganciarsi oppure specificare il porto dove l’RMI registry riceve rischieste
di look-up e di bind.
2.6.4 Special agents
RMA agent
L’RMA implementa l’interfaccia del sistema per il management della piattaforma.
Fornisce un’interfaccia grafica per amministrare una piattaforma composta da più container e da più
agenti; diversi RMA possono esser lanciati purchè abbiano nomi diversi.
In fase di start-up questo agente si sottoscrive all’AMS per esser notificato su tutti gli eventi della
piattaforma.
Dummy agent
Questo agente permette di inviare stimoli ad un agente sottoforma di messaggi ACL e valutare il
suo comportamento in base alle risposte che vengono ricevute.
E’ possibile tramite interfaccia caricare e salvare messaggi standard.
La figura 17 mostra tale interfaccia, nella parte destra vengono visualizzati i messaggi e nella parte
sinistra possono essere scritti i messaggi.
Più istanze di questo agente possono essere lanciate.
57
Capitolo 2 – Sistemi multi-agente e JADE
Figura 17: interfaccia Dummy Agent
Introspector agent
Questo agente è usato per fare il debug del comportamento di un singolo agente.
Infatti osserva la coda dei messaggi inviati e ricevuti, i comportamenti eseguiti e quelli mandati in
sleeping.
In figura 18 è riportata la sua GUI.
58
Capitolo 2 – Sistemi multi-agente e JADE
Figura 18: interfaccia Introspector Agent
Sniffer agent
Questo tool permette di fare il debug e di documentare, le conversazioni tra gli agenti di una
piattaforma.
Lo sniffer si sottoscrive all’AMS, per esser notificato di tutti i messaggi scambiati da un certo
numero di agenti.
In figura 19 è riportata l’interfaccia di questo agente, la parte destra del pannello permette di
visualizzare lo scambio messaggi la parte sinistra permette di aggiungere agenti al set di quelli da
ascoltare.
59
Capitolo 2 – Sistemi multi-agente e JADE
Figura 19: interfaccia Sniffer Agent
Log manager agent
Permette la creazione e la gestione dei file di Log.
Grazie all’interfaccia grafica può esser scelto il livello di log e del log handler che si vuole
utilizzare, per ciascun componente della piattaforma, tale valori possono anche esser cambiati a
run-time.
60
Capitolo 2 – Sistemi multi-agente e JADE
Event Notification Service
Questo servizio gestisce le notifiche degli eventi generati da ogni nodo della piattaforma.
Ogni volta che un evento viene generato da un container è intercettato dall’ENS ( Event
Notification Service ) e reinviato a tutti gli agenti che si sono sottoscritti per ricevere quel tipo di
notifica.
Questo agente sovracarico molto la piattaforma nel caso in molti nodi siano sottoscritti, è comunque
possibile attivarlo e disattivarlo quando necessario.
I tipi di eventi gestiti sono principalmente quattro:
1) Eventi relativi al ciclo di vita degli agenti e dei container.
2) Eventi relativi agli MTP, cioè quando vengo attivati e deattivati.
3) Eventi relativi ai messaggi, quando vengono ricevuti, inviati.
4) Eventi relativi ai cambiamenti nel comportamento di un agente.
Per illustrare meglio questi agenti viene riportato il diagramma delle classi di figura 20.
Ogni tool, eccetto il Dummy Agent, è implementato come un agente che estende la classe
jade.core.Agent, la classe base di tutti gli agenti.
Tale cosa comporta un insieme di vantaggi:
1) Il ciclo di vita di ogni tool può essere gestito come quello di un qualsiasi agente.
2) La capacità di un agente di poter scambiare messaggi può anche essere sfruttata per la
comunicazione tra tools ed AMS.
3) Diverse istanze dello stesso tool possono coesistere anche all’interno dello stesso container
61
Capitolo 2 – Sistemi multi-agente e JADE
Figura 20: diagramma delle classi degli agenti in JADE
62
Capitolo 2 – Sistemi multi-agente e JADE
2.6.5 Fault-tolerant platform
La tolleranza ai guasti è un requisito molto importante di un sistema, JADE è una piattaforma
distribuita che si poggia sostanzialmente su tre componenti: un main container, l’AMS, ed il DF.
Questi sono chiaramente dei singoli punti di failure e per questo devono essere opportunamente
replicati per assicurare l’esecuzione della piattaforma anche in caso di un guasto.
Questo può essere ottenuto grazie a due espedienti [20]:
•
Main container replication: replicazione del main-container e dell’AMS e
sincronizzazione di tutte le repliche in modo che se un main-container si guasta un
altro prende subito il suo posto.
•
DF persistence: salvare il DF su un Database esterno. In caso di guasto del maincontainer un nuovo DF agent viene avviato ed il suo catalogo viene caricato dal
database.
Main Replication Service
Questo servizio permette la replicazione del main-container di JADE ed è implementato dalla
classe: jade.core.replication.Main-ReplicationService.
Possono essere lanciati un numero qualsiasi di main-container in una piattaforma, di cui uno solo
può essere il master, gli altri sono logici e servono come repliche di backup.
I “non main-container” possono essere eseguiti agganciandosi ad una di queste repliche che sono
sincronizzate tra loro attraverso un servizio di notifica.
Attraverso questo servizio l’amministratore della piattaforma può controllare il livello di scalabilità
della piattaforma ed il livello di tolleranza ai guasti.
Diverse istanze di un main-container possono essere configurate per effettuare un bootstrap
distribuito del sistema.
Nella figura 21 tre main-container sono collegati in un anello unidirezionale nel quale ogni nodo
osserva il comportamento del suo vicino.
Se il main-container-1 subisce un guasto il main-container-2 informa tutti gli altri del guasto.
Viene poi ricomposto un anello più piccolo nel quale sono stati eliminati i nodi guasti.
63
Capitolo 2 – Sistemi multi-agente e JADE
Figura 21: main-container replication
Quando un main-container termina la sua esecuzione per un guasto, tutti i container direttamente
connessi, diventano orfani e si registrano ad un altro main-container.
Questo implica che ciascun container deve avere una lista di tutti i main-container attivi su una
piattaforma.
Ciò può essere fatto in due modi:
1) Per ciascun container la lista dei main-container può essere specificata dalla linea di
comando. Tale metodo può essere applicato quando la lista di main-container è fissata e
nota a priori.
2) Tramite un servizio chiamato Address-Notification Service ( ANS ) di livello kernel che può
essere aggiunto ad entrambri main-containers e non main-containers. Questo servizio
automaticamente rileva l’aggiunta o la rimozione di main-containers e permette la
conoscenza degli indirizzi di tutti i nodi della piattaforma. L’ANS è particolarmente
consigliato in una rete che varia molto rapidamente la sua topologia ed il suo numero di
containers.
64
Capitolo 2 – Sistemi multi-agente e JADE
DFPersistence
Questo servizio permette la replicazione del directory facilitator.
Di default il DF salva il suo catalogo nella memoria principale, garantendo tempi di accesso brevi
ma comportando un incremento lineare del consumo della memoria e problemi di scalabilità
in applicazioni con un gran numero di agenti.
Per ovviare a questi problemi è possibile configurare il DF in modo che salvi in un relativo database
il suo catalogo.
Questo implica il vantaggio di avere un incremento costante del consumo della memoria e inoltre
assicura la tolleranza ai guasti del DF, che combinata con il main-replication service permette di
ottenere una piattaforma completamente fault tolerant.
Lo svantaggio è che salvare il catalogo in un database comporta un incremento dei tempi di accesso,
soprattutto quando si trasferiscono grandi quantità di dati dal database al DF.
JADE mette a disposizione più implementazioni della DF persistence, quella di default è basata
sull’interfaccia Java DataBase Connectivity ( JDBC ) compatibile con la maggior parte dei motori
di ricerca per database.
L’accesso al database può esser configurato con i parametri presenti in figura 22:
Figura 22: parametri di configurazione accesso DB
65
Capitolo 2 – Sistemi multi-agente e JADE
Un’altra implementazione si basa su HSQL [22],un motore per database molto leggero e scritto in
interamente in JAVA.
Tale implementazione non è disponibile con la versione di jade disponibile sul sito, ma dev’essere
scaricata dall’homepage del progetto HSQL [22].
Nei casi in cui nessuna delle due implementazioni soddisfa i requisiti dell’amministratore della
piattaforma, è possibile farne altre ereditando dalle classi:
jade.domain.DFDBKB, jade.domain.DFHSQLKB e dalla classe astratta jade.domain.DBKB.
66
Capitolo 2 – Sistemi multi-agente e JADE
2.6.6 Security in JADE
La sicurezza nei sistemi multi-agente, basati sull’autonomia e sulla mobilità degli agenti, richiede
grande attenzione ed è fornito dall’add-on JADE-S.
Infatti, grazie a JADE-S, tutti i componenti ( agenti e containers ) hanno un proprietario che è un
utente autenticato autorizzato dall’amministratore della piattaforma a compiere solo alcune azioni.
Ogni agente ha a disposizione un chiave pubblica ed una privata con le quali firma e cripta i
messaggi. Di seguito viene spiegato il funzionamento di JADE-S
Autenticazione
Grazie all’autenticazione un utente che vuole avere accesso alla piattaforma, generare containers ed
agenti, ottiene user name e password e può essere considerato un utente sicuro.
In generale un sistema di autenticazione è composto da due elementi: un CallBackHandler, che
fornisce all’utente user name e password, ed un LoginModule che ne verifica la validità.
Il servizio di autenticazione in JADE è basato sulle API JAAS [21] ( Java Authentication and
Autorization Service ), che forniscono un set di LoginModule che sono: Unix, NT, Kerberos e
Simple.
I primi due estraggono l’identità dell’utente dalla sessione corrente del sistema operativo, per questo
motivo dipendono da questo.
Kerberos è indipendente dal sistema operativo ma richiede alcune configurazioni specifiche del
sistema primo dell’uso.
Simple permette un’autenticazione controllata tramite un testo contenuto all’interno di un file che
risiede in una cartella di sistema.
Inoltre la versione attuale di JADE-S fornisce diversi Callbackmodule:
o Cmdline: Username e password sono parametri di configurazione di JADE, possono essere
inseriti sia da linea di comando, o in un file di configurazione.
o Text: Quando il container va in esecuzione richiede l’inserimento di username e password
67
Capitolo 2 – Sistemi multi-agente e JADE
o Dialog: Quando il container va in esecuzione mostra una finestra di dialogo dove possono
essere inseriti username e password
Se vengono riscontrati problemi durante l’autenticazione oppure l’utente fallisce l’autenticazione il
sistema termina l’esecuzione del container e genera un messaggio di errore.
Permessi
Grazie al meccanismo descritto in precedenza tutti i containers e gli agenti sono posseduti da utenti
autenticati.
Tutte le azioni che gli utenti possono fare nella piattaforma possono essere concesse o negate in
accordo a delle regole stabilite. In questo modo è possibile selezionare l’accesso ad alcuni servizi
della piattaforma o a risorse dell’applicazione.
Il set di regole stabilite solitamente sono contenute all’interno di un file chiamato “policy.txt”, che
sedue la sintassi JAVA/JAAS.
Esistono due tipi di file che corrispondono a due tipi di politiche che possono essere stabilite nel
caso dei permessi:
Main-container policy: concede ad ogni agente il permesso di fare qualsiasi azione
Peripheral container policy: che permette agli agenti di compiere azioni nei confronti degli altri
agenti solo all’interno dello stesso container.
Queste politiche, contenute in tali files, riguardano anche l’accesso a risorse ( JVM, FileSystem,
Network ) .
Integrità e riservatezza dei messaggi
La criptazione e la firma garantiscono un certo livello di sicurezza quando viene inviato un
messaggio ACL tra agenti della stessa piattaforma o di piattaforme remote.
La firma fornisce l’identità del mittente la criptazione protegge i messaggi dagli ascoltatori non
autorizzati.
Con JADE-S, sia la Signature che la criptazione è applicata a tutto il payload del messaggio in
modo da proteggere l’informazione contenuta all’interno del messaggio.
68
Capitolo 2 – Sistemi multi-agente e JADE
La firma, l’algoritmo o la chiave di criptazione sono inserite nei parametri del messaggio.
Grazie a tale soluzione l’utente non deve interagire con i meccanismi di criptazione e firma del
messaggio, ma deve soltanto firmare i messaggi e vedere se un messaggio ricevuto è stato firmato.
Qualora si verifichino problemi riguardanti la firma o la criptazione con un messaggio, questo viene
scartato e viene inviato al mittente un messaggio di fallimento dell’invio.
Il supporto alla sicurezza è implementato sotto forma di un set di servizi che possono essere caricati
da linea di comando, essi sono:
jade.core.security.SecurityService: questo servizio è incaricato del meccanismo di
autenticazione, del management della coppia di chiavi e della crittografia.
jade.core.security.permission.PermissionService: questo servizio è incaricato di verificare se
agli utenti è concesso fare determinate azioni, ad esempio inviare messaggi, richiedere all’AMS di
creare o eliminare agenti.
jade.core.security.signature.SignatureService: questo servizio permette di firmare i messaggi e
verificare se quelli ricevuti sono stati firmati.
jade.core.security.encryption.EncryptionService: questo servizio si occupa della criptazione dei
messaggi quando richiesto dal mittente, e della decriptazione dei messaggi ricevuti.
Le limitazioni principali per questo add-on sono:
1. Non sono presenti permessi relativi alla mobilità degli agenti. Quindi una piattaforma, per
garantire un buon livello di sicurezza, deve avere l’Agent Mobility Service disattivato.
2. Le informazioni scambiate tra contenitori della stessa piattaforma sono trasmessi su un
canale SSL ( Standard Secure Channel ) ma non sono firmate. Quindi un utente malizioso
può inviare informazioni errate influenzando il comportamento di altri agenti.
3. Molte delle caratteristiche di questo add-on non sono accessibili da MIDP ( Mobile
Information Device Profile [23]).
Per installare questo JADE-S, è sufficiente effettuare il download ed avere apache ant [24].
69
Capitolo 2 – Sistemi multi-agente e JADE
2.6.7 Add-on per i dispositivi mobili
Quando si sviluppano applicazioni ad agenti su dispositivi mobili, come PDA e cellulari, ci sono un
insieme di constraints (limitazioni) da dover portare in conto.
Queste constraints sono relative a: limitate caratteristiche della JVM ( Java Virtual Machine ) di
questi dispositivi e alla natura delle reti wireless usate come GPRS o UMTS. Di seguito
specifichiamo queste limitazioni.
1)Limitazioni dell’Hardware
I dispositivi mobili hanno dei processori con delle capacità molto modeste, in generale infatti si
parla di frequenza di clock minore di 200MHz e di processori a 16 bit.
Inoltre hanno delle memorie con scarsa capacità, abbiamo memorie di 16 MB per i cellulari e 64
MB per i PDA.
Anche altre limitazioni sono presenti per quanto riguarda l’hardware: batteria di breve durata e
memoria non persistente.
2)Limitazioni relative a Java
La JVM dei dispositivi mobili non fornisce tutte le caratteristiche disponibili nei laptop e desktop
computers. In particolare le specifiche MIDP ( Mobile Information Device Profile disponibili per la
maggior parte dei dispositivi mobili ), quelle CDC [25] o quella più obsoleta Personal Java [25],
non forniscono alcuni supporti per la grafica e le user interfaces.
In MIDP inoltre non c’è supporto per Java reflection [26] e Java Serialization [27].
3)Limitazioni dovute alla rete
JADE assume che i containers tra di loro sono continuamente connessi tramite una rete.
70
Capitolo 2 – Sistemi multi-agente e JADE
Ciascun container deve essere in grado di aprire e accettare una connessione con gli altri containers
in qualsiasi momento.
E tutte le interazioni container-to-container avvengono attraverso il protocollo RMI, che non è
particolarmente efficiente in termini di numero byte trasmessi sulla rete.
Sfortunatamente le reti wireless, come GPRS e UMTS, non rispettano queste supposizioni poiché
sono caratterizzate da:
1. Connessione intermittente: in alcune aree la copertura può essere molto ridotta oppure i
dispositivi possono essere spenti per limitare il consumo della batteria.
2. IP volatile: dopo una temporanea disconnessione l’indirizzo IP del dispositivo potrebbe non
restare lo stesso.
3. Latency e low bandwith: le reti wireless hanno un bit/rate non molto elevato ( 9.6 kbps
GSM 128 kbps GPRS e 1 Mbps HSDPA )
JADE Leap Add-on
Verso la fine del 1999 un gruppo di aziende leader del settore delle telecomunicazioni decisero di
sviluppare una piattaforma per supportare l’implementazione di applicazioni basate su architettura
multi-agente sui dispositivi mobili. Il gruppo era composto da Motorola, Siemens, Ericsonn, British
Telecommunication e Telecom Italia.
Il progetto ha dato luogo ad un add-on per JADE chiamato LEAP ( Lightweight Extensible Agent
Platform ).
Lo scopo principale di LEAP è di fornire un middleware sufficientemente leggero per eseguire
applicazioni su dispositivi con potenza e risorse molto limitate come i telefoni cellulari; è un
sistema estensibile e scalabile, funzionalità molto importante per essere in esecuzione su un gran
numero di dispositivi.
I progettisti di LEAP hanno sviluppato questa piattaforma prendendone una preesistente ( JADE ) e
modificandola per rispettare i requisiti di progetto. Questa scelta è motivata da varie ragioni:
1. JADE è scritto completamente in JAVA
2. JADE è distribuito sotto licenza open source e quindi è possibile avere accesso a tutto il
codice sorgente e modificarlo.
71
Capitolo 2 – Sistemi multi-agente e JADE
3. JADE esegue più tasks in maniera concorrente (behaviours) in un singolo thread JAVA e
ciò è molto importante per i dispositivi con risorse limitate.
4. Infine JADE è stato sviluppato da Telecom Italia un membro del progetto LEAP.
L’implementazione prodotta di LEAP è configurata come un add-on di JADE; questa sostituisce
alcune parti del kernel di JADE fornendo un ambiente di run time modificato.
Per aumentare la scalabilità LEAP è disponibile in tre ambienti JAVA, corrispondenti a tre
differenti versioni :
J2SE: per eseguire JADE-LEAP su PCs e servers, in una rete cablata, che hanno a disposizione la
jdk 1.4 [21].
PJAVA: per eseguire JADE-LEAP sui dispositivi hand-held supportando J2ME CDC e Personal
JAVA.
MIDP: per eseguire JADE-LEAP sui dispositivi hand-held supportando MIDP 1.0 ( e versioni
precedenti ), disponibile sulla maggior parte dei telefoni cellulari JAVA-enabled.
Queste tre versioni forniscono lo stesso insieme di API in modo da offrire uno strato omogeneo al
di sopra dei dispositivi e della rete, come in figura 23.
72
Capitolo 2 – Sistemi multi-agente e JADE
Figura 23: JADE-LEAP run time environment
Solo alcune caratteristiche disponibili per JADE-LEAP in J2SE e pjava non sono disponibili in
JADE-LEAP per MIDP e sono relative alle java classes.
La versione pjava rimuove tutti i tools grafici ma conserva le APIs della versione per J2SE.
Le tre versioni sono direttamente scaribili dalla download area del sito di JADE sia in versione
binaria sia sottoforma di codice sorgente, quest’ultima contiene anche alcuni tools per effetuare il
packaging delle applicazioni JADE-LEAP.
.
Differenze tra JADE e JADE-LEAP
Dal punto di vista degli sviluppatori e degli utenti JADE-LEAP appare identico a JADE in termini
di APIs.
Gli sviluppatori possono implementare i loro agenti JADE in JADE-LEAP e viceversa senza
cambiare una sola linea di codice.
L’unica limitazione è che i containers JADE e quelli JADE-LEAP non possono essere mischiati
all’interno di un’applicazione, questa è la ragione principale per la quale JADE-LEAP è stato
73
Capitolo 2 – Sistemi multi-agente e JADE
sviluppato anche per J2SE in modo da poter avere una singola piattaforma che opera in ambiente
cablato e wireless.
Inoltre come mostrato in figura 22 le diverse piattaforme JADE-LEAP possono comunicare tra loro
utilizzando il protocollo http.
La differenza più grande tra questi due framework è nell’IMTP ( Internal Message Transport
Protocol ), cioè la parte del framework che si occupa dell’interazione container-to-container.
Infatti l’IMTP di JADE è basato su JAVA RMI che non è disponibile per i dispositivi mobili.
Per questo JADE-LEAP utilizza un IMTP differente, un protocollo di tipo proprietario, JICP ( Jade
Inter Container Protocol ), il fatto che i protocolli siano di tipo differente è la ragione per la quale i
container JADE-LEAP non possono registrarsi con container JADE e viceversa.
LEAP IMTP
L’architettura protocollare è composta da un command dispatcher ed uno o più ICPs ( Internal
Communication Peers ). Il primo è condiviso da tutti i container che utilizzano la stessa JVM ed è
responsabile di:
•
Serializzare e deserializzare i comandi scambiati tra containers.
•
Trasmettere messaggi e comandi dal container locale all’ICP opportuno ( specificato
nell’indirizzo di destinazione ) attraverso la rete.
•
Passare i comandi ricevuti dallo strato sottostante (ICP) al container locale.
La figura 24 mostra l’architettura del protocollo.
74
Capitolo 2 – Sistemi multi-agente e JADE
Figura 24: LEAP IMTP
LEAP add-on include tre tipi di implementazioni dell’ICP: quella di default implementata dalla
classe jade.imtp.leap.JICP.JICPPeer, la versione SSL del protocollo JICP ICP implementata dalla
classe jade.imtp.leap.JICP.JICPSPeer, e la versione basata su http implementata dalla classe
jade.imtp.leap.http.HTTPPeer.
Questo indica che una piattaforma JADE-LEAP può usare JICP su SSL o JICP su http come
protocolli di comunicazione container to container.
Notiamo che più di un ICP può essere attivato su un nodo e quindi più container possono
condividere lo stesso command dispatcher e la stessa JVM, ma possono essere raggiungibili sotto
indirizzi diversi.
Come in figura 24 abbiamo un indirizzo http e uno jicp.
75
Capitolo 2 – Sistemi multi-agente e JADE
Split Container
Gli agenti JADE come già detto in precedenza necessitano di un ambiente di run time per essere
eseguiti e per comunicare, questo ambiente in JADE viene fornito dai container
In JADE-LEAP si utilizzano sempre containers ma è possibile scegliere una modalità di esecuzione
differente chiamata split execution mode, pensata ad-hoc per i dispositivi mobili.
Quando lanciamo un container, in questa modalità, ne viene creato uno molto leggero chiamato
front end che mette a disposizione lo stesso insieme di funzionalità di un normale container ma ne
implementa solo una parte direttamente, la restante parte viene delegata ad un processo remoto
chiamato back-end.
Dal punto di vista degli agenti un front end appare come un normale container,mentre dal punto di
vista degli altri container e del main-container il back end appare come un normale container, il
risultato è che assieme formano un normale container.
Front end e back end comunicano attraverso un canale dedicato come mostrato in figura 25.
Figura 25: split execution mode
76
Capitolo 2 – Sistemi multi-agente e JADE
La modalità split execution è particolarmente adeguata per i dispositivi con poche risorse e per i
dispositivi wireless poiché:
1. Un front end in esecuzione su un dispositivo è molto più “leggero” di un container intero.
2. La fase di bootstrap è più rapida poiché le comunicazioni con il main-container, richieste per
unirsi alla piattaforma, sono effettuate dal back end e quindi tramite un rete cablata.
3. L’uso del link wireless è ottimizzato.
4. Entrambi il front end ed il back end realizzano un meccanismo di tipo store and forward che
permette di rendere la potenziale perdita di connessione trasparente all’applicazione.
Se la connessione cade infatti i messaggi diretti agli agenti o che devono essere inviati
vengono memorizzati sia nel back end che nel front end. Quando poi la connessione viene
ristabilita i messaggi memorizzati vengono reinviati ai ricevitori interessati.
5. L’indirizzo IP del front end non viene mai visto dagli altri containers che interagiscono
soltanto con il back end. Quindi questo può anche cambiare senza avere impatto
sull’applicazione.
In figura 26 viene esposta una tabella con le due modalità di esecuzione supportate nei differenti
ambienti di esecuzione.
Si può vedere come la split execution è obbligatoria nel caso dell’MIDP e fortemente suggerita nel
caso di pjava.
Inoltre è importante notare che gli sviluppatori di agenti non devono preoccuparsi se il codice verrà
eseguito su un container in modalità stand-alone o split poiché le APIs sono le stesse.
Figura 26: modalità di esecuzione JADE-LEAP
77
Capitolo 2 – Sistemi multi-agente e JADE
Quando si opera in modalità split però ci sono alcuni problemi ai quali gli sviluppatori vanno in
contro:
1. Il main container non può essere eseguito in modalità split.
2. La mobilità e la clonazione degli agenti non sono disponibili su di un container in modalità
split.
Il Mediatore
In un’applicazione reale quando ci sono diversi agenti che vengono eseguiti su diversi dispositivi
mobili, c’è bisogno di un meccanismo che gestisce automaticamente tutti i back ends di tutti i front
ends attivi.
Questo meccanismo è implementato, nell’architettura JADE-LEAP, da un elemento chiamato
mediator, figura 27.
Figura 27: il mediatore
78
Capitolo 2 – Sistemi multi-agente e JADE
Funzione del mediatore:
Il mediatore dev’essere in esecuzione con un indirizzo fissato e visibile prima che i front end
possano venire eseguiti su un dispositivo.
Quando l’utente attiva JADE-LEAP usando la modalità split, sul proprio dispositivo mobile,
il front end relativo viene inizializzato e si connette al mediatore chiedendo la creazione di un back
end.
Questa richiesta viene effettuata inviando una CREATE-MEDIATOR request, sulla nuova
connessione aperta utilizzando il protocollo JICP.
Dopo ciò il mediatore instanzia il back end e lo connette al front end, tale connessione verrà
utilizzata per tutte le interazioni successive.
A questo punto il back end si registra al main container ed il mediatore invia un messaggio al front
end contenente: il nome assegnato al container, il nome e l’indirizzo ( o gli indirizzi se ci sono )
della piattaforma.
Il diagramma di sequenza presente in figura 28 descrive tutti i passi necessari in fase di
inizializzazione.
Dopo questa procedura di start up tutte le successive interazioni non coinvolgono il mediatore, che
comunque ha una tabella con tutte le associazioni container name – back end.
79
Capitolo 2 – Sistemi multi-agente e JADE
Figura 28: procedura di start up di uno split container
Se c’è una perdita di connessione tra il front end ed il suo back end, il primo periodicamente tenta di
ristabilirla attraverso il mediatore, così come mostrato dal diagramma di sequenza in figura 29.
80
Capitolo 2 – Sistemi multi-agente e JADE
Figura 29: procedura di riconnessione
In questo caso viene inviata una CONNECT_MEDIATOR request.
La richiesta contiene il nome del container in modo che il mediatore possa passare la connessione al
back end corretto.
Si può notare che sia nella procedura di start up che in quella di riconnessione l’unico elemento che
accetta connessioni è il mediatore, che quindi implementa una server socket.
Per questo se il mediatore, il main container e gli altri container sono in esecuzione in una rete in
cui è presente un firewall, basta sbloccare il porto del mediatore.
Ci sono due tipi di implementazioni del mediatore:
•
Quella ICPs di LEAP IMTP. Per questa basta attivare un normale JADE-LEAP container su
un nodo; se c’è bisogno di un porto differente da quello di default è disponibile l’opzione
local-port.
•
Quella BEManagementService inclusa nel LEAP add-on [8].
81
Capitolo 3 - Implementazione del prototipo
Capitolo 3
Implementazione del prototipo
In questo capitolo viene illustrata l’implementazione di un prototipo.
Si partirà con l’illustrazione delle procedure di handling considerata per poi passare alle classi
dell’implementazione.
E’ stato poi considerato uno scenario mobile e l’esecuzione di uno degli agenti su un PDA di
proprietà del DIS ( Dipartimento di Informatica e Sistemistica ) dell’Università di Napoli Federico
II.
3.1 Procedura di handling “prova motori”
La procedura di handling considerata è quella che riguarda l’accompagnamento di un velivolo in
posizione di prova motori.
Infatti le prove a qualsiasi regime al di sopra del minimo dei motori dovranno essere effettuate dopo
aver decentrato l’aeromobile presso la piazzola prova motori e previa autorizzazione dell’U.C.T. (
Ufficio Controllo del Traffico).
La richiesta di attivazione della procedura viene effettuata dal comandante o dall’operatore della
compagnia aerea, specificando se l’aeromobile può muoversi autonomamente o dovrà essere
trainato.
In entrambi i casi sarà accompagnato da un follow me responsabile del corretto posizionamento
all’interno della piazzola prova motori.
Nel caso in cui il velivolo venga trainato in prova motori la compagnia dovrà fornire un orario
previsto per il rientro.
Le piazzole di prova motori, ad esempio a Malpensa ( MI ) è presente presso la holding bay del
raccordo G, in altri aeroporti come quello di Capodichino (NA) è presente in vicinanza delle
piazzole di sosta.
In ogni caso comunque è prevista una procedura di accompagnamento seguita dalla torre di
controllo e quindi da un operatore.
82
Capitolo 3 - Implementazione del prototipo
Nel prototipo è stato supposto che ci sia un Duty Manager cioè un operatore aeroportuale atto
all’attivazione di una determinata procedura.
La decisione della procedura da attivare si suppone sia già stata presa da un sottosistema presente
all’interno della torre di controllo.
Oltre al Duty Manager i mezzi coinvolti sono il follow me, i tecnici presenti nella piazzola di prova
motori ed il push back che traina l’aereo sotto richiesta della compagnia aerea.
E’ stata considerata questa procedura poiché descritta in documenti di scalo in modo abbastanza
accurato e perché coinvolge più mezzi di handling.
Altre procedure possono essere considerate simili a questa anche con meno mezzi coinvolti, ad
esempio come nel caso di accompagnamento di un mezzo esterno sul sedime aeroportuale, soltanto
il follow me deve essere informato dell’azione da compiere e della posizione del mezzo.
In figura 30 è illustrato uno schema del prototipo, nel caso di procedura di accompagnamento in
prova motori con traino, è quindi coinvolto anche l’operatore push back..
Il Duty Manager dopo aver ricevuto la richiesta della procedura da compiere invia dei messaggi agli
operatori coinvolti, contenenti il tipo di procedura attivata, un identificativo del velivolo, il tipo di
aereo coinvolto e la sua posizione.
Dopo un breve intervallo di tempo gli operatori coinvolti devono comunicare se sono disponibili ad
effettuare la procedura oppure no.
Figura 30: accompagnamento in prova motori con traino
83
Capitolo 3 - Implementazione del prototipo
La procedura di accompagnamento in prova motori invece non prevede l’invio di un push back e
quindi sarà rappresentata dal diagramma in figura 31.
Figura 31: accompagnamento in prova motori senza traino
3.2 Prototipo in modalità stand-alone
Per lo sviluppo e l’esecuzione del prototipo in modalità stand alone è stato stato utilizzato un
computer portatile Toshiba modello Satellite, con processore Pentium Intel 1.73 Ghz, RAM da 1
GB, con sistema operativo Windows XP Home Edition 2002 Service Pack 2.
Come tool di sviluppo Java, è stato utilizzato Eclipse [28], utilizzando una JDK 1.6.
La versione di Jade installata è la 3.6.1, attualmente scaricabile dal sito.
Gli operatori aeroportuali considerati in precendenza rappresentano degli agenti, infatti sono state
implementate le classi java: DutyManager, FollowMe, Tecnici e PushBack.
Inoltre grazie al tool di sviluppo java NetBeans, sono state progettate ed implementate le interfacce
degli agenti.
84
Capitolo 3 - Implementazione del prototipo
Fase di inizializzazione
Ogni container dell’applicazione viene lanciato attraverso un file di batch.
Inserendo opportunamente l’opzione “-conf” di jade, viene permesso di caricare un file di
configurazione, contenente tutte le opzioni necessarie.
Nel file di configurazione da noi utilizzato vengono specificate le seguenti opzioni:
•
Nome della piattaforma
•
Servizi della piattaforma utilizzati
•
Opzione “-nomtp ” posizionata al valore true.
•
Modulo per il login di tipo Simple
L’opzione “nomtp”, settata al valore true, serve per indicare se disponibile un MTP oppure no, e
quindi se verranno accettate connessioni con altre piattaforme oppure no.
I servizi utilizzati per venire in contro ai requisiti di progetto sono: security service, main replication
service, address notification service, notification service, topic management service.
Il primo servizio è stato, descritto nel secondo capitolo, fornisce il supporto alla sicurezza facendo
accedere alla piattaforma soltanto utenti autenticati.
Questo supporto, chiamato JADE-S, è stato scaricato dal sito di jade, ed installato caricando le
librerie sulla macchina utilizzata.
L’autenticazione viene effettuata attraverso una finestra di dialogo che permette di inserire
UserName e Password all’utente.
Questi ultimi vengono confrontati con quelli presenti all’interno di un file di testo, se sono corretti
l’utente viene autenticato e può far partire l’agente ed il relativo container.
Non sono state specificate politiche di sicurezza relative ai container.
Il secondo servizio considerato è quello di replicazione del main-container, anche questo descritto
nel secondo capitolo.
85
Capitolo 3 - Implementazione del prototipo
E’ stato mandato in esecuzione quindi un altro main-container di backup in modo tale da attivare il
servizio di replication. Questo secondo main-container si aggancia al primo ottenendo un suo
riferimento.
Tramite l’interfaccia grafica fornita dall’agente RMA ( Remote Monitoring Agent ) è possibile
monitorare la presenza dei due main-container e come rapidamente nel caso venga eliminato il
master main ( quello avviato per primo ), il secondo ne prende il posto e tutti gli altri container si
agganciano a questo nuovo master.
In figura 32 è riportata l’interfaccia dell’RMA dove sono presenti due main-container.
Figura 32: interfaccia dell'RMA con due main-container
Il servizio di topic management viene attivato poiché le classi inviano messaggi e ricevono
messaggi soltanto di un determinato topic, questo è un meccanismo di tipo publish/subscribe [29].
Cioè quando dev’essere inviato un messaggio viene creato un nuovo topic, che viene indicato come
destinatario del messaggio, dopodichè si invia il messaggio che viene ricevuto solo dagli utenti che
si sono sottoscritti al topic.
86
Capitolo 3 - Implementazione del prototipo
Attraverso il servizio AddressNotificationService se un main container termina la sua esecuzione, il
main di backup ottiene gli indirizzi di tutti i nodi presenti nella piattaforma in modo da inviargli una
notifica e farli riagganciare ad esso.
L’ultimo servizio utilizzato è il notification service.
Questo servizio è installato di default ma nel caso utilizziamo il security service potrebbe essere
necessario installarlo manualmente.
Questo servizio permette l’invio di notifiche agli utenti che si sottoscrivono ad un determinato
evento e viene utilizzato dal security service.
Per lanciare l’applicazione bisogna innanzitutto far partire il main-container di Jade.
Tutti gli altri container con i relativi agenti vengono lanciati con le stesse opzioni, tranne per
l’autenticazione che nel caso dei container normali viene eseguita da una finestra di dialogo
presente in figura 32 mentre nel main viene eseguita da linea di comando.
Figura 13: finestra di dialogo JADE-S
87
Capitolo 3 - Implementazione del prototipo
3.3 Scheduling ed esecuzione di behaviour
Prima di passare alle classi e quindi agli agenti implementati facciamo un passo indietro e
descriviamo come vengono eseguiti i behaviour all’interno di un unico thread java [30].
Diciamo subito che all’interno del codice di ogni agente c’è un metodo setup() che manda in
esecuzione il thread dell’agente ed inizia lo scheduling delle behaviour, aggiunte all’interno del
codice del relativo agente.
Un agente può eseguire diverse behaviour in maniera concorrente, ma è importante notare che lo
scheduling di queste in jade non è di tipo pre-emptive ( come per i thread java ) ma è di tipo
cooperativo.
Questo ci fa capire che quando un behaviour viene schedulata ed il suo metodo action() viene
richiamato, esso viene eseguito fino a che non termina.
Per questo è il programmatore che definisce quando un agente fa lo “switch” dell’esecuzione di una
behaviour ad un’altra.
Sebbene comporti degli sforzi questo approccio ha dei vantaggi:
•
C’è un singolo thread java per agente, cosa molto importante in scenari dove sono presenti
dispositivi con risorse limitate come i PDA.
•
Miglioramento delle performance, poiché lo “switching” dei behavior è più veloce di quello
dei thread java.
•
Elimina tutte le sincronizzazioni tra behaviour che accedono alle stesse risorse, poiché
eseguite in un singolo thread java.
•
Quando viene effettuato lo switch di una behaviour, lo status dell’agente non contiene
nessuna informazione relativa allo stack. Questo implica che è possibile salvare lo stato
dell’agente o trasferire l’agente su di un altro container per un’esecuzione remota.
Il path di esecuzione del thread java di un agente è presente in figura 34.
88
Capitolo 3 - Implementazione del prototipo
Figura 34: path di esecuzione del thread di un agente
89
Capitolo 3 - Implementazione del prototipo
3.4 Agent Communication
La comunicazione tra agenti è probabilmente la caratteristica più importante di jade ed è
implementata in accordo alle specifiche FIPA [17].
Il paradigma di comunicazione è basato sul concetto di asynchronous message passing.
Con questo ciascun agente ha una “mailbox” ( la coda dei messaggi ricevuti da un agente ) dove il
jade run-time deposita i messaggi inviati dagli altri agenti.
Quando un messaggio viene depositato in questa “mailbox” l’agente viene notificato, ma comunque
quando, o se, il messaggio dev’essere prelevato, dalla coda, e processato è una scelta progettuale del
programmatore.
Questo tipo di procedimento è illustrato in figura 35.
Figura 35: jade “asynchronous message passing”
Il formato del messaggio è in accordo con le specifiche FIPA [17], e contiene i seguenti campi:
•
Mittente del messaggio
•
Lista dei destinatari
•
Il communicative act ( cosa intende ottenere il mittente dal messaggio )
•
Il “content language”, cioè la sintassi usata nel messaggio per esprimere i contenuti.
90
Capitolo 3 - Implementazione del prototipo
•
L’ontologia
•
Alcuni campi addizionali
Ogni messaggio in jade è implementato come un oggetto che eredita dalla classe
jade.lang.acl.ACLMessage che dispone dei metodi get () e set() per manipolare tutti i parametri
esposti in precedenza.
Di seguito verranno descritti gli agenti utilizzati all’interno del prototipo e quindi per la procedura
di accompagnamento in prova motori.
In generale diciamo che un agente è una classe java, sviluppata in Eclipse , che eredita dalla classe
jade.core.Agent.
3.5 Classi utilizzate
Classe DutyManager
L’agente DutyManager ( codice sorgente DutyManager.java ) implementa parte delle funzioni
dell’operatore aeroportuale duty manager.
La classe java relativa eredita dalla classe jade.core.Agent.
La prima operazione svolta da questo agente è l’iscrizione al DF, specificando il nome dell’agente,
il nome ed il tipo di servizio effettuato.
All’interno del metodo setup() è presente una sola behaviour per essere schedulata, “Risposte”, che
eredita dalla classe jade.core.behaviours.CyclicBehaviour.
Questo behaviour, come suggerisce il nome “CyclicBehaviour”, on termina mai la sua esecuzione
ma la ripete, effettuando sempre la stessa o le stesse operazioni.
Essa permette all’agente di ricevere i messaggi in modalità asincrona.
Infatti attraverso il metodo block(), dei CyclicBehaviour, il behaviour viene segnato come bloccato
ed il thread dell’agente va in sleep ( si ricorda figura 34 ), evitando consumi inutili di CPU.
91
Capitolo 3 - Implementazione del prototipo
Qualora viene ricevuto un nuovo messaggio viene inserito nella coda dei messaggi il behaviour
“Risposte” viene schedulato di nuovo e quindi c’è possibilità di processare il messaggio ricevuto.
In questo modo vengono ricevuti i messaggi in modo asincrono, evitando sprechi di risorse.
All’interno del setup() sono presenti anche due metodi:
•
ProvaMotori();
•
ProvaMotoriS();
La differenza tra i due metodi è che uno prevede l’invio dei messaggi anche al o ai push back,
richiedendo il traino dell’aeromobile, l’altro no attivando una procedura di accompagnamento in
prova motori senza traino.
Entrambi permettono l’attivazione della procedura di handling, inviando informazioni agli
opportuni agenti, attraverso creazione di un topic e l’invio dei messaggi a con questo topic.
Inoltre questi metodi hanno all’interno un behaviour che eredita dalla classe
jade.core.behaviours.OneShotBehaviour.
Questo viene eseguita una sola volta e termina la sua esecuzione.
L’interfaccia di questo agente è stata sviluppata grazie al tool NetBeans.
Da questa è possibile lanciare la procedura di prova motori sia con traino sia senza traino, inoltre è
stata prevista la presenza di altre funzionalità da aggiungere in futuro, a valle di una conoscenza più
dettagliata della funzionalità di questo operatore.
La figura 36 mostra tale interfaccia.
Premendo sul menu procedure sarà possibile lanciare la procedura di handling desiderata.
Inoltre è presente un menù che permette di monitorare lo stato dei mezzi presenti sul sedime
aeroportuale.
Premendo su una delle procedure si aprirà un’altra finestra nella quale è possibile visualizzare
l’azione effettuata e le risposte dei mezzi coinvolti.
Questa finestra è mostrata in figura 37.
92
Capitolo 3 - Implementazione del prototipo
Figura 36: interfaccia duty manager
Figura 37: finestra relativa alla procedura attivata
93
Capitolo 3 - Implementazione del prototipo
Classe FollowMe
L’agente FollowMe ( codice sorgente FollowMe.java ) implementa parte delle funzionalità
dell’operatore aeroportuale follow me.
La classe java relativa eredita dalla classe MyAgent ( codice sorgente MyAgent.java ) che è un
agente che implementa funzionalità comuni a tutti gli altri ( FollowMe, PushBach,Tecnici ).
Questo agente infatti ha tre metodi:
setup()
takedown()
InvioRisposta()
Il primo metodo effettua una registrazione al servizio DF con nome e tipo del servizio, il secondo
effettua la de-registrazione dell’agente e la sua eliminazione.
Il terzo metodo, InvioRisposta(), ha al suo interno un behaviour di tipo “OneShotBehaviour “,
eredita dalla classe jade.core.behaviours.OneShotBehaviour, questa crea un topic “stato procedura”
al quale si registra ed invia messaggi, che saranno destinati poi al duty manager.
Come detto in precedenza l’agente FollowMe eredita da MyAgent, e quindi può utilizzare anche
tutti i suoi metodi, inoltre ha un behaviour proprio di tipo ciclico.
Quest’ultimo permette di ricevere i messaggi di un topic, “FollowMe”, viene usato il metodo
block(), in modo che il thread dell’agente va in sleep quando non ci sono messaggi da ricevere.
L’interfaccia di questo agente è stata sviluppata sempre con NetBeans, ed è la stessa di quella degli
agenti PushBack e Tecnici.
La mostriamo in figura 38.
94
Capitolo 3 - Implementazione del prototipo
Figura 38: interfaccia di un handling agent
I due bottoni presenti permettono di accettare o no una procedura inviata dal duty manager che
viene stampata nella parte testo dell’interfaccia.
Alla pressione di un bottone automaticamente viene inviato il messaggio relativo, di accettazione o
di non disponibilità.
Classe PushBack
L’agente PushBack ( codice sorgente PushBack.java ) implementa parte delle funzionalità
dell’operatore aeroportuale push back.
Questo sostanzialmente è simile all’agente FollowMe, poiché anch’esso eredita dall’agente
MyAgent ed implementa una behaviour per la ricezione dei messaggi, soltanto che si iscrive ad un
topic differente: “PushBack”.
In questo modo riceve solo i messaggi che lo riguardano, infatti anche i messaggi stampati a video
nell’interfaccia sono diversi.
95
Capitolo 3 - Implementazione del prototipo
Classe Tecnici
L’agente Tecnici ( codice sorgente sorgente Tecnici.java ) implementa parte delle funzionalità
dell’operatore aeroportuale tecnici, che sarebbero i tecnici presenti in posizione prova motori.
Questo analogamente al precedente è simile all’agente FollowMe, infatti anch’esso deriva da
Myagent e permette la ricezione di messaggi stampandoli a video tramite un’interfaccia.
Il topic al quale si iscrive per la ricezione dei messaggi è: “Tecnici”.
Infine sono stati riportati i diagrammi di sequenza e di collaborazione.
Il diagramma 3.1 è un diagramma di sequenza relativo alla comunicazione basata sui topic, che
comprende due attori il primo è il duty manager che si suppone abbia già fatto l’iscrizione al
servizio DF, il secondo è un operatore già registrato anch’esso.
Si suppone inoltre che l’operatore possa svolgere le procedure che gli vengono proposte.
Il diagramma 3.2 mostra la dipendenza tra la classe MyAgent e le altre classi del prototipo.
Nelle classi che ereditano viene ridefinito il metodo setup() degli agenti.
96
Capitolo 3 - Implementazione del prototipo
Diagramma 3.1: sequence diagram comunicazione topic-based
97
Capitolo 3 - Implementazione del prototipo
Diagramma 3.2: class diagram prototipo stand-alone
3.6 Prototipo in ambiente wireless
Il prototipo in precedenza illustrato è stato successivamente eseguito in ambiente wireless grazie al
supporto fornito dall’add-on Jade-Leap e all’utilizzo di un palmare del DIS ( Dipartimento di
Informatica e Sistemistica ) dell’Università di Napoli Federico II.
Il palmare utilizzato è un HP IPAQ PocketPc, figura 38, con sistema operativo windows mobile
2003, processore TI OMAP 1510, memoria 55.03 MB, su cui è stata installata la JVM: WebSphere
Everyplace Micro Environment 5.7.2 - Personal Profile 1.0 for Windows Mobile 2003 2nd Ed.
Dopo aver installato e configurato la JVM, sono stati seguiti i passi presenti nella
LEAPUserGuide[8] e grazie al software Microsoft Active Sync [31] è stato copiato il file di jade
98
Capitolo 3 - Implementazione del prototipo
per l’installazione su dispositivo mobile, scaricabile direttamente dal sito jade, sotto il nome di
JadeLeapPjava.zip.
Inoltre è stato utilizzato anche un computer portatile Toshiba modello Satellite, con processore
Pentium Intel 1.73 Ghz, RAM da 1 GB, con sistema operativo Windows XP Home Edition 2002
Service Pack 2, sul quale è stato installato Jade-Leap per ambiente J2SE , sempre disponibile sul
sito jade.
Questo pc era in rete “mobilab.unina” cablata, mentre sul palmare è stata configurata una rete
wireless “mobilab” presente al DIS, collegata alla rete mobilab.unina.
In questo modo il palmare ed il portatile hanno potuto scambiarsi informazioni attraverso il
framework jade.
Figura 32: PDA Hp IPAQ
99
Capitolo 3 - Implementazione del prototipo
Fase di inizializzazione
Anche in questo caso ogni container dell’applicazione, sul laptop, viene lanciato attraverso un file
di batch che con l’opzione “-conf” di jade permette di caricare un file di configurazione, contenente
tutte le opzioni necessarie.
Nel file di configurazione da noi utilizzato per il main container non viene specificata nessuna
opzione mentre nei file di configurazione relativi agli agenti vengono impostate le seguenti opzioni:
•
Servizi
•
Opzione container settata al valore true
I servizi attivato sui container del laptop sono: notification service, address notification service,
topic management service. Questi servizi sono già stati spiegati in precedenza.
L’opzione container al valore true permette di indicare che si vuole lanciare un container di tipo non
main.
Per quanto riguarda la configurazione del palmare è stato creato un link, su di esso, che permetteva
di lanciare Jade-Leap con le seguenti opzioni:
•
Comando di esecuzione di tipo jade.MicroBoot
•
Opzione container
•
Opzione host
Il comando di esecuzione jade.MicroBoot permette di lanciare un container in modalità split, infatti
quando viene lanciata l’applicazione verrà creato un back end sul laptop ed un front end sul
palmare.
L’opzione container permette di lanciare un container di tipo non main.
L’opzione host permette di inserire l’indirizzo IP dell’host al quale connettersi, ovviamente questo
IP dev’essere accessibile dalla rete, ciò nel nostro caso è possibile poiché i dispositivi considerati
sono sulle stessa rete.
100
Capitolo 3 - Implementazione del prototipo
3.7 Classi utilizzate
Le classi utilizzate per il prototipo in ambiente wireless, mandate in esecuzione sul laptop, sono le
stesse utilizzate in precedenza tranne la classe PushBack che viene eseguita sul PDA.
Questa classe è abbastanza differente dalla precedente poiché come accennato in precedenza su di
un PDA non c’è lo stesso supporto java presente per un laptop.
Classe PushBack
L’agente PushBack ( codice sorgente PushBack.java ) è una classe java che eredita dalla classe
MyAgent1.
Quest’ultima eredita dalla classe jade.core.Agent e dispone di tre metodi:
setup()
takedown()
InvioRisposta()
Il primo metodo iscrive l’agente al servizio DF, fornendo il tipo ed il nome del servizio.
Il metodo takedown() serve per deregistrare l’agente dal DF e per eliminarlo invocando il metodo
doDelete() della classe jade.core.Agent.
L’ultimo metodo permette di inviare messaggi al duty manager, che prima viene cercato attraverso
il DF e poi gli vengono inviati i messaggi.
Inoltre l’interfaccia è stata cambiata rispetto a quella precedente data l’assenza della classe
javax.swing di java.
La nuova interfaccia eredita dalla classe java.awt.Frame, che è disponibile anche su palmare e
permette all’agente di dare una risposta di sottomissione ad una procedura oppure di non
disponibilità.
101
Capitolo 3 - Implementazione del prototipo
3.8 Procedura di handling de-icing / de-snowing
Un’altra procedura di handling che è stata considerata è quella di de-icing, aggiunta in secondo
momento all’interno del prototipo.
Questa procedura consiste nel processo di sghiacciamento degli aeromobili, ed è svolta da due
operatori: il duty manager, che invia il comando di esecuzione della procedura ed il deicer, che
sarebbe il mezzo di rampa che esegue effettivamente l’operazione.
Quest’ultimo per effettuare tale operazione deve rifornirsi del liquido sghiacciante e poi procedere.
Nell’interfaccia del duty manager sarà possibile lanciare la procedura ce ne saranno di due tipi, one
step e two step, corrispondenti a due tipologie di deicing differenti.
Fase di inizializzazione
La fase di inizalizzazione sostanzialmente è analoga a quella precedente, ma non vengono lanciato
il servizio di topic management non disponibile su PDA.
Classi utilizzate
Le classi utilizzate in questa procedura sono: DutyManager e DeIcer.
Diversamente rispetto ai casi precendenti l’agente DutyManager per inviare messaggi al deicer fa
una ricerca nel DF dell’operatore ottiene il suo AID ed invia i messaggi.
102
Capitolo 3 - Implementazione del prototipo
Duty Manager
Sostanzialmente questa classe è analoga a quella illustrata in precedenza, anche in termini di
intefaccia, dispone però di due metodi in più, che sono:
Deicing1();
Deicing2();
Questi due metodi sono corrispondenti rispettivamente alle procedure di de-icing one step e two
step.
Essi ricercano l’AID dell’agente DeIcer nel DF e inviano messaggi relativi alla tipologia
dell’aeromobile e all’operazione da compiere.
Deicer
Questa classe ( codice sorgente DeIcer.java ) dispone di un metodo e di un behaviour: il metodo
setup() che iscrive l’agente al servizio DF, e la CyclicBehaviour per la ricezione dei messaggi, che
preleva un messaggio dalla coda e poi ritorna in stato blocked..
L’interfaccia estende dalla classe java.awt.Frame ed è analoga al caso del push back, permettendo
all’agente di dare una risposta di sottomissione alla procedura, o di non disponibilità.
Il diagramma 3.3 è un diagramma di sequenza relativo alla comunicazione in ambiente wireless non
basata sul concetto di topic.
Questo diagramma comprende due agenti il duty manager e un operatore non ancora registrato,
anche in questo caso viene supposto che l’operatore possa svolgere le procedure che gli vengono
proposte.
Nel diagramma 3.4 viene mostrata la dipendenza tra le classi del prototipo in ambiente wireless,
nella classe MyAgent1 ci sono due metodi per inviare messaggi al duty manager invocati
rispettivamente per inviare un messaggio di disponibilità o di non disponibilità dell’operatore.
103
Capitolo 3 - Implementazione del prototipo
Diagramma 3.3: sequence diagram comunicazione non topic-based
104
Capitolo 3 - Implementazione del prototipo
Diagramma 3.4: class diagram prototipo in ambiente wireless
105
Conclusioni e sviluppi futuri
Questo lavoro di tesi ha mostrato alcune delle caratteristiche di un sistema multiagente, esse
rispettano i requisiti di progetto, si adattano pienamente allo scenario considerato, e permettono di
sviluppare un sistema autonomo.
La documentazione presente per quanto riguarda l’aerodromo ed i mezzi di rampa è risultata
abbastanza completa, mentre per quanto riguarda le procedure di handling è risultata un pò
mancante.
Il servizio di autenticazione permette di impostare politiche di sicurezza molto spinte, il servizio di
replicazione del main-container pemette la sostituzione del main-container master con la sua
replica, in caso di “kill”, in modo molto rapido.
Il servizio di topic management ha permesso lo sviluppo di un applicazione, dotata di molti agenti,
senza alcun conflitto nelle informazioni trasmesse.
L’add-on LEAP fornisce un supporto in ambiente mobile molto valido, infatti la riconnessione al
back end è molto rapida senza perdita di alcun pacchetto grazie ad un meccanismo di tipo store &
forward.
La simulazione in ambiente wireless ha portato a buoni risultati, jade è stato correttamente installato
sul PDA e sono state lanciate diverse procedure di handling.
Il risultato è stato soddisfacente il laptop ed il PDA comunicavano correttamente, la connessione era
molto stabile e in caso di perdita di connessione veniva subito inviata di nuovo la richiesta dal front
end al back end.
In ambiente mobile non è presente la classe javax.swing, implicando l’utilizzo di interfacce
utilizzando la classe java.awt.
Inoltre per i dispositivi PDA non è presente il servizio di topic management e quindi si è dovuto
implementare un meccanismo differente per ricevere ed inviare messaggi.
L’implementazione del prototipo ha permesso di mettere in luce tutte le caratteristiche menzionate
in precedenza, ed ha evidenziato la natura distribuita di questa architettura.
106
In futuro può esser desiderabile fare dei test e delle simulazioni su di numero maggiore di nodi
valutando così le prestazioni di JADE.
Si potrebbero anche migliorare le GUI, soprattutto per l’ambiente mobile.
Sarebbe anche necessario ottenere maggiore documentazione per quel che riguarda le procedure di
handling.
Il prototipo implementato è comunque possibile ampliarlo con ulteriori funzioni e procedure.
107
Bibliografia
[1] Sito internet ENAC ( ente nazionale aviazione civile ) : http://www.enac-italia.it
[2] Sito internet SEA: http://www.sea-aeroportimilano.it
[3] Sito internet ENAV ( ente nazionale assistenza al volo ) : http://www.enav.it
[4] IATA ( International Air Transport Association ) : http://www.iata.org
[5] ICAO ( International Civil Aviation Organization ) : http://www.icao.int
[6] NOTAM ( NOtice To AirMen ) : http://it.wikipedia.org/wiki/NOTAM
[7] Gestione Aeroportuale Prof. Luigi LaFranca.
[8] Jade website: http://jade.tilab.com/
[9] Wooldridge, M., An introduction to multiagent systems, John Wiley Ed.
[10] How to Do Things with Words, Austin 1962
[11] Mayfield, J., Labrou, Y. and Finin, T. Evaluating KQML as an Agent Communication
Language.
[12] Durfee, E. Distributed Problem Solving and Planning.
[13] Smith, R. and Davis, R. The Contract Net protocol: High Level Communication and Control
in a Distributed Problem Solver, 1980
[14] Georgeff, M., Communication and Interaction in Multi-Agent Planning,1983.
[15] Bussmann, S. and Muller, J. A Negotiation Framework for Co-operating Agents, 1992.
108
[16] Durfee, E. and Victor, L. Using Partial Global Plans to Coordinate Distributed Problem
Solvers, 1987.
[17] FIPA website: www.fipa.org
[18] Searle, J. Speech Acts, Cambridge, MA, Cambridge University Press, 1969
[19] http://www.gnu.org/licenses/
[20] Developing Multi-Agent Systems with JADE, Fabio Bellifemine, Giovanni Caire, Dominic
Greenwood
[21] http://java.sun.com/javase/technologies
[22] http://hsqldb.org/
[23] http://java.sun.com/products/midp
[24] http://ant.apache.org/
[25] http://java.sun.com/products/personaljava/
[26] http://java.sun.com/docs/books/tutorial/
[27] http://java.sun.com/developer/technicalArticles/Programming/serialization/
[28] Eclipse website: www.eclipse.org
[29] “Distributed Event-based Systems“, 2007 by Gero Muehl, Ludger Fiege, and Peter R. Pietzuch,
Springer-Verlag, Germany
[30] Thinking in Java, B.Eckel Prentice Hall
109
[31] http://www.microsoft.com/downloads/
Testi
-Developing Multi-Agent Systems with JADE, Fabio Bellifemine, Giovanni Caire, Dominic
Greenwood
-Wooldridge, M., An introduction to multiagent systems, John Wiley Ed.
-Thinking in Java, B.Eckel Prentice Hall
Altre pubblicazioni
- Fault Tolerance in Autonomous Systems:How and How Much?, Benjamin Lussier, Alexandre
Lampe, Raja Chatila, Jérémie Guiochet, Félix Ingrand, Marc-Olivier Killijian, David Powell
- Una Piattaforma per lo Sviluppo di Applicazioni Multi-Agente, A. Grosso, A. Gozzi, A. Boccalatte
- JADE – A FIPA-compliant agent framework, Fabio Bellifemine, Agostino Poggi, Giovanni
Rimassa
110