FIPA e JADE
Una breve introduzione
Vasco Gallotti
Email: [email protected]
Battle plan…
Prima Parte
FIPA
La specifica SC00023J
AMS
DF
MTS
ACL
Rappresentazione messaggi ACL
Protocolli di invio
Seconda Parte
Cos’è JADE
Installazione JADE
Servizi forniti da JADE
Scriviamo un agente in JADE
Cos’è JADE?
JADE: Java Agent DEvelopment framework è una piattaforma, altamente
ingegnerizzata, scritta in Java, per la creazione e gestione di agenti
intelligenti.
La caratteristica principale è la struttura distribuita del sistema stesso,
esso genera un “contenitore” (Container) nel qual gli agenti esistono e
convivono.
Ogni Istanza di JADE DEVE avere un contenitore principale
(“MainContrainer”) il cui ruolo è quello fondamentale di organizzare la
Comunicazione tra gli agenti.
Ad ogni main può essere associato uno o più container residenti sulla
stessa macchina o in qualsiasi altro posto nella rete…anche in internet!
Altro aspetto fondamentale: JADE è “FIPA Compliant”
FIPA
FIPA: Foundation for Intelligent and Phisycal Agent
È un’organizzazione che si è impegnata nella stesura degli standard che
regolano la vita di un agente intelligente.
Essa ha definito una serie di standard tra cui
 Ciclo di vita di un agente
 Protocolli di interazione tra agenti e altri agenti, e tra agenti e
piattaforma
 Struttura di un sistema multiagente
 ACL
ACL è un linguaggio grazie al quale vengono scritti i messaggi tra gli
agenti, esso si basa sullo “stato intenzionale” dell’agente.
Specifica SC00023J
La specifica SC00023J fornisce gli standard per tutto ciò che concerne il
“management” di un agente. E’ la specifica più importante per la
gestione e creazione di una piattaforma:
Software
Agent
Agent
Management
System
Message Transport System
Directory
Facilitator
Agent
Un agente può trovarsi in vari stati durante la sua esistenza, FIPA
formalizza questo concetto:
WAITING
SUSPENDED
Resume
Wait
Wake up
Suspend
ACTIVE
Destroy
Quit
Move
Invoke
Create
TRANSIT
Execute
INITIATED
Unknown
AMS
L’ams (Agent Mangement Service) è un servizio che deve esistere in ogni
piattaforma per agenti. Deve esistere necessariamente solo un AMS per
ogni piattaforma. L’ams è responsabile della gestione delle operazioni di
una piattaforma per agenti intelligenti:
 Creazione di un nuovo agente
 Eliminazione di un agente
 Migrazione di un agente
 Mantenimento del ciclo di vita di un agente
L’ams contiene al suo interno anche la lista degli agenti attualmente
presenti nel residenti nella piattaforma.
Va notato che un agente che si trova su una stessa piattaforma non è
detto che stia su di una stessa macchina.
DF
La Directory Facilitator è un servizio associato ad una piattaforma per
agenti grazie al quale un agente registra il servizio da lui stesso offerto.
E’ possibile paragonarlo alle pagine gialle.
Ad un agente è possibile:
 Registrare un servizio
 Modificare un suo servizio
 Eliminare una voce dal registro
 Cercare per trovare un agente associato ad un servizio
La DF è opzionale, può esistere una piattaforma senza una DF; in una
piattaforma possiamo trovare anche più di una DF.
MTS
Il Message Transport Service fornisce un meccanismo per trasferire
messaggi ACL tra agenti.
Ecco la struttura che deve avere:
Nella sua forma astratta un messaggio
è composto da una “envelope” e da
un “payload”.
L’”envelope” contiene solo
informazioni utili alla consegna del
messaggio.
L’MTS non deve in nessun caso
alterare il payload del messaggio.
Il payload è rappresentato da un
messaggio ACL
ACL Messagge
PARAMETRO
CATEGORIA PARAMETRO
ACL (Agent
Communication Language)
è il linguaggio utilizzato
performative
Tipo di atto comunicativo
dagli agenti per scambiare messaggi.
sender
Partecipante alla comunicazione
receiver
Partecipante alla comunicazione
ACL viene
utilizzato anche tra agente
e piattaforma per scopi
Partecipante alla comunicazione
interni.reply-to
content
Contenuto del messaggio
language
di content
La specifica
SC00061G definisce Descrittore
in dettaglio
i parametri dei
encoding
Descrittore di content
messaggi
ACL.
ontology
Descrittore di content
protocol
Controllo per la conversazione
Un messaggio
ACL è composto da
una serie di parametri e deve
conversation-id
Controllo per la conversazione
contenere
obbligatoriamente il performative-act,
sender, receiver e
reply-with
Controllo per la conversazione
content.
in-reply-to
Controllo per la conversazione
reply-by
Controllo per la conversazione
Atti comunicativi
Un agente che vuole inviare un messaggio ad un altro deve esprimere la
sua intenzione.
Questo viene realizzato iniziando ogni messaggio con delle parole chiave
che rappresentano l’intenzione dell’agente che ha inviato il messaggio
stesso.
Gli atti comunicativi sono:
Accept proposal
Propagate
Agree
Propose
Cancel
Proxy
Call for proposal
Query if
Confirm
Query ref
Disconfirm
Refuse
Failure
Reject proposal
Inform
Request
Inform if
Request when
Inform ref
Request whenever
Not-undeerstood
Subscribe
ACL Messagge in “String Mode”
Un messaggio ACL può essere rappresentato usando una serie di stringhe
disposte in un preciso modo
Message
= “(” MessaggeType
MessageParameter* “)”.
La specifica SC00070J definisce il modo in cui scrivere messaggi ACL
usando
una grammatica
ben definita.
MessageParameter
= “:sender” AgentIdentifier
| “:receiver” AgentIdentifierSet
Vediamo alcune regole di|questa
grammatica…
“:content”
String
| “:reply-with” Expression
| “:reply-by” DateTime
| “:in-reply-to” Expression
| “reply-to” AgentIdentifierSet
| “:language” Expression
| “:encoding” Expression
| “:ontology” Expression
| “:protocol” Word
| “:convesation-id” Expression.
Altre regole indispensabili sono:
AgentIdentifier
= “(” “agent-identifier”
“:name” word
[“:addresses” URLSequence]
[“:reslvers” AgentIdentifierSequence]
AgentIdentifierSequence
= “(” “sequence” AgentIdentifier* “)”.
AgentIdentifierSet
= “(” “set” AgentIdentifier* “)”.
Queste tre regole servono per generare tutto ciò che riguarda gli
identificativi agenti (AID). Questi possono servire in più parti del
messaggio ACL.
Vediamo alcuni esempi di messaggio in String mode:
(INFORM
(QUERY-IF
:sender
:sender (( agent-identifier
agent-identifier :name
:name simple@Blaskino:1099/JADE
RMA@Blaskino:1099/JADE
:addresses
:addresses (sequence
(sequence
IOR:000000000000001149444C3A464950412F4D54533A312E30000000000000000100
IOR:000000000000001149444C3A464950412F4D54533A312E30000000000000000100
00000000000060000102000000000A3132372E302E302E3100042600000019AFABCB00
00000000000060000102000000000A3132372E302E302E3100042600000019AFABCB00
00000002E88E33210000000800000000000000000A0000000000000100000001000000
00000002E88E33210000000800000000000000000A0000000000000100000001000000
200000000000010001000000020501000100010020000101090000000100010100 ))
))
200000000000010001000000020501000100010020000101090000000100010100
:receiver
:receiver (set
(set (( agent-identifier
agent-identifier :name
:name RMA@Blaskino:1099/JADE
simple@Blaskino:1099/JADE ))
:addresses (sequence
IOR:000000000000001149444C3A464950412F4D54533A312E30000000000000000100
:content “Homer goes to hollywood"
00000000000060000102000000000A3132372E302E302E3100042600000019AFABCB00
00000002E88E33210000000800000000000000000A0000000000000100000001000000
:in-reply-to homer
200000000000010001000000020501000100010020000101090000000100010100
))
:language English
):conversation-id "23" )
:content “Hallo Homer!!!"
:reply-with RMA@Blaskino:1099/JADE1107708472917 )
Inviare messaggi ACL
Esistono vari protocolli per inviare dei messaggi tra agenti, sia residenti
sulla stessa piattaforma, sia residenti su piattaforme distinte.
FIPA fornisce glil standard per inviare messaggi ACL usando i seguenti
protocolli:
HTTP
IIOP
WAP
Tutti questi protocolli sono delegati al trasporto di messaggi ACL, la scelta
di quale usare è lasciata al programmatore della piattaforma per agenti.
Scarica

jadeOverview