Professional Documents
Culture Documents
Agentes (/Agentes)
1. Agentes
1.1 Definicin de agente JADE
1.1.1 Clase Agent
Editar
4 (/page/messages/Agentes)
127 (/page/history/Agentes)
1. 2. 3. 4. 5. 6. 7.
Inicio | Glosario
El mtodo protegido setup() sirve para inicializar el agente incluyendo instrucciones que especificarn la ontologa a utilizar y los comportamientos asociad invoca al comenzar la ejecucin del agente. El mtodo protegido tak eDown() sirve para liberar recursos antes de la eliminacin del agente. Este mtodo es invocado cuando se realiza una llamada al que es el que realmente da por finalizada la ejecucin del agente. Ambos mtodos deben ser sobreescritos. En su implementacin se define una clase interna por cada uno de los comportamientos asociados al agente. Estos comportamientos se utilizan bsicamente p recepcin de mensajes, aunque tambin se pueden utilizar para realizar otras tareas. Podemos encontrar una descripcin completa de la API de jade.core.Agent aqu . i m p o r tj a d e . c o r e . A g e n t ; p u b l i cc l a s sM i A g e n t ee x t e n d sA g e n t{ p r o t e c t e dv o i ds e t u p ( ) {/ /i n i c i a l i z a c i nd eM i A g e n t e} p r o t e c t e dv o i dt a k e D o w n ( ){/ /l i b e r a c i nd er e c u r s o sd e la g e n t e} }
La clase Agent: Es una superclase comn que permite a los usuarios crear software de agentes. Suministra mtodos que permiten ejecutar las tareas bsicas de los agentes como:
Pasar mensajes utilizando objetos ACLMessage, con correspondencia de patrones. Dar soporte al ciclo de vida de un agente. Planificar y ejecutar mltiples actividades concurrentemente. Los programadores de aplicaciones basadas en agentes deben escribir sus propios agentes como subclases de Agent, aadiendo tantos comportamientos especficos necesarios y explotando las capacidades de la clase Agent.
Un agente est sujeto a un ciclo de vida en el que se definen los estados en los cuales se puede encontrar el agente, as como los cambios que se pueden realizar ent estados. El ciclo de vida de un agente JADE sigue el ciclo propuesto por FIPA , es decir, cumple con la propuesta del estndar de interoperabilidad entre agentes ms aceptado
paces.com/) | Iniciar Sesin (http://www.wikispaces.com/site/signin?goto=http%3A%2F%2Fprogramacionjade.wikispaces.com%2FAgentes) Get your Wikispaces Classroom now: the easiest manage your class. en el AMS, tiene un nombre, una direccin y puede acceder a todas las opciones de JADE. Activoway : El to Agente est registrado
Iniciado: El objeto Agente est creado pero todava no se ha registrado en el AMS, no tiene nombre ni direccin y tampoco se puede comunicar con otros agen
Suspendido: El Agente est parado. Su hilo de ejecucin est detenido y no ejecuta ningn Comportamiento. En espera : El Agente est bloqueado esperando por algo. Su hilo de ejecucin est dormido en un monitor de java y se despertar cuando se cumpla una cierta reciba un mensaje). Desconocido: El Agente ha sido eliminado. El hilo de ejecucin ha terminado y se ha eliminado del registro del AMS. Trnsito: Un Agente mvil entra en este estado mientras est migrando a una nueva localizacin. El sistema sigue guardando los mensajes en el buffer hasta qu estar activo.
Un agente puede cambiar de un estado a otro a travs de transiciones. Estas transiciones pueden ser ejecutadas a travs de mtodos disponibles en la clase Agent y s mtodos que se pueden sobreescribir. Para saber en que estado se encuentra un agente se puede usar el mtodo getAgentState( ) de la clase Agent que devuelve un AgentState p u b l i cA g e n t S t a t eg e t A g e n t S t a t e ( ) Accin Crear Invocar Descripcin Creacin o instalacin de un nuevo agente. Invocacin de un nuevo agente. doSuspend() Mtodo que realiza la accin Constructor Mtodo accin setup()
Suspender Pone un agente en estado suspendido. Puede ser iniciado por el agente o por el AMS. Reanudar Contina con la ejecucin de un agente que se encuentra en estado suspendido. Slo puede ser iniciado por el AMS. Esperar Mover Ejecutar Destruir Pone un agente en estado de espera. Slo puede ser iniciado por el agente. Pone un agente en otro contenedor cambiando su estado al de trnsito. Slo puede ser iniciado por el agente. Contina con la ejecucin de un agente que se encuentra en estado de trnsito. Slo puede ser iniciado por el AMS. La terminacin normal o forzosa de un agente. Slo puede ser iniciado por el AMS y no puede ser ignorado por el agente.
doWait() doMove()
Despertar Continua con la ejecucin de un agente que se encuentra en estado de espera. Slo puede ser iniciado por el AMS. doWake()
beforeMo
doDelete()
takeDow
En el mtodo setup() del agente adems puede: Modificar el registro del AMS. Registrar el agente de forma explcita en el DF. Aadir las tareas/comportamientos/behaviors que ejecutar el agente. Etc.
El esqueleto de la creacin de un agente es bastante simple. El siguiente cdigo muestra un ejemplo de creacin de un agente que lo nico que hace es visualizar el te iniciado.". / /E s q u e l e t od eu na g e n t eJ A D E i m p o r tj a d e . c o r e . A g e n t ; p u b l i cc l a s sM i A g e n t ee x t e n d sA g e n t{ p r o t e c t e dv o i ds e t u p ( ){ S y s t e m . o u t . p r i n t l n ( " E la g e n t es eh ai n i c i a d o . " ) ; } }
c a t a l o g u e=n e wH a s h t a b l e ( ) ; / /C r e ae lc a t l o g o m y G u i=n e wB o o k S e l l e r G u i ( t h i s ) ;/ /C r e al ai n t e r f a zd eu s u a r i o m y G u i . s h o w ( ) ; / /M u e s t r al ai n t e r f a zd eu s u a r i o / /R e g i s t r ae ls e r v i c i o" b o o k s e l l i n g "( v e n t ad el i b r o s )e nl a sp g i n a sa m a r i l l a s D F A g e n t D e s c r i p t i o nd f d=n e wD F A g e n t D e s c r i p t i o n ( ) ; d f d . s e t N a m e ( g e t A I D ( ) ) ; / /E s t a b l e c eu ni d e n t i f i c a d o rp a r ae la g e n t e( d e v u e l t op o rg e t A I D ( ) ) S e r v i c e D e s c r i p t i o ns d=n e wS e r v i c e D e s c r i p t i o n ( ) ; s d . s e t T y p e ( " b o o k s e l l i n g " ) ; / /E s t a b l e c ee lt i p od es e r v i c i o s d . s e t N a m e ( " J A D E b o o k t r a d i n g " ) ;/ /E s t a b l e c ee ln o m b r ed e ls e r v i c i o d f d . a d d S e r v i c e s ( s d ) ; / /A a d el ad e s c r i p c i nd e ls e r v i c i oa la g e n t e 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 d ) ;/ /I n t e n t ar e s g i t r a ra la g e n t ec o nl ad e s c r i p c i nd a d aa n t e r i o r m e n t e } c a t c h( F I P A E x c e p t i o nf e ){ / /S is ep r o d u c eu n ae x c e p c i nF I P A( N o t U n d e s t o o d ,F a i l u r e ,R e f u s e , . . . ) f e . p r i n t S t a c k T r a c e ( ) ; / /D i r i g el ae x c e p c i nal as a l i d ae s t n d a r } / / A a d ee lc o m p o r t a m i e n t od ea t e n d e rp e t i c i o n e sd el o sa g e n t e sc o m p r a d o r e s a d d B e h a v i o u r ( n e wO f f e r R e q u e s t s S e r v e r ( ) ) ; / / A a d ee lc o m p o r t a m i e n t od ea t e n d e rp e t i c i o n e sd ec o m p r ad el o sa g e n t e sc o m p r a d o r e s a d d B e h a v i o u r ( n e wP u r c h a s e O r d e r s S e r v e r ( ) ) ; } / /...R e s t od e lc d i g o }
JADE es una plataforma que permite la ejecucin de un sistema de agentes en el que stos puedan estar repartidos entre diversos hosts. Para ejecutar un agente en re ejecutar la orden java jade.Boot -container -host nombreHost <nombre_del_agente>:<ruta_al_agente.class> desde la lnea de comandos.
Tambin es posible crear un RMA que ponga en contacto la plataforma local con la remota. Esto significa que desde el RMA de ambas plataformas podremos contemp producidos en el sistema de agentes, e interactuar con dichos agentes. Para ello tenemos que ejecutar la orden java jade.Boot -container -host nombreHost RMA1:j desde la lnea de comandos.
Hay tres formas de terminar la ejecucin de un agente: desde el GUI de JADE, mediante la llamada al mtodo doDelete() dentro del cdigo del agente y desde la lnea d ventana de la consola.
Es un mtodo de la clase Agent que realiza una transicin del los estados Activo, Suspendido o En espera al estado de Borrado destruyendo al agente. Se suele usar para finalizar agentes que estn en ejecucin continua. El mtodo doDelete() llama automticamente al mtodo takeDown(). protected void takeDown()
Mtodo que se invoca antes de que el agente termine su ejecucin. Se usa normalmente para realizar tareas de "limpieza" como por ejemplo, desregistrar el age del programador del agente el sobrescribir el mtodo para proveer al agente de un comportamiento especial antes de su destruccin.
/ /... r d e n e sp a c k a g eei m p o r t p u b l i cc l a s sB o o k B u y e r A g e n te x t e n d sA g e n t{ / /... p r o t e c t e dv o i ds e t u p ( ){ / /... i f( a r g s! =n u l l... ){ / /... } e l s e{/ /s in os eh ai n t r o d u c i d oe la r g u m e n t ot t u l od e ll i b r of i n a l i z a S y s t e m . o u t . p r i n t l n ( " N os eh ae s p e c i f i c a d oe lt t u l od e ll i b r o " ) ; d o D e l e t e ( ) ; / /l l a m a d aa lm t o d op a r al ad e s t r u c c i nd e la g e n t e } } p r o t e c t e dv o i dt a k e D o w n ( ){/ / a u s ed e f i n e nl a so p e r a c i o n e sd el i m p i e z a S y s t e m . o u t . p r i n t l n ( " A g e n t ec o m p r a d o r" + g e t A I D ( ) . g e t N a m e ( ) + "t e r m i n a n d o . " ) ;/ /s l or e a l i z au n ad e s p e d i d a } / /...r e s t od e lc d i g o }
/ /D i r i g el ae x c e p c i na lt e r m i n a ld es a l i d a } m y G u i . d i s p o s e ( ) ; / /C i e r r al ai n t e r f a zd eu s u a r i o S y s t e m . o u t . p r i n t l n ( " S e l l e r a g e n t" + g e t A I D ( ) . g e t N a m e ( ) + "t e r m i n a t i n g . " ) ;/ /S ed e s p i d e } / /...r e s t od e lc d i g o } / /e lv e n d e d o rn ol l a m ap o rs s o l oa lm t o d od o D e l e t ey aq u es uc o m p o r t a m i e n t oe sc c l i c o / /l al l a m a d aat a k e D o w np o rp a r t ed e lm t o d od o D e l e t es l os ep r o d u c es is ec i e r r al ai n t e r f a zol ac o n s o l a / /D oD e l e t es eu t i l i z ae nl ac l a s eB o o k S e l l e r G u i / /... r d e n e sp a c k a g eei m p o r t p u b l i cc l a s sB o o k S e l l e r G u ie x t e n d sJ F r a m e{ p r i v a t eB o o k e S e l l e r A g e n tm y A g e n t ; / /... B o o k S e l l e r G u i ( B o o k S e l l e r A g e n ta ){ / /c o n s t r u c t o r / /... m y A g e n t=a ; / /... a d d W i n d o w L i s t e n e r( n e wW i n d o w A d a p t e r ( ){ / /c o m p o r t a m i e n t od el av e n t a n ad ei n t e r f a z p u b l i cv o i dw i n d o w C l o s i n g ( W i n d o w E v e n te ){/ /r e c o g ee le v e n t od ec e r r a rl av e n t a n a m y A g e n t . d o D e l e t e ( ) ; / /l l a m a d aa lm t o d oe n c a r g a d od el al i m p i e z a } } ) ; } / /... }
/ /... r d e n e sp a c k a g eei m p o r t p u b l i cc l a s sB o o k B u y e r A g e n te x t e n d sA g e n t{ p r i v a t eS t r i n gt a r g e t B o o k T i t l e ; p r i v a t eA I D [ ]s e l l e r A g e n t s ;
/ /T t u l od e ll i b r oq u es eq u i e r e / /L i s t ad el o sa g e n t e sv e n d e d o r e sd el i b r o sc o n o c i d o s
/ /...r e s t od e lc d i g o }C i e r r ed el ac l a s eB o o k B u y e r A g e n t
Nota: Como se puede observar cuando un parmetro es una cadena compuesta por varias palabras, stas deben estar encerradas con comillas (" "). Adems si se qui parmetros stos deben separase mediante un espacio en blanco.
Los parmetros se pueden indicar desde la interfaz grfica en la ventana de creacin de un nuevo agente. Cada parmetro se separa por un espacio en blanco. Si se qu espacios en blanco debe de encerrarse entre comillas dobles, pero estas comillas dobles sern parte del parmetro recibido.
1.8 Ejercicios
Prctica 1 Introduccin a un SMA en un entorno JADE La finalidad de este ejercicio es aprender a crear un agente JADE y que este realice tareas.
Objetivo: crear 5 agentes, 4 de ellos con nombres de balnearios (ej. Arnoia) y nombre del servicio, lo que ofrecen (ejemplos: SPA, Alojamiento, Alojamiento_Y_SPA), el corresponder con un cliente que desea un listado de los servicios disponibles, (ej. El Balneario Arnoia , ofrece las siguientes posibilidades: Alojamiento_Y_SPA, ).
Para crear estos agentes, sern necesarias dos clases diferentes: una clase para los agentes que ofrecen servicios y otra clase para los agentes que solicitan servicios Los agentes que ofrecen servicios debern realizar las siguientes tareas: Mostrar por pantalla un saludo, su nombre, su AID y su estado. Pasar como argumentos el tipo y nombre de servicio, capturar estos argumentos y asignrselos al servicio. Registrar su servicio en las pginas amarillas. El agente que solicita servicios deber realizar las siguientes tareas: Mostrar por pantalla un saludo, su nombre, su AID y su estado. Buscar y listar los tipos y nombres de los servicios que ofrece un agente determinado y mostrar el AID del agente que ofrece ese servicio. Finalmente los agentes se despiden y eliminan sus registros de las pginas amarillas.
Crear una carpeta llamada "Ejercicio" en "C:\jade\src\examples\". Copiar y pegar el cdigo proporcionado en cada una de las plantillas en un nuevo fichero con nombre igual al de la clase (estos archivos se situarn en la carpeta anteriormente). Completar el cdigo del ejercicio sustituyendo los " ... " por lo que se considere adecuado. Compilar el cdigo desde una consola en el directorio especificado en el primer punto con la sentencia "javac *.java". Abrir una nueva consola para ejecutar el RMA. Lanzar desde consola los 5 agentes que se piden en el ejercicio.
/ * I m p l e m e n t a c i nd e la g e n t eq u es er e g i s t r a r c o nu n * s e r v i c i oe nl a sp g i n a sa m a r i l l a s . * / / / C r e a ru n ac a r p e t ad e n t r od ee x a m p l e s( c : \ j a d e \ s r c \ e x a m p l e s )yu b i c a re ne l l at o d o sl o sa r c h i v o sd el ap r c t i c a p a c k a g ee x a m p l e s . E j e r c i c i o ; i m p o r tj a d e . c o r e . A g e n t ; i m p o r tj a d e . d o m a i n . d f ; i m p o r tj a d e . d o m a i n . F I P A A g e n t M a n a g e m e n t . A M S A g e n t D e s c r i p t i o n ; i m p o r tj a d e . d o m a i n . D F S e r v i c e ; i m p o r tj a d e . d o m a i n . F I P A E x c e p t i o n ; i m p o r tj a d e . d o m a i n . F I P A A g e n t M a n a g e m e n t . D F A g e n t D e s c r i p t i o n ; i m p o r tj a d e . d o m a i n . F I P A A g e n t M a n a g e m e n t . S e r v i c e D e s c r i p t i o n ;
p u b l i cc l a s sS e r v i c i o se x t e n d sA g e n t{ / /I N I C I A L I Z A C I O ND E LA G E N T E p r o t e c t e dv o i d. . . . . .( ){ / *V i s u a l i z a rn o m b r e ,A I Dye s t a d od e la g e n t e * / S y s t e m . o u t . p r i n t l n ( " \ n " ) ; S y s t e m . o u t . p r i n t l n ( " E lA g e n t eh as i d oi n i c i a l i z a d o .\ n " ) ; S y s t e m . o u t . p r i n t l n ( " N o m b r ec o m p l e t od e la g e n t e :"+ . . . . . . . . . + " \ n " ) ;/ / O b t e n e re lN o m b r eC o m p l e t od e lA g e n t e S y s t e m . o u t . p r i n t l n ( " A I Du n i c od e la g e n t e :" +. . . . . . . . . ." \ n " ) ; / /O b t e n e re lA I Dd e lA g e n t e S y s t e m . o u t . p r i n t l n ( " E s t a d od e la g e n t e :" +. . . . . . . .+ " \ n " ) ; / / O b t e n e re le s t a d od e lA g e n t e S y s t e m . o u t . p r i n t l n ( " \ n " ) ; / *R e g i s t r a r s ee nl a sp a g i n a sa m a r i l l a s* / D F A g e n t D e s c r i p t i o nd e s c r i p c i o n=n e w. . . . . . . ; S e r v i c e D e s c r i p t i o ns e r v i c i o=n e w. . . . . . . . . . ;
S e r v i c e D e s c r i p t i o ns e r v i c i o=n e w. . . . . . . . . . ; / /C a p t u r a rl o sp a r a m e t r o sp a r aa s i g n a r s e l o sa lt i p oyn o m b r ed e ls e r v i c i o O b j e c t [ ]a r g s=. . . . . . . . ; / /S en e c e s i t a nd o sa r g u m e n t o s,e lp r i m e r os e r e lt i p od es e r v i c i oye ls e g u n d oe ln o m b r ed ed i c h os e r v i c i o i f( a r g s! =n u l l& &a r g s . l e n g t h= =2 ){ S t r i n gt i p o=( S t r i n g )a r g s [ 0 ] ; S t r i n gn o m b r e=( S t r i n g )a r g s [ 1 ] ; . . . . . . ; / / a s i g n a rt i p oa ls e r v i c i o . . . . . . ; / / a s i g n a rn o m b r ea ls e r v i c i o d e s c r i p c i o n . a d d S e r v i c e s ( s e r v i c i o ) ; t r y{ D F S e r v i c e . r e g i s t e r ( t h i s ,. . . . . ) ; / /R e g i s t r a re la g e n t eys ud e s c r i p c i o ne ne lD F } c a t c h( E x c e p t i o nf e ){ f e . p r i n t S t a c k T r a c e ( ) ; } } e l s e { S y s t e m . o u t . p r i n t l n ( " E R R O R :S en e c e s i t a nd o s2a r g u m e n t o s .S eF i n a l i z al aE j e c u c i n . " ) ; . . . . . . ; / /l l a m a d aa lm t o d op a r al ad e s t r u c c i o nd e la g e n t e } }
/ * I m p l e m e n t a c i nd e la g e n t eq u eb u s c a r s e r v i c i o s * e nl a sp g i n a sa m a r i l l a s . * /
/ / C r e a ru n ac a r p e t ad e n t r od ee x a m p l e s( c : \ j a d e \ s r c \ e x a m p l e s )yu b i c a re ne l l at o d o sl o sa r c h i v o sd el ap r c t i c a p a c k a g ee x a m p l e s . E j e r c i c i o ;
i m p o r tj a d e . c o r e . A I D ; i m p o r tj a d e . c o r e . A g e n t ; i m p o r tj a d e . d o m a i n . d f ; i m p o r tj a d e . d o m a i n . F I P A A g e n t M a n a g e m e n t . A M S A g e n t D e s c r i p t i o n ; i m p o r tj a d e . d o m a i n . D F S e r v i c e ; i m p o r tj a d e . d o m a i n . F I P A E x c e p t i o n ; i m p o r tj a d e . d o m a i n . F I P A A g e n t M a n a g e m e n t . D F A g e n t D e s c r i p t i o n ; i m p o r tj a d e . d o m a i n . F I P A A g e n t M a n a g e m e n t . S e r v i c e D e s c r i p t i o n ; i m p o r tj a v a . u t i l . I t e r a t o r ; p u b l i cc l a s sC l i e n t ee x t e n d sA g e n t{ p r i v a t eA I D [ ]a g e n t e s ;/ / S e r ae la r r a yd o n d es eg u a r d e nl o sa g e n t e se n c o n t r a d o s / /I N I C I A L I Z A C I O ND E LA G E N T E p r o t e c t e dv o i d. . . . .( ){ / *V i s u a l i z a rn o m b r e ,A I Dye s t a d od e la g e n t e * / S y s t e m . o u t . p r i n t l n ( " \ n " ) ; S y s t e m . o u t . p r i n t l n ( " E lA g e n t eh as i d oi n i c i a l i z a d o .\ n " ) ; S y s t e m . o u t . p r i n t l n ( " N o m b r ec o m p l e t od e la g e n t e :"+. . . . . . . + " \ n " ) ;/ / O b t e n e re lN o m b r eC o m p l e t od e lA g e n t e S y s t e m . o u t . p r i n t l n ( " A I Du n i c od e la g e n t e :" +. . . . . . .+ " \ n " ) ; / /O b t e n e re lA I Dd e lA g e n t e S y s t e m . o u t . p r i n t l n ( " E s t a d od e la g e n t e :" +. . . . . . . .+ " \ n " ) ; / / O b t e n e re le s t a d od e lA g e n t e
/ / O b t e n e rl o sA I Dd el a sd e s c r i p c i o n e s a g e n t e s=n e wA I D [ d e s c r i p c i o n e s . l e n g t h ] ; f o r( i n ti=0 ;i<d e s c r i p c i o n e s . l e n g t h ;+ + i ){ / / g e t N a m e ( )d el ac l a s eD F A g e n t D e s c r i p t i o nd e v u e l v eu nA I D a g e n t e s [ i ]=d e s c r i p c i o n e s [ i ] . g e t N a m e ( ) ; / / g e t N a m e ( )d el ac l a s eA I Dd e v u e l v ee ln o m b r ed e la g e n t e S y s t e m . o u t . p r i n t l n ( a g e n t e s [ i ] . g e t N a m e ( )+"O f r e c el o ss i g u i e n t e ss e r v i c i o s :\ n " ) ; I t e r a t o r < S e r v i c e D e s c r i p t i o n >i t=d e s c r i p c i o n e s [ i ] . g e t A l l S e r v i c e s ( ) ; w h i l e( i t . h a s N e x t ( ) ) { S e r v i c e D e s c r i p t i o ns=i t . n e x t ( ) ; S y s t e m . o u t . p r i n t l n ( "-E lB a l n e a r i o"+s .. . . . . .+" ,o f r e c el a ss i g u i e n t e sp o s i b i l i d a d e s :"+s .. } } } c a t c h( F I P A E x c e p t i o nf e ){ f e . p r i n t S t a c k T r a c e ( ) ; } . . . . . . . . ; / /L l a m a d aa lm t o d op a r ae l i m i n a re la g e n t e }
Ayuda Acerca de Blog Precio Privacidad Trminos Apoyo Elevar de categora Contributions to http://programacionjade.wikispaces.com/ are licensed under a Creative Commons Attribution Share-Alike Non-Commercial 3.0 License. Portions not contributed by visitors are Copyright 2014 Tangient LLC