Java Agent DEvelopment Framework Systemy Agentowe Michaª Wójcik Katedra Architektury Systemów Komputerowych Wydziaª Elektroniki, Telekomunikacji i Informatyki Politechnika Gda«ska 5 pa¹dziernika 2011 Michaª Wójcik (KASK, ETI, PG) JADE 5 pa¹dziernika 2011 1 / 28
Konspekt 1 Wst p JADE Wymagania Uruchomienie 2 Agent Typy agentów w JADE Usªugi Dziaªanie agenta Komunikacja 3 Podsumowanie Michaª Wójcik (KASK, ETI, PG) JADE 5 pa¹dziernika 2011 2 / 28
JADE JADE Java Agent DEvelopment Framework: stworzony przez Telecom Italia, nadzorowany przez: Telecom Italia, Motorola, Whitestein Technologies AG, Profactor GmbH oraz France Telecom R&D, caªkowicie zaimplementowany w j zyku Java, zgodny ze standardem FIPA [4], dost pny na licencji LGPL. Michaª Wójcik (KASK, ETI, PG) JADE 5 pa¹dziernika 2011 3 / 28
Wymagania JADE 4.1: Java SE 1.5 (JRE, JDK), Java ME + CDC + Personal Prole, Java ME + CLDC + MIDP 1.0/2.0, Android 2.1, sie, nazwy hostów (dla poprawnej komunikacji pomi dzy kontenerami), ±rodowisko graczne (do gracznego zarz dzania). Michaª Wójcik (KASK, ETI, PG) JADE 5 pa¹dziernika 2011 4 / 28
Instalacja http://jade.tilab.com/ export $CLASSPATH: jade.jar, commons-codec-1.3.jar. Michaª Wójcik (KASK, ETI, PG) JADE 5 pa¹dziernika 2011 5 / 28
Uruchomienie java -cp $CLASSPATH jade.boot [options] -container - instancja nie b d ca kontenerem gªównym, -host - nazwa hosta, gdzie zostaª uruchomiony gªówny kontener, -local-host - nazwa hosta, gdzie jest uruchamiany kontener, -port - port, na którym nasªuchuje gªówny kontener, -local-port - port, na którym b dzie nasªuchiwaª uruchamiany kontener, -gui - uruchamia RMA, -name - nazwa platformy, -container-name - nazwa uruchamianego kontenera. Michaª Wójcik (KASK, ETI, PG) JADE 5 pa¹dziernika 2011 6 / 28
Typy agentów Typy agentów w JADE: Agent, df (Directory Facilitator) katalog usªug, DummyAgent agent zarz dzany przez u»ytkownika, SocketProxyAgent, Introspector debugowanie, LogManagerAgent zarz dzanie logami, rma Remote Management Agent GUI, ams Agent Management System, Snier podsªuchiwanie agentów, TestAgent agent zarz dzany przez u»ytkownika, GatewayAgent agent w zewn trznych aplikacjach. Michaª Wójcik (KASK, ETI, PG) JADE 5 pa¹dziernika 2011 7 / 28
Directory Facilitator DF Directory Facilitator: katalog usªug, rejestrowanie i wyrejestrowywanie usªug, wyszukiwanie usªug, komunikacja poprzez wymian wiadomo±ci, jade.domain.dfservice, jade.domain.fipaagentmanagement.dfagentdescription. Michaª Wójcik (KASK, ETI, PG) JADE 5 pa¹dziernika 2011 8 / 28
Rejestrowanie usªugi p r i v a t e v o i d r e g i s t e r S e r v i c e ( S t r i n g name ) { D F A g e n t D e s c r i p t i o n d f a d = new D F A g e n t D e s c r i p t i o n ( ) ; d f a d. setname ( getaid ( ) ) ; S e r v i c e D e s c r i p t i o n sd = new S e r v i c e D e s c r i p t i o n ( ) ; sd. s e t T y p e ( name ) ; sd. setname ( getlocalname ( ) + " " + name ) ; d f a d. a d d S e r v i c e s ( sd ) ; t r y { D F S e r v i c e. r e g i s t e r ( t h i s, d f a d ) ; catch ( E x c e p t i o n e ) { System. out. p r i n t l n ( e. getmessage ( ) ) ; Michaª Wójcik (KASK, ETI, PG) JADE 5 pa¹dziernika 2011 9 / 28
Wyrejestrowanie usªugi p r i v a t e v o i d d e r e g i s t e r S e r v i c e ( ) { t r y { D F S e r v i c e. d e r e g i s t e r ( t h i s ) ; catch ( E x c e p t i o n e ) { System. out. p r i n t l n ( e. getmessage ( ) ) ; Michaª Wójcik (KASK, ETI, PG) JADE 5 pa¹dziernika 2011 10 / 28
Wyszukiwanie usªug p u b l i c D F A g e n t D e s c r i p t i o n [ ] f i n d S e r v i c e s ( S t r i n g name ) { D F A g e n t D e s c r i p t i o n [ ] r e s u l t = n u l l ; D F A g e n t D e s c r i p t i o n d f a d = new D F A g e n t D e s c r i p t i o n ( ) ; S e r v i c e D e s c r i p t i o n sd = new S e r v i c e D e s c r i p t i o n ( ) ; sd. s e t T y p e ( name ) ; d f a d. a d d S e r v i c e s ( sd ) ; t r y { r e s u l t = D F S e r v i c e. s e a r c h ( t h i s, d f a d ) ; catch ( E x c e p t i o n e ) { System. out. p r i n t l n ( e. getmessage ( ) ) ; r e t u r n r e s u l t ; Michaª Wójcik (KASK, ETI, PG) JADE 5 pa¹dziernika 2011 11 / 28
Agent p u b l i c c l a s s MyAgent extends Agent { @ O v e r r i d e p r o t e c t e d v o i d s e t u p ( ) { / r e g i s t e r l a n g u a g e s / / r e g i s t e r o n t o l o g i e s / / r e g i s t e r s e r v i c e s / / add b e h a v i o u r s / Michaª Wójcik (KASK, ETI, PG) JADE 5 pa¹dziernika 2011 12 / 28
Zachowania agenta Michaª Wójcik (KASK, ETI, PG) JADE 5 pa¹dziernika 2011 13 / 28
Zachowanie agenta p u b l i c c l a s s MyBehaviour extends B e h a v i o u r { p u b l i c MyBehaviour ( Agent myagent ) { s u p e r ( myagent ) ; @ O v e r r i d e p u b l i c v o i d a c t i o n ( ) { myagent. getaid ( ) ; @ O v e r r i d e p u b l i c boolean done ( ) { r e t u r n t r u e ; Michaª Wójcik (KASK, ETI, PG) JADE 5 pa¹dziernika 2011 14 / 28
Schemat wysyªania wiadomo±ci A1 Prepare the message to A2 A2 Get the message from the message queue and process it Send the message Post the message in A2 s message queue Distributed JADE runtime Rysunek: Przekazywanie wiadomo±ci [1] Michaª Wójcik (KASK, ETI, PG) JADE 5 pa¹dziernika 2011 15 / 28
Struktura wiadomo±ci parameter performative sender receiver reply-to content language encoding ontology protocol conversation-id reply-with in-reply-to reply-by Tabela: Parametry wiadomo±ci [6] category of parameters type of communicative acts participant in communication content of message description content control of conversation Michaª Wójcik (KASK, ETI, PG) JADE 5 pa¹dziernika 2011 16 / 28
Typy komunikatów Tabela: Typy komunikatów [5] proposal accept proposal reject proposal query if conrm disconrm request refuse agree inform not understood zªo»enie propozycji akceptacja propozycji odrzucenie propozycji pytanie czy stwierdzenie jest prawdziwe stwierdzenie jest prawdziwe stwierdzenie jest faªszywe» danie wykonania akcji odmowa wykonania akcji zgoda na wykonanie akcji (w przyszªo±ci) informacja lub wynik akcji niezrozumiaªa wiadomo± Michaª Wójcik (KASK, ETI, PG) JADE 5 pa¹dziernika 2011 17 / 28
Wysyªanie wiadomo±ci ACLMessage msg = new ACLMessage ( ) ; msg. a d d R e c e i v e r ( new AID ( " r e c e i v e r ", f a l s e ) ) ; msg. s e t P e r f o r m a t i v e ( ACLMessage. INFORM ) ; msg. s e t C o n t e n t ( " message " ) ; msg. s e t C o n t e n t O b j e c t ( new O b j e c t ( ) ) ; myagent. send ( msg ) ; Michaª Wójcik (KASK, ETI, PG) JADE 5 pa¹dziernika 2011 18 / 28
Odbieranie wiadomo±ci ACLMessage msg = myagent. r e c e i v e ( ) ; ACLMessage msg = myagent. b l o c k i n g R e c e i v e (TIMEOUT ) ; i f ( msg!= n u l l ) { ACLMessage r e p l y = msg. c r e a t e R e p l y ( ) ; r e p l y. s e t C o n t e n t ( " r e p l y " ) ; myagent. send ( r e p l y ) ; Michaª Wójcik (KASK, ETI, PG) JADE 5 pa¹dziernika 2011 19 / 28
Ontologie Rysunek: Referencyjny model tre±ci [3] Michaª Wójcik (KASK, ETI, PG) JADE 5 pa¹dziernika 2011 20 / 28
Ontologie p u b l i c c l a s s MyOntology extends BeanOntology { p r i v a t e s t a t i c f i n a l S t r i n g NAME = "my o n t o l o g y " ; p r i v a t e s t a t i c O ntology t h e I n s t a n c e = new MyOntology (NAME) ; p u b l i c s t a t i c O ntology g e t I n s t a n c e ( ) { r e t u r n t h e I n s t a n c e ; p r i v a t e MyOntology ( S t r i n g name ) { s u p e r ( name ) ; t r y { add ( C o n c e p t I m p l. c l a s s ) ; add ( P r e d i c a t e I m p l. c l a s s ) ; catch ( E x c e p t i o n e ) { Michaª Wójcik (KASK, ETI, PG) JADE 5 pa¹dziernika 2011 21 / 28
Ontologie p u b l i c c l a s s MyAgent extends Agent { @ O v e r r i d e p r o t e c t e d v o i d s e t u p ( ) { ContentManager cm = getcontentmanager ( ) ; cm. r e g i s t e r L a n g u a g e ( new SLCodec ( ) ) ; cm. r e g i s t e r O n t o l o g y ( MyOntology. g e t I n s t a n c e ( ) ) ; Michaª Wójcik (KASK, ETI, PG) JADE 5 pa¹dziernika 2011 22 / 28
Pakowanie wiadomo±ci C o n t e n t E l e m e n t ce = new P r e d i c a t e I m p l ( ) ; C o n t e n t E l e m e n t ce = new A c t i o n ( i d, new C o n c e p t I m p l ( ) ) ; msg. s e t O n t o l o g y ( o n t o l o g y ) ; msg. s e t L a n g u a g e ( new SLCodec ( ). getname ( ) ) ; t r y { myagent. getcontentmanager ( ). f i l l C o n t e n t ( msg, ce ) ; catch ( E x c e p t i o n e ) { Michaª Wójcik (KASK, ETI, PG) JADE 5 pa¹dziernika 2011 23 / 28
Wypakowywanie wiadomo±ci C o n t e n t E l e m e n t ce ; t r y { ContentManager cm = myagent. getcontentmanager ( ) ; ce = ( C o n t e n t E l e m e n t ) cm. e x t r a c t C o n t e n t ( msg ) ; catch ( E x c e p t i o n e ) { i f ( ce i n s t a n c e o f C o n t e n t E l e m e n t L i s t ) { C o n t e n t E l e m e n t L i s t c e l = ( C o n t e n t E l e m e n t L i s t ) ce ; f o r ( C o n t e n t E l e m e n t e : c e l. t o A r r a y ( ) ) { Michaª Wójcik (KASK, ETI, PG) JADE 5 pa¹dziernika 2011 24 / 28
Bibliograa I [1] Fabio Bellifemine, Giovanni Caire, Tiziana Trucco, and Giovanni Rimassa. JADE Programmer's Guide. Telecom Italia Lab, April 2010. [2] Fabio Bellifemine, Giovanni Caire, Tiziana Trucco, Giovanni Rimassa, and Roland Mungenast. JADE Administrator's Guide. Telecom Italia Lab, April 2010. [3] Fabio Luigi Bellifemine, Giovanni Caire, and Dominic Greenwood. Developing Multi-Agent Systems with JADE. Wiley, 2007. [4] FIPA Foundations for Intelligent Physical Agents. Standard Status Specications. http://www.fipa.org/repository/standardspecs.html. Michaª Wójcik (KASK, ETI, PG) JADE 5 pa¹dziernika 2011 25 / 28
Bibliograa II [5] FIPA Foundations for Intelligent Physical Agents. FIPA Communicative Act Library Specication, December 2002. [6] FIPA Foundations for Intelligent Physical Agents. FIPA Message Structure Specication, December 2002. [7] Telecom Italia Lab. Java Agent DEvelopment Framework Documentation. http://jade.tilab.com/doc/index.html. Michaª Wójcik (KASK, ETI, PG) JADE 5 pa¹dziernika 2011 26 / 28
Pytania? Pytania? Michaª Wójcik (KASK, ETI, PG) JADE 5 pa¹dziernika 2011 27 / 28
Dzi kuj! Dzi kuj za uwag! Michaª Wójcik (KASK, ETI, PG) JADE 5 pa¹dziernika 2011 28 / 28