Académique Documents
Professionnel Documents
Culture Documents
100048493@alumnos.uc3m.es
100035972@alumnos.uc3m.es
ABSTRACT
El objetivo de este artculo es explicar el funcionamiento del uso de agentes JADE [1] para resolver un problema de un buscador de productos en varias tiendas, encontrando el producto ms barato que se obtiene cumpliendo las exigencias especificadas por el usuario (marca del producto, modelo y tiempo mximo de entrega al cliente).
Trminos Generales
Documentacin.
Palabras Clave:
Buscador, Mobile Agent (Agente mvil), Agente JADE, FIPA
LOS
2.1 JADE
JADE (Java Agent DEvelopment Framework) - es una plataforma de software desarrollada en TILab (Italia) bajo la filosofa Open Source para el desarrollo de aplicaciones distribuidas basadas en agentes que cumple con las especificaciones de la FIPA (Foundation for Intelligent Physical Agents)[2]. El proyecto JADE comenz en 1998, y la primera versin (v. 1.3) estuvo lista en febrero del 2000, y fue lanzada bajo licencia LGPL. JADE se puede ejecutar en un amplio rango de ambientes: desde los empresariales, hasta en dispositivos mviles (PDAs y telfonos mviles) gracias a una extensin (API [2]), que se desarroll para el proyecto LEAP (Lightweight Extensible Agents Plataform). 2.1.1 Caractersticas Ha sido desarrollado totalmente en Java y debido a que cumple con las especificaciones de FIPA, puede interoperar con otras plataformas de Agentes, que cumplan con este estndar. Provee
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Conference04, Month 12, 2004, City, State, Country. Copyright 2004 ACM 1-58113-000-0/00/0004$5.00.
un conjunto de APIs que son independientes de la red y de la versin de Java, dejando libertad a los desarrolladores de escoger el ambiente de desarrollo de Java que se adecue ms a sus necesidades. Las APIs son simples y fciles de usar, lo cual oculta al desarrollador la complejidad de la plataforma. Es configurable permite que se usen solo las caractersticas que se requieran, disminuyendo de esta manera la sobrecarga computacional. JADE es por un lado un framework que nos ayuda a crear nuestros agentes, y por otro un contenedor que contiene agentes. Este contenedor les da una serie de servicios a los agentes, como puede ser el registro de los mismos, dar un cauce de comunicacin entre los agentes locales, y entre estos y otro agentes distribuidos, autenticacin y autorizacin de los agentes...
Activo: El ACC (Agent Communication Channel) entrega mensajes al agente de forma normal. Iniciado/En espera/Suspendido: El ACC almacena el mensaje en el buffer correspondiente hasta que el agente est activo (o lo reenva a una nueva direccin si el sistema lo requiere)
Trnsito. El ACC almacena cualquier mensaje hasta que el agente se activa o bien entrega el mensaje en otra localizacin si antes se ha indicado un forward para ese agente como en el caso anterior. Solamente los agentes mviles pueden entrar en este estado.
Desconocido. El ACC almacena cualquier mensaje o los rechaza, dependiendo de su propia poltica y de los requisitos de transporte del mensaje.
Crear: La creacin o instalacin de un nuevo agente. Invocar: La invocacin de un nuevo agente. Destruir: La terminacin forzosa de un agente. Slo puede ser iniciado por el AMS (Agent Management System) y no puede ser ignorado por el agente. Salir: La terminacin normal de un agente. Puede ser ignorada por el agente. Suspender: Pone un agente en estado de suspensin. Puede ser iniciado por el agente o por el AMS. Reanudar: Continua con la ejecucin de un agente que se encuentra en estado suspendido. Slo puede ser iniciado por el AMS. Esperar: Pone un agente en estado de espera. Slo puede ser iniciado por el agente. Despertar: Continua con la ejecucin de un agente que se encuentra en estado de espera. Slo puede ser iniciado por el AMS.
JADE soporta movilidad de cdigo y estado de ejecucin. Es decir, un agente puede dejar de ejecutarse sobre una mquina, migrando sobre diferentes nodos remotos (sin la necesidad de tener el cdigo del agente instalado en ese nodo), y reiniciar su ejecucin en el punto en que fue interrumpido (realmente, JADE implementa una forma de movilidad no tan dbil, porque la pila y el registro del programa no pueden ser salvados en Java). Esta funcionalidad permite, por ejemplo, distribuir la carga computacional al tiempo de ejecutar los movimientos del agente, a las maquinas menos cargadas sin algn impacto en la aplicacin. La movilidad de un agente es la habilidad para que este migre o haga una copia de s mismo (clonarse) a travs de uno o mltiples nodos de una red. El soporte de movilidad en JADE consiste en un conjunto de clases y mtodos que permiten a un agente, ejecutar las acciones requeridas por s mismo o por el AMS (Agent Management System), y una ontologa especfica de movilidad (MobilityOntology). Jade soporta movilidad y clonacin interplataforma:
Que involucra varios hosts. Cada uno con su contenedor. A peticin del propio agente.
Mover. Pone a un agente en estado de trnsito. Slo puede ser iniciado por el agente. Ejecutar. Contina con la ejecucin de un agente que se encuentra en estado de trnsito. Slo puede ser iniciado por el AMS.
Se ha estudiado a detalle la seccin de movilidad de JADE, especficamente la clase Agent que contiene los mtodos para llevar a cabo el proceso de movilidad y clonacin, estos son:
Sin embargo estos mtodos requieren de ciertos parmetros (objetos de tipo Location) porque los agentes necesitan conocer su localizacin para saber cundo y a dnde desplazarse. Para poder utilizar los objetos de tipo Location debemos incluir el siguiente import:
import jade.core.*;
Despus de que el AMS le proporciona a un agente la informacin del destino al cual puede dirigirse, est preparado para llamar a su mtodo doMove(Location) y comienzar el proceso de migracin. Los mtodos beforeMove(), afterMove() son provistos para especificar algunas tareas antes y despus de moverse. El mtodo doClone() requiere de un parmetro extra, esto significa que lleva el destino en el cual se clonar adems de un nombre diferente al nombre del agente original, doClone(Location, String). Los mtodos beforeClone() y afterClone() son provistos para especificar algunas tareas antes y despus de clonarse.
Figura 3. Diagrama de flujo Bsicamente, como se refleja en el diagrama se tratar de un cliente que desea obtener el mejor precio de un determinado producto con un requisito de tiempo mximo de entrega. Estas especificaciones son transferidas al Servidor Central (Aplication Server AS) que mediante el uso de un Mobile Agent creado por la propia mquina del Cliente y que se desplazar al Servidor Central, conectar con las tiendas disponibles.
LA DEL
A continuacin se presentar paso a paso el desarrollo del software del Buscador de Productos. Primeramente, ser expuesto de manera grfica mediante un diagrama de flujo para proseguir a continuacin con el modelo de clases planteado (donde detallaremos el contenido y funcin de cada una de las siete clases implementadas).
3.2.1 ClientGUI
Esta clase servir para desarrollar la interfaz grfica del usuario, obtener los datos introducidos por el mismo, y posteriormente enviarlos a la clase ClientAgent cuando el botn Buscar Producto de la interfaz es pulsado por el usuario. La clase ClientAgent ser la encargada principal de transferir los datos al servidor central y obtener resultados.
DE
LA
3.2.2 ClientAgent
Esta clase inicializa la clase ClientGui, procediendo a comenzar con todo el proceso de bsqueda. Cuando el botn Buscar Producto es pulsado, se proceder a crear un Agente Mvil y dicho agente ser movido al Container del Servidor Principal, desde donde se proceder a analizar todos los datos que se irn obteniendo de todas las tiendas. Una vez transferido el Agente Mvil al Servidor Central, el Cliente se pondr en modo espera para recibir una respuesta con el resultado definitivo acerca del producto.
3.2.3 ASAgent
La clase ASAgent ser la encargada de inicializar el Agente AS, con el objetivo de estar preparado para recibir la consulta del Mobile Agent. Una vez el Agente mvil llegue al Container principal, este ser redirigido a los containers de las tiendas respectivas. Una vez recibidos los datos de todas las tiendas, ser enviado de nuevo al container del Cliente con los datos definitivos.
3.2.4 ShopAgent
La clase ShopAgent ser la encargada de inicializar el Agente de cada tienda, con el objetivo de estar preparado para recibir al agente mvil con su solicitud en el container de cada tienda. Una vez que es recibida, se procesarn los datos en busca del mejor producto disponible que cumpla los requisitos. La creacin de la clase ShopAgent tambin inicializar la base de datos con los valores de objetos ejemplo que se han usado para el desarrollo de la aplicacin.
3.2.5 MobileAgent
La solucin bsica del problema a resolver se basar en el uso de esta clase como se ha explicado previamente. Siguiendo algunos ejemplos del Tutorial Jade [4] se proceder a la creacin de un Agente Mvil que se ir desplazando de container en container con el nico objetivo de transferir informacin entre diferentes hosts de una misma red. En esta clase sern implementados los diferentes mensajes que sern intercambiados con el agente que se encuentre en el mismo container que el Agente Mvil en cada momento (depender en cada caso si se encuentra en el container AS, Tienda o Cliente. Figura 4. Diagrama UML de Clases
4. IMPLEMENTACIN FUNCIONAMIENTO
JADE
3.2.6 Producto:
Esta clase ser la encargada de definir un objeto Producto donde sern guardadas las caractersticas de los Productos (nombre de la marca, modelo, precio y plazo de entrega). Contendr asimismo todos los mtodos necesarios para obtener dichos atributos.
El problema planteado en la introduccin tal como se ha explicado en los puntos previos se ha resuelto mediante el uso de la plataforma JADE, y seguir los siguientes pasos: El host AS (Servidor Central) inicializar la aplicacin, creando de esta forma el Agente AS, el cul se encontrar en el Container Principal (Main Container). Todos los agentes creados posteriormente se encontrarn en Containers diferentes. La aplicacin se ha desarrollado de forma que, cuando una tienda se conecta, un agente Tienda es creado (Tienda1, Tienda2 o Tienda3 para el ejemplo que se trata en este paper) y se pondr en modo espera con el objetivo de esperar cualquier mensaje del Agente Mvil. Cuando un mensaje se recibe, se procesarn los datos y se fabricar un mensaje respuesta que ser enviado al Agente Mvil de forma inmediata. Este procesamiento ser llevada a cabo en el mtodo encontrarProducto de la clase ShopAgent. Consistir en buscar el producto demandado en la base de datos de la tienda. Una vez recibido el mensaje respuesta por el Agente Mvil, proceder de nuevo a desplazarse al Container Principal. Una vez que todas las tiendas se encuentran conectadas, se proceder a inicializar la aplicacin en el host
3.2.7 TestValues:
La clase TestValues contendr todos los productos que se utilizan como ejemplos en el desarrollo de la aplicacin como se ha descrito previamente. Se crearn diversos objetos de modelos idnticos con diferentes precios y tiempos de entrega dependiendo de la Tienda correspondiente, con el fin de poder probar las diferentes capacidades de la aplicacin. Como se ha comentado previamente, la solucin implementada tendr como principal estructura diversos ejemplos analizados en la Gua de Programador JADE [5] y en los Tutoriales JADE[4, 5] Un breve resumen de la solucin implementada sera el siguiente diagrama UML de las clases JAVA desarrolladas:
Cliente. De esta forma se crear el agente Cliente y se inicializar la interfaz del usuario mediante la llamada a la clase ClientAgentGui. Una vez inicializados todos los agentes, y previamente a crear el Agente Mvil, el esquema de containers ser el mostrado en la siguiente figura:
Figura 7. Ventana Jade Remote Agent Management GUI con el MobileAgent ya creado y visitando la Tienda1.
Figura 5. Ventana Jade Remote Agent Management GUI Y la interfaz que aparecer en el host Cliente al usuario ser la siguiente:
El Agente Mvil creado obtendr los datos del producto deseado del Cliente, y una vez se ha llevado a cabo esta operacin ser movido al Container Principal. En este punto, dicho agente proceder a preguntar al Agente AS acerca de las tiendas que hay conectadas, siendo enviado por el mismo a los containers correspondientes de cada Tienda. Primeramente se mover al Container de la Tienda1, donde preguntar al Agente Tienda1 sobre el producto en cuestin. Una vez que el Agente Tienda obtiene los datos del producto, realizar una llamada al mtodo encontrarProducto, el cul recorrer la base de datos correspondiente buscando las caractersticas indicadas por el usuario. A continuacin, proceder a la creacin de un nuevo mensaje respuesta con los resultados envindoselo al Agente Mvil, procesando el mismo la respuesta recibida y movindose de nuevo al Container Principal. Una vez all, se proceder a repetir el mismo proceso con el resto de tiendas conectadas. Las respuestas recibidas en cada Tienda, son analizadas dentro de la clase MobileAgent. Para ello, esta clase poseer unas variables determinadas para guardar la marca, el modelo, el precio y el tiempo de entrega de la mejor respuesta recibida hasta el momento. Estos valores sern comparados con los resultados que se reciben en cada caso de cada Tienda, siendo sustituidos en caso de ser mejores que los guardados previamente. Inicialmente, los valores precio y tiempo de entrega sern fijados a infinito en la clase MobileAgent. Cuando el Agente Mvil finaliza visitando todas las tiendas, volver al Container Principal, y de ah, al Container del Cliente, donde enviar un mensaje al Agente Cliente con las mejores caractersticas encontradas para el objeto en cuestin. Este resultado ser mostrado por pantalla de la siguiente forma:
En este ejemplo, se ha desarrollado la aplicacin para que pueda ejecutarse hasta en un mximo de 3 tiendas, ya que para evitar mayores problemas de complejidad y limitarse al objetivo principal del uso de agentes mviles, hemos utilizado un fichero TestValues con valores fijos, tanto de los productos de cada tienda, como del nombre de los Containers y agentes de cada tienda. Una posible mejora sera desarrollar una interfaz para la clase ShopAgent, que nos solicitase los productos que tiene cada tienda o se pudiese leer por fichero los mismos. Asimismo, sera posible desarrollar una aplicacin que descubriese el nombre de todos los containers que estn conectados en cada momento al Servidor, ya que se van asignando progresivamente (Container-1, Container2.) pero la desconexin de una de las tiendas y la posterior reconexin es un problema ya que no se le asigna el Container que tena previamente, sino uno nuevo.
Figura 8. Resultado obtenido en la aplicacin para un producto disponible Si el producto requerido con sus caractersticas, no es encontrado o no esta disponible con las mismas, se mostrar un mensaje por pantalla indicndolo:
6. REFERENCES
[1] Java Agent Development Framework http://jade.tilab.com/ [2] JADE v3.5 API http://jade.tilab.com/doc/api/index.html [3] Foundation for Intelligent Physical Agents http://www.fipa.org [4] JADE TUTORIAL. Jade programming for Beginners. http://jade.tilab.com/doc/JADEProgramming-Tutorial-forbeginners.pdf Author: Giovanni Caire (TILAB, formerly CSELT) [5] JADE PROGRAMMERS GUIDE http://jade.tilab.com/doc/programmersguide.pdf Authors: Fabio Bellifemine, Giovanni Caire, Tiziana Trucco (TILAB, formerly CSELT), Giovanni Rimassa (University of Parma) [6] JADE Tutorial and Primer http://www.iro.umontreal.ca/%7Evaucher/Agents/Jade/JadeP rimer.html Author: Jean Vaucher and Ambroise Ncho
5. CONCLUSIN
En el desarrollo de esta aplicacin se ha comprobado el posible uso de agentes mviles, tal como se relataba en las definiciones de JADE, y la gran facilidad que proporciona para intercomunicar diferentes hosts. El uso de diferentes mensajes puede ayudarnos en las diferentes mejoras posibles tal como se explica en alguna de las implementaciones desarrolladas en la Gua del Programador JADE [5]. El nico gran problema encontrado aparte de la implementacin misma del software ha sido el encontrar una versin JAVA adecuada para la versin JADE descargada y utilizada. En este caso, se trata de la ltima versin JADE 3.50 disponible. La versin JAVA utilizada ha sido la 1.6.0.