Java Agent Development Framework ( JADE ) es un marco de software para el desarrollo de agentes de software , implementado en Java . El sistema JADE admite la coordinación entre varios agentes FIPA y proporciona una implementación estándar del lenguaje de comunicación FIPA-ACL , que facilita la comunicación entre agentes y permite la detección de servicios del sistema. JADE fue desarrollado originalmente por Telecom Italia y se distribuye como software libre .
Reanudar
JADE es un middleware que facilita el desarrollo de sistemas multiagente bajo el estándar FIPA, para lo cual crea múltiples contenedores para agentes, cada uno de los cuales puede ejecutarse en uno o más sistemas. Se entiende que un conjunto de contenedores constituye una plataforma.
JADE ofrece:
- Un entorno donde se ejecutan agentes JADE
- Bibliotecas de clases para crear agentes utilizando la herencia y la redefinición de comportamientos.
- Un conjunto de herramientas gráficas para la monitorización y gestión de la plataforma de agentes inteligentes.
Historia
JADE fue desarrollado inicialmente por Telecom Italia Lab. Este sector es la rama de I+D del Grupo Telecom Italia, responsable de promover la innovación tecnológica. Telecom Italia concibió y promovió JADE en el año 2000. La última versión disponible data de diciembre de 2022 (versión 4.6.0). La primera versión de JADE, distribuida como software libre, está disponible desde febrero de 2000 (versión 1.3).
En marzo de 2003, Motorola y Telecom Italia crearon el Consejo Directivo de JADE con el objetivo de promover el desarrollo y la adopción de JADE en la industria de las telecomunicaciones móviles como middleware . El Consejo Directivo de JADE acepta a cualquier empresa u organización interesada en el uso y la explotación comercial de JADE que se comprometa con su desarrollo y promoción.
En 2021, el equipo que desarrolló con éxito JADE anunció que ya no podía continuar trabajando en él. Un equipo de investigadores que creó una bifurcación del proyecto ahora se encarga del desarrollo de la plataforma.
Plataforma
JADE es una plataforma de agentes distribuidos que cuenta con un contenedor para cada host donde se ejecutan los agentes. Además, la plataforma ofrece diversas herramientas de depuración, movilidad de agentes de código y contenido, la posibilidad de ejecución paralela del comportamiento de los agentes, así como soporte para la definición de lenguajes y ontologías . Cada plataforma debe tener un contenedor principal que contiene dos agentes especiales denominados AMS y DF.
- El DF (Directory Facilitator) proporciona un directorio que anuncia qué agentes están disponibles en la plataforma.
- El AMS (Sistema de Gestión de Agentes) controla la plataforma. Es el único que puede crear y eliminar otros agentes, destruir contenedores y detener la plataforma.
Agente DF
Para acceder al agente DF se utiliza la clase "jade.domain.DFService" y sus métodos estáticos: register, deregister, modify y Search .
Agente de AMS
Para acceder al servicio AMS, se crea un agente que, por defecto, ejecuta automáticamente el método register del AMS antes de ejecutar el método setup del nuevo agente. Cuando un agente se destruye, ejecuta por defecto su método takeDown() y llama automáticamente al método deregister del AMS.
Clase de agente
La clase Agent es una superclase que permite a los usuarios crear agentes JADE. Para crear un agente, es necesario heredar directamente de Agent . Normalmente, cada agente registra varios servicios que deben ser implementados por uno o más comportamientos.
Esta clase proporciona métodos para realizar las tareas básicas de los agentes, tales como:
- Pasar mensajes por objetos ACLMessage, con coincidencia de patrones.
- Apoyar el ciclo de vida de un agente
- Planificar y ejecutar múltiples actividades al mismo tiempo.
Agente JADE
El ciclo de vida de un agente JADE sigue el ciclo propuesto por FIPA. Estos agentes pasan por diferentes estados definidos como:
- Iniciado: El agente ha sido creado pero aún no se ha registrado en el AMS.
- Activo: El agente ha sido registrado y tiene un nombre. En este estado, puede comunicarse con otros agentes.
- Suspendido: El agente se ha detenido porque su hilo de ejecución está suspendido.
- En espera: El agente está bloqueado esperando un evento.
- Eliminado: El agente ha terminado y su hilo ha finalizado su ejecución y no hay más en el AMS.
- Tránsito: El agente se traslada a una nueva ubicación.
Comportamiento de los agentes
El comportamiento define las acciones bajo un evento dado. Este comportamiento del agente se define en el método setup mediante el método addBehaviour . Los diferentes comportamientos que adoptará el agente se definen a partir de la clase abstracta Behaviour. La clase Behaviour contiene los siguientes métodos abstractos:
- acción (): Se ejecuta cuando tiene lugar la acción.
- hecho (): Se ejecuta al final de la ejecución.
El usuario puede sobrescribir las propiedades de los métodos `onStart()` y `onEnd()` . Además, existen otros métodos, como `block ()` y `restart()`, que se utilizan para modificar el comportamiento del agente. Cuando un agente está bloqueado, se puede desbloquear de diferentes maneras. Asimismo, el usuario puede sobrescribir los métodos ` onStart()` y `onEnd()` del agente.
Desbloquea un agente
- Recibiendo un mensaje.
- Cuando se produce el tiempo de espera asociado al bloque ().
- Reiniciando la llamada.
Mensajes ACL
El protocolo de comunicación entre agentes ( ACL , por sus siglas en inglés) se basa en el paso de mensajes . El envío de mensajes se realiza mediante el método `send` de la clase `Agent`. En este método, se debe pasar un objeto de tipo `ACLMessage` que contiene la información del destinatario, el idioma, la codificación y el contenido del mensaje. Estos mensajes se envían de forma asíncrona; una vez recibidos, se almacenan en una cola de mensajes. Existen dos tipos de recepción de mensajes ACL: síncrona y asíncrona. Para ello, se proporcionan los métodos `blockingReceive()` y `receive()`, respectivamente. En ambos métodos, se pueden filtrar los mensajes que se recuperarán de la cola mediante la configuración de diferentes plantillas.
Extensiones
JADE cuenta con una extensión denominada WADE (Workflows and Agents Development Environment), que es un sistema de flujo de trabajo que permite crear procesos mediante un editor gráfico llamado WOLF.
Véase también
Referencias
- Archivo de noticias de Jade
- Guía del usuario de Wade
- Desarrollo de sistemas multiagente con JADE , Volumen 7, Serie Wiley en Tecnología de Agentes, Fabio Luigi Bellifemine, Giovanni Caire, Dominic Greenwood ISBN 9780470058404
- Seguridad y confianza en middleware orientado a agentes , Sexto Taller Internacional, OTM 2003. OTM 2003. Lecture Notes in Computer Science, vol. 2889. Springer, Berlín, A. Poggi, M. Tomaiuolo, G. Vitaglione. ISBN 978-3-540-20494-7
Enlaces externos
- Software basado en agentes
- Java (plataforma de software)
- Software que utiliza la Licencia Pública General Reducida de GNU.