Vous êtes sur la page 1sur 7

Buscador de Productos basado en Agentes Mviles

Daniel Diez Snchez


Universidad Carlos III de Madrid Madrid, Espaa

Jorge Diez Snchez


Universidad Carlos III de Madrid Madrid, Espaa

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).

Categoria y Descripcin del Tema


D.0 [General]

Trminos Generales
Documentacin.

Palabras Clave:
Buscador, Mobile Agent (Agente mvil), Agente JADE, FIPA

Figura 1. Esquema bsico del sistema

2. INTRODUCCIN A JADE AGENTES DE MOVILIDAD 1. INTRODUCCIN


El sistema de Buscador de Productos se divide en tres partes: un cliente, un servidor de la aplicacin y las tiendas o servidores de datos. El usuario del sistema utilizar la aplicacin del cliente (una interfaz grfica que aparecer en pantalla) para solicitar el producto. Esta aplicacin conectar con el servidor central que se encargar de intercambiar los datos con todas las tiendas disponibles. Para realizar este procedimiento se crear un MobileAgent (Agente Mvil), que se mover desde el cliente al servidor central, y desde all, a todas las tiendas, devolviendo al cliente la mejor solucin. Todo ello se llevar a cabo mediante el uso de interfaces grficas.

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...

2.3 Definicin de agente JADE


Un agente JADE es una instancia de una clase JAVA definida por el usuario que extiende de la clase Agent (jade.core.Agent).

public class MiAgente extends Agent { ... }


Cada agente JADE se implementa como un nico hilo de ejecucin.

2.4 Ciclo de vida de un agente 2.2 LOS AGENTES MVILES


Los agentes mviles son procesos de software que son capaces de transitar por una red, generalmente una WAN, interactuando con host alejados, reuniendo informacin para el usuario y volviendo a su origen cuando las tareas fijadas por el usuario se hayan completado. Ejemplos de tareas que se pueden realizar son reservas de vuelos o manejo de una red de telecomunicaciones. Los agentes mviles traen con si grandes beneficios aunque no son funcionales, esto quiere decir que una tarea que realiza un agente mvil puede ser realizada por un agente colaborativo, la diferencia radica en que para movilizar el agente se requiere de un costo muy alto de recursos. Algunas de las ventajas que se pueden obtener al usar agentes mviles son: Reducen el costo de comunicacin, por ejemplo cuando en una ubicacin hay un gran volumen de informacin que necesita ser examinada y transmitida, esto ocupara una gran cantidad de recursos en la red y consumira mucho tiempo. En este caso el agente mvil puede determinar la informacin relevante al usuario y transmitir un resumen comprimido de esta informacin. Facilitar la coordinacin, es ms sencillo coordinar un cierto nmero de requerimientos remotos e independientes al comparar solo los resultados localmente. Reduce los recursos locales, los agentes mviles pueden ejecutar sus tareas en computadores diferentes del local, de tal manera que no consuman recursos de procesamiento, memoria y almacenamiento en estos. Computacin asncrona, mientras que un agente mvil realiza su tarea el usuario puede ir realizando otra, de tal manera que despus de un tiempo el resultado del agente mvil ser enviado al usuario. Un agente est sujeto a un ciclo de vida que define los estados en los que se puede encontrar y cmo se realizan los cambios de un estado a otro. El ciclo de vida de un agente JADE sigue el ciclo propuesto por FIPA, es decir, cumple con la propuesta de estndar de interoperabilidad entre agentes ms aceptada.

Figura 2. Esquema del ciclo de vida de un agente Descripcin de los estados:

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.

2.5 MOVILIDAD EN JADE


Cada instancia de ejecucin en JADE es llamada contenedor (es decir, contiene agentes). El conjunto de todos los contenedores se llama plataforma y proporciona una capa homognea que esconde a los agentes (y la aplicacin desarrollada). La plataforma tambin incluye un servicio de identificacin (asegurando que cada agente tiene un nico nombre) y un servicio de pginas amarillas, que puede distribuirse a travs de mltiples computadoras. Otra caracterstica muy importante consiste en la disponibilidad de una gran coleccin de herramientas grficas, que apoyan la depuracin y administracin del ciclo de vida de la aplicacin. Por medio de estas herramientas, es posible controlar a los agentes remotamente, an cuando ya se despleg y ejecut la aplicacin: pueden emularse las conversaciones del agente, pueden olfatearse los mensajes intercambiados, pueden supervisarse las tareas, as como los ciclos de vida de cada agente que est activo sobre la plataforma.

Desconocido. El ACC almacena cualquier mensaje o los rechaza, dependiendo de su propia poltica y de los requisitos de transporte del mensaje.

Descripcin de las transiciones:

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:

Las siguientes transiciones son usadas slo en Agentes Mviles.

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:

doMove() beforeMove() afterMove()

doClone() beforeClone() afterClone()

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.

3. ASPECTOS TCNICOS DE PROGRAMACIN Y DISEO BUSCADOR

LA DEL

3.2 DESCRIPCIN DE LAS CLASES JAVA


El siguiente paso ser el diseo de la aplicacin JAVA. A continuacin se presentan las clases implementadas y una breve explicacin de los mtodos desarrollados en ellas y su finalidad.

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.

3.1 DIAGRAMA DE FLUJO SOLUCIN DESARROLLADA

DE

LA

La solucin que se ha desarrollado se muestra grficamente en el esquema siguiente:

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:

Figura 6. Interfaz del Usuario


Por defecto, aparecern en la misma los datos correspondientes a un producto de la base de datos siendo posible modificar esa configuracin en la clase ClientAgentGUI. En esa interfaz sern introducidos los datos del producto que se quiere encontrar, y una vez pulsado el botn Buscar Producto, el Agente Mvil ser creado dando comienzo a todo el proceso de bsqueda explicado en los puntos anteriores. -

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

Figura 9. Mensaje mostrado por la aplicacin en caso de no estar disponible el producto

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.

Vous aimerez peut-être aussi