AGENTES Y JADE Introducción: Los agentes pueden ser concepto de estudio de varias áreas , como lo son inteligencia artificial, sistemas distribuidos, ingeniería de software, redes y sistemas autónomos entre otras, lo cual hace que su definición este influenciada según sea el área en la cual tengamos nuestro interés[JAS200], nosotros creemos que una definición apropiada de agente es: “Los agentes son simplemente un sistema computacional con la capacidad de tomar acciones autónomas en un medio, para así cumplir sus objetivos”.[GW2001] Según la anterior definición, encontramos que los agentes como tal están ligados directamente a su medio , y por lo tanto podrán modificar este medio con la finalidad de cumplir su objetivo (igual que las personas); También, los agentes, en ocasiones tendrán la oportunidad de basar sus decisiones según criterios mas estructurados, como puede ser información histórica o experiencias del agente con el medio, pero vale aclarar que esto no es obligatorio (según la definición). Los agentes como tal pueden comunicarse con otros agentes, formando sociedades de agentes, que le sirven al mismo para cumplir sus tareas; al igual que lo hacen las personas los agentes pueden delegar tareas a otros agentes o pueden competir por un recurso, y esto hace que nazca un lenguaje o protocolo con el cual los agentes se puedan comunicar fácilmente y sin ambigüedades de definiciones en los conceptos que quieren dar a entender de un agente a otro(a diferencia de las personas). El protocolo que se a definido para la comunicación entre agentes es el KQML que sinifica “Knowledge query and manipulation language”.La estructura de este protocolo es[GW2001]: (KQML-performative :sender <palabra> (nombre agente que envía el mensaje) :reciver <palabra> (nombre agente que recibe el mensaje) :language <palabra> (lenguaje en que se comunican(ejemplo prolog)) :ontology <palabra> :content <expresión> (puede ser vació si el tipo del mensaje lo define)) ejemplo: (Cancelar :sender Hugo :reciver Alejx :language prolog :ontology mundo-tesis :content (esta vació ya que el mismo tipo de mensaje define la acción)). FIPA (Foundation for intelligent Physical Agents): Es una organización que desarrolla estándares para software de agentes para así permitir que diferentes sistemas de agentes interactúen, mas claramente se puede ver una definición de lo que es FIPA en su misión: “la promoción de tecnologías y especificaciones de interoperabilidad que permitan el trabajo interno de sistemas de agentes inteligentes dentro del comercio y la industria”. En la siguiente figura podemos ver y aclarar lo que propone FIPA con respecto a la construcción de plataformas de agentes: En la figura diferenciamos cuatro(4) aspectos importantes en los cuales se debe basar cualquier plataforma de agentes, y estos son[FAMS2002]: AMS(Agent Management System): Es un servicio de paginas blancas, que tiene como funciones principales: Es el encargado de mantener un directorio de agentes y encargarse del ciclo de vida de un agente. Controla y supervisa el uso de la plataforma. DF(Directory Facilitator):Es un servicio de paginas amarillas. MTS(Message Transport System). Existen en la actualidad muchas plataformas de agentes basadas en las especificaciones de FIPA, pero en este articulo nos vamos a detener a ana lizar la plataforma “JADE” y BESA. JADE(Java Agent DEvelopment Framework): JADE es un framework de agentes que esta basada en FIPA, y como tal debe tener unos aspectos que debe cumplir toda plataforma de agentes que sea FIPA complaint, y estos son el AMS, DF, agentes y la definición de un protocolo que permita intercambiar mensajes entre agentes, estos mensajes son comúnmente llamados los ACL(agent comunication language) que viene siendo una abstracción del tipo de mensajes que se definieron atrás como KQML. Como tal una plataforma jade tiene un contenedor principal llamado main en donde residen el AMS y el DF, este contenedor main es el primero que debe arrancar en una plataforma jade y posteriormente pueden empezar otros contenedores con sus respectivos agentes , pero siempre teniendo en cuenta que se deben registrar los agentes al contenedor principal (el main).Esto nos da como resultado un sistema de comunicación P2P híbrido[FBE2003] tal y como se muestra en la figura X siguiente. Sistema P2P híbrido Figura X deteniéndose un poco en este punto se podría pensar que la plataforma jade tiene un punto de falla en el contenedor principal(el main) ya que si este se cae entonces la plataforma toda se vendría al piso, sin embargo los creadores de Jade previeron esto y hicieron que este main, aunque es un(1) agente, puede estar en varias maquinas al mismo tiempo, tal y como lo muestra la siguiente figura[FBE12003]: En la plataforma del lado izquierdo solo existe un main pero jade da la opción que puedan existir mas de un main tal y como vemos en la figura del lado derecho, así si por ejemplo el main-container-1 no prestara mas este servicio por cualquier motivo entonces, la plataforma quedaría de la siguiente manera [FBE12003]: Ventajas de JADE [GRI2003]: • • Es una plataforma probada y sobre la cual se han desarrollado aplicaciones. Se tiene una extensión de jade para dispositivos móviles llamada LEAP, donde aparentemente la extensión de agentes desarrollados para JADE normal es igual para un agente desarrollado en LEAP. • • Se tiene un contenedor principal que es donde reside el AMS , con la flexibilidad de tenerlos en forma de cluster para así dar una plataforma que es tolerable a fallos. La comunicación entre agentes dentro de una misma plataforma puede ser vía RMI o por medio de llamados locales, esta complejidad es resuelta por el contenedor que es el que sabe donde se podría encontrar el agente, esto se hace a través de técnicas de cache en donde cada contenedor mantiene una tabla (cache)llamada LADP (Local Agent Descriptor Table), mientras el contenedor principal tiene una tabla global de toda la plataforma, llamada GADP (Global Agent Descriptor Table). Desventajas de Jade: • • no tiene desarrollado el mecanismo de guardas, que es el que nos permite darle una mejor selección a los mensajes que llegan a un agente, por lo tanto esto es tarea del programador a la hora de implementar cada comportamiento. Como un agente para jade es un solo hilo que tiene su propio control, puede darse el caso que debido a un comportamiento mal programado el agente pierda reactividad ante el entorno. Besa: La arquitectura besa esta compuesta por tres niveles: nivel de agente, nivel social y nivel del sistema. En el nivel de agente se trata todo lo referente a sus comportamientos y a los eventos a los cuales reacciona el agente. En el nivel social se trata lo referente a la comunicación que existe entre agentes(a través de un modelo de programación de eventos), “una interacción se puede modelar por un evento bien definido, que se puede asociar a una guarda”. En el nivel de sistema es donde se define el ciclo de vida de los agentes y la administración de estos[EG2003]. Ventajas: • • • • Es un sistema que maneja muy bien el mecanismo de guardas, lo que permite al programador definir un nivel muy fino de granularidad a la hora de plantear los comportamientos de un agente. Los comportamientos corren sobre su propio hilo lo que hace que estos no bloqueen el funcionamiento total del agente, al contrario de cómo sucede en JADE. Besa deja que el programador solo piense en los comportamientos de su agente llevándolo a un nivel de abstracción mas alto. Se puede ver como una plataforma P2P ya que la comunicación entre los agentes es punto a punto y lo mismo pasa con los contenedores de los agentes. Desventajas: • • Usa el mecanismo de multicast para la comunicación entre contenedores, lo cual lo limita a un dominio. Se puede afectar el rendimiento de la red en casos en que los agentes tengan un tiempo de vida muy corto. Esto debido al multicast que es utilizado para • • mantener las tablas actualizadas del directorio de paginas blancas que tiene cada contenedor. La poca documentación que lo soporta. No se a probado con muchos ejemplos como si a sucedido con otras plataformas de agentes. Referencias: [GW2001] Gerhard Weiss, “Multagent System”, 2001. [JAS200] Juan Ángel Sampedro Martínez, José David Ciórraga López, Francisco Jesús Martínez Mimbrera, “AgentOS”. [FAMS2002] www.fipa.org, “Fipa Agent management Specification” , 2002/12/03. [FBE2003] F. Bellifemine, G. Caire, A. Poggi, G. Rimassa“Jade a white paper”, Septiembre del 2003. [FBE12003] F. Bellifemine, G. Caire , Tizana Trucco, “Jade administrator guide” jade 3.1 , 15 de Diciembre del 2003. [GRI2003] Giovanni Rimaza , “Runtime Suport for Distributed- multi- Agent systems” , Enero del 2003. [EG2003] Enrique Gonzalez, Jamir Antonio Avila y Cesar Bustacara, “Besa Arquitectura para la construcción de sistemas Multi- Agentes”, 2003.