Documentos de Académico
Documentos de Profesional
Documentos de Cultura
JADELEAPJADEX
JADELEAPJADEX
Javier Carb, Grupo de Inteligencia Artificial Aplicada Curso Tecnologa de Agentes en Inteligencia Ambiental Campus de Colmenarejo, Univ. Carlos III de Madrid 6 de Julio de 2007
Indice
Introduccin a Jade, FIPA, LEAP y Jadex JADE:
Arquitectura de JADE Un agente en JADE Comportamientos JADE Mensajes JADE Ontologas en JADE
LEAP JADEx
Invocando agentes en Jadex La definicin xml de un agente en Jadex Un plan de un agente Jadex
Ejemplo de escenario
Internet Boarding Gate allen Exchange Smoking Zone Spa
Bar
Souvenirs
Tourist Info
Newspapers
BARAJAS
gates
Asignar responsabilidades
Roles Pasajero Aeropuerto Tripulante Personal servicios Seguridad
Pedir registro, pedir servicios_viaje, pedir servicios_comercio, pedir servicios_otros Ofrecer registro, ofrecer servicios_otros, ofrecer servicios_viaje
Ofrecer servicios_comercio
Ontologa
INFORM-REF checkin
SNIFFER de JADE
El estndar FIPA
www.fipa.org Especifica formalemnte el lenguaje de comunicacin (ACL)
Codificacin, semntica, y uso de los mensajes
Un mensaje FIPA-ACL
(inform :sender antagent :receiver bob martin :conversation_id example6 :reply_with 275 :reply_by wed 3pm :language lisp :content (target (project 1hour) (platform computer15) (author sean)) (time 8/07/01 4pm) (message build failed) (target compile) ) ) Intencin (performative) Inform, Request, Failure, Refuse, ... Direccionamiento sender, receiver Coordinacin de mensajes Respuesta esperada, id de dilogo
Un mensaje FIPA-ACL
Ejemplo: el agente billgates informa al agente barajas de su llegada (indicando informacin sobre s mismo y sobre su viaje)
(request :sender (agent-identifier :name billgates) :receiver (set (agent-identifier :name barajas)) :content intancia de subclase de accion new Register (new Pasajero (new Person() new Travel()))) :codec SL :ontology airport-ontology :reply-with register-billgates)
Introduccin a LEAP
Leap es una plataforma casi idntica a JADE para dispositivos limitados (mviles y pdas). Se distribuye desde la propia pgina de JADE Clases LEAP son un subconjunto adaptado de las clases que forman el paquete JADE. El cdigo de un agente JADE funciona casi tal cual en LEAP. Para simularlo en un PC necesitamos de Java Wireless Toolkit en lugar de jdk estndar.
Introduccin a JADEX
http://vsis-www.informatik.uni-hamburg.de/projects/jadex/
JADE facilita comunicaciones, pero no estructura de razonamiento interno. Razonamiento JADE depende de cmo se programen los comportamientos. Ideal para agentes reactivos. Se puede combinar con JESS o con DROOLS para dotar a los agentes de inteligencia. JADEX es nica plataforma compatible con JADE (es una extensin) que facilita implementacin del modelo deliberativo (BDI) de comportamiento.
Arquitectura de JADE
Arquitectura distribuida
Multiples Hosts Multiples Procesos Multiples Agent Containers
Un contenedor de agentes
Un proceso java por cada contenedor Es transparente a los agentes El contenedor principal alberga los servicios de la plataforma JADE Contenedores en contacto mediante Java RMI
Servicios de plataforma
Han sido implementados como agentes AMS: Agent Management Service
White Pages Matiene una lista de los identificadores de agentes (AID) que se estn ejecutando en la plataforma
Arquitectura JADE
Host 1 Application Agent Application Agent Host 2 Application Agent Application Agent Application Agent Host 3 Application Agent Application Agent Application Agent
AMS Agent
DF Agent
Jade distributed Agent Platform Jade Main-container JRE Jade Agent Container JRE Network protocol stack using RMI Jade Agent Container JRE
Un agente JADE
Un agente es un programa JADE de un solo thread. Incluye un modelo para programar su funcionamiento basado en tareas: Una tarea = un comportamiento (behaviour) Programadas por el agente Tareas operan en paralelo. Permite coordinacin explcita entre tareas Single-threaded Enva y recibe mensajes a travs de una API: Que facilita la codificacin/decodificacin de mensajes
Para ejecutar el agente, podemos hacerlo desde el interfaz de JADE o desde cualquier otro programa JAVA explcitamente
Dentro de un Agente
Agent Communication Language
Behaviour dispatch loop Behaviour Behaviour Ontology Profile Preferences Facts Rules Models
Agente Olazbal
Agente Seve
Un agente hola-mundo
import jade.core.Agent; public class HiWorldAgent extends Agent { protected void setup() { System.out.println(Hola mundo! + getAID().getName() + is ready.); } }
Comportamientos JADE
Cada agente tiene asociado un conjunto de comportamientos. Cada comportamiento puede realizar una tarea simple como: Enva este mensaje, Compra X, etc. Aunque se pueden crear comportamientos compuestos Los comportamientos son objetos java (una subclase de jade.core.Behaviour). Un comportamiento se programa redefiniendo el mtodo action()
Tipos de comportamientos
SimpleBehaviour Hay que definir el mtodo done CyclicBehaviour No se puede definir done, ya que es como si estuviera permanentemente devolviendo false OneShotBehaviour No se puede definir done ya que es como si estuviera permanentemente devolviendo true
Abstract class
Simple Behaviour
CompositeBehaviour
<<protected>> preAction() <<protected>> postAction() <<protected>> bodyAction() addBehaviour() removeBehaviour()
OneShotBehaviour
CyclicBehaviour
SequentialBehaviour
ParallelBehaviour
FSMBehaviour
<<protected>> bodyAction()
Mensajes JADE
Toda la comunicacin est basada en el intercambio de mensajes La Plataforma JADE que alberga al agente se encarga de hacerle llegar los mensajes a la plataforma del agente destinatario. La codificacin y decodificacin de mensajes la hacen automticamente los agentes
Construir un mensaje
Cada mensaje es una objeto de la clase jade.lang.acl.ACLMessage. Se puede acceder a sus campos mediante mtodos get y set. Pasos: Crear objeto mensaje Indicar acto comunicativo (performative) Indicar destinatarios Indicar otros atributos del mensaje (codificacin, ontologa, lenguaje, reply-with, etc.) Rellenar contenido (Cadena de caracteres en un lenguaje, u objetos de una ontologa)
Atributos de un mensaje
ConversationID Para enlazar mensajes de un mismo dilogo In reply to Para distinguir a qu mensaje est respondiendo Reply with Para indicar cmo responder al mensaje Reply by Para establecer un tiempo lmite de respuesta Language Para indicar en qu lenguaje est escrito el texto enviado como contenido Ontology Para especificar qu ontologa est usandose Protocol Especifica el protocolo (predefinido) Content Contenido principal del mensaje
Enviar un mensaje
ACLMessage msg = new ACLMessage(ACLMessage.INFORM); msg.addReceiver(new AID(Peter, AID.ISLOCALNAME)); msg.setLanguage(English); msg.setContent(Today it s raining); send(msg);
Recibir un mensaje
Para reconocer (matching) si el mensaje recibido es del tipo del que se espera, se utilizan plantillas (objetos de tipo jade.lang.acl.MessageTemplate) Pasos: Creamos plantilla para comparar el mensaje recibido con el esperado: MessageTemplate. Por ejemplo:
MatchPerformative(ACLMessage.REQUEST)
Invocamos mtodo receive del agente con el objeto de tipo plantilla como argumento. Este mtodo devuelve un objeto del tipo ACLMessage. si el mensaje != null era el mensaje que esperbamos.
Ontologas en JADE
Una ontologa proporciona una descripcin de los conceptos de un dominio y las relaciones entre ellos. Relaciona estos conceptos con objetos Java. JADE permite el manejo de ontologas para: Representar el dominio de aplicacin mediante conceptos, predicados, acciones, tipos de agentes, etc. Intercambiar elementos de la ontologa entre agentes (i.e. en el contenido del mensaje FIPA) Definirlas a mano es conceptualmente sencillo. Pero pesado si la ontologa tiene un tamao medio. Una alternativa es utilizar Protg 2000 para el modelado y generacin (Beangenerator) de la ontologa JADE.
Se utilizan en tpicamente en mensajes INFORM y QUERYIF, no en REQUEST. Trminos: pueden ser conceptos, acciones, primitivas, agregados, referencias y variables.
No aparecen aisladamente en los mensajes sino incluidos en predicados u otros tipos de trminos. Acciones: Representan una accin a realizar por un agente:
(Estudiar (Libro :titulo "Razonamiento con incertidumbre"\ :autor (Profesor :name Carbo)))
Tpicamente se utilizan en mensajes de tipo REQUEST. Agregaciones: conjuntos, listas de otros trminos. Primitivas: elementos atmicos como nmeros y cadenas de caracteres. Variables: ?x Referencias: Para todo x que:
(all ?x (pertenece ?x (Universidad :name Carlos3))
Luego registrarla junto con el codificador codec: que hayamos escogido (SLCodec, LEAPCodec ...)
getContentManager().registerLanguage( new SLCodec()); getContentManager().registerOntology(miont);
A continuacion con los mtodos set damos valor a los trminos de la ontologa a utilizar en el contenido del mensaje, p.e.
Libro milibro = new Libro(); milibro.set("Titulo", "Razonamiento con incertidumbre"');
LEAP
Leap es una plataforma casi idntica a JADE para dispositivos limitados (mviles y pdas). Se distribuye desde la propia pgina de JADE: LeapAddOn3.4.1.zip Clases LEAP son un subconjunto adaptado de las clases que forman el paquete JADE. LEAP hace uso de Apache ANT para compilar el ejecutable en dispositivos limitados (.jad). http://ant.apache.org/ El cdigo de un agente JADE funciona casi tal cual en LEAP. Se ejecuta sobre la versin micro de Java (J2ME) en lugar la versin estndar (JDK). J2ME incluido en el paquete Sun Java Wireless Toolkit. Descargable gratuitamente de la web.
Limitaciones de LEAP
No se puede utilizar el SNIFFER No se pueden utilizar clases de de Java que no estn incluidas en la versin micro (J2ME). Es decir, no todo jdk disponible. Por ejemplo, J2ME no soporta la librera grfica awt. de Jade que no pertenezcan a la librera de LEAP. Hay que contar con los fuentes de cualquier otra clase java a incluir, ya que hay que recompilar directamente todo el cdigo fuente a la vez para generar el .jad
Compilar LEAP
Editar fichero buidleap.properties incluyendo la carpeta del jwt y la version 2.0 de midp en los campos j2me-wtk-home y midp-version. Escribiremos ant j2se rebuild para generar el fichero jade/leap/j2se/lib/JadeLeap.jar que utilizar la plataforma jade que hace de main-container. Escribiremos ant midp rebuild para generar el fichero jade/leap/midp/lib/JadeLeap.jar que utilizar el emulador de jwt. Sugerencia: Para compilar agente de leap, usar netbeans con el mobility pack.
Ejecutar LEAP
Primero lanzar la plataforma JADE que con la que se comunicar el movil/pda:
set classpath=rutajade\jade\leap\j2se\lib\JadeLeap.jar java jade.Boot -nomtp
Despus lanzar el emulador jwt del movil/pda con el fichero .jad generado como argumento:
set classpath=rutawtk\wtk25\bin rutawtk\wtk25\bin\emulator -Xdescriptor:leapmnet.jad
Jadex
Extensin de JADE para utilizar una arquitectura deliberativa en JADE. Los agentes Jadex se ejecutan en un container de Java. Se definen con dos elementos: una descripcin en xml y clases java que representan sus planes. La implementacin en java de cada plan accede y modifica las creencias, satisface/abandona objetivos y adopta nuevos objetivos. En el fichero xml incluimos informacin sobre: creencias, deseos (goals), planes, mensajes y estados iniciales del agente.
Arquitectura Jadex
Podemos definir creencias iniciales usando argumentos con los que se cre el agente JADEX
<fact>new Movimientos($arg1)</fact>
Paso de parmetros
Se pueden indicar parmetros al definir un objetivo:
<performgoal name=comerpieza"> <parameter name=pieza" class=Pieza" /> </performgoal>
Los parmetros son clases java que nos definimos nosotros. El plan instanciado como consecuencia de la adopcin de un determinado objetivo recibe dicho parmetro:
<plan name=MoverPlan"> <parameter name=pieza" class=Pieza"><goalmapping ref=comerpieza.pieza"/></parameter> <body>new WarningPlan()</body> <trigger><goal ref=comerpieza"/></trigger> </plan>
Para registrarse:
<maintaingoalref name="df_keep_registered"> <concrete ref="dfcap.df_keep_registered"/> </maintaingoalref>