Jade: plataforma para ejecutar agentes
JADE (Java Agent Development Framework) es un software totalmente implementado en lenguaje Java. Se simplifica la implementación de sistemas multi-agente a través de un middleware que cumple con las especificaciones FIPA ya través de un conjunto de herramientas gráficas que soporta la depuración y las fases de implementación. La plataforma de agentes puede ser distribuido entre todas las máquinas (que ni siquiera necesidad de compartir el mismo sistema operativo) y la configuración pueden ser controlados a través de una interfaz gráfica de usuario remota . La configuración se puede cambiar, incluso en tiempo de ejecución moviendo agentes de una máquina a otra, cuando sea necesario. JADE es completamente implementado en el lenguaje Java y la exigencia mínima del sistema es la versión 1.4 de Java (el entorno de tiempo de ejecución o JDK).
- Ejecución de agentes completamente asíncrona
- Comunicación entre agentes en la misma o diferentes plataforma/s JADE/LEAP/JADEX
- Programación de agentes mediante un conjunto de paquetes Java (JDK 1.4 o superior).
- Validación de la ejecución mediante seguimiento mensajes y estado interno del agente.
- JADE esta compuesta de:
- Una plataforma FIPA para la ejecucion de agentes
- Un conjunto de paquetes para la programación de agentes FIPA
SPADE
Del inglés "Smart Python multi-Agent Development Environment", SPADE es una plataforma de sistemas multi-agente desarrollada en 2005 en la Universidad Politécnica de Valencia. La plataforma nació como una prueba de concepto para probar la tecnología de la mensajería instantánea como protocolo de transporte para los agentes inteligentes. Desde ese momento el proyecto ha seguido creciendo y añadiendo nuevas características aprovechando la flexibilidad del protocolo de mensajería instantánea basado en XML y la cantidad de extensiones desarrolladas para el mismo que son aprovechables dentro del marco de los sistemas multi-agente. La plataforma SPADE está basada en un conjunto de estándares, siendo los más destacables FIPA y XMPP/Jabber.
Las principales características de la plataforma SPADE son:
- Soporte del estándar FIPA mediante el protocolo de mensajería instantánea XMPP (Agentes AMS y DF incluídos)
- Notificación de presencia entre agentes.
- Organizaciones Virtuales basadas en el protocolo de multi-conferencia MUC.
- Comunicación P2P entre agentes.
- Invocación remota de servicios entre agentes usando el estándar XML-RPC.
- Procesadores de lenguajes de contenido en SL0 y RDF.
- Modelo de agente BDI basado en Conocimiento, Deseos e Intenciones.
- Modelo de comportamientos: Cíclicos, Periódicos, Timeout, una ejecución, máquina de estados finita y basado en eventos.
- Soporte de comunicación con otras plataformas mediante diversos protocolos de transporte: JADE (via HTTP o XMPP) y SIMBA.
- Publicación y subscripción de eventos mediante el estándar PubSub.
- Interfaz gráfica basada en web.
MadKit
MadKit es una plataforma para la implementación de Sistemas
Multi-Agentes. Esta basada sobre el modelo AGR de Ferber y Gutknecht.
AGR en un modelo organizacional basado sobre los principios de Agente,
Grupo y Rol.
Esta escrita puramente en JAVA.
Este documento no intenta ser una introducción a AGR, ni a los
modelos organizacionales para los SMA. Pero vamos a describir solamente
las bases para poder comprender el funcionamiento del SMA que vamos a
desarrollar y el porque de ciertas elecciones.
El modelo AGR
El modelo AGR esta basado en las nociones de Agente, Grupo y Rol.
Estructura general de la Plataforma
La arquitectura general de la plataforma puede ser representada de la forma siguiente (imagen del
MadKit Development Guide)
El componente principal es el Kernel (o micro-kernel). El kernel provee soporte para:
- Control de grupos y roles locales
- Manejo del ciclo de vida de los Agentes
- Despacho de Mensajes locales
-
Ciclo de vida de un agente
El ciclo de vida de un agente (usando
la clase ), requiere la implementación de tres metodos. El primero es
el método activate() que es llamado en el momento de la inicialización
del agente. El segundo es live() donde se define el comportamiento del
agente. El tercero es end() llamado a la finalización del agente.
De estos tres metodos, solo live() es obligatorio (si queremos que
nuestro agente haga algo). Los otros dos (activate y end) tienen una
implementación (vacía) por “default” en AbstractAgent.
Unos ejemplos desde la página de madkit:
Bee Simulation
Tamagoshi Game
RoboCup Soccer Simulation League
RoboCup es un proyecto internacional fundado en 1997 para promover, a través de competencias integradas por robots autónomos, la investigación y educación sobre inteligencia artificial.
Las 3 variantes para participar en este tipo de torneo:
- Simulación 2D: Basado en la creación de sistemas multi-agentes, en el que todos cooperan para ganar un partido de soccer entre dos equipo, obviamente la simulación y la programación del sistema debe de ser en 2 dimensiones.
- Simulación 3D:: Basicamente es lo mismo que el anterior, con la única diferencia que este tipo de competencias se realizan en entornos 3D.
- Otra muy interesante es la de la competencia en un juego de soccer entre dos equipos pero con la misión de dejar de lado las simulaciones, es decir, ahora los partidos los juegan robots reales (tangibles), previamente entrenados (programados como sistemas multi-agentes para cooperar entre todos y ganar) para la ocasión.
La iniciativa está dividida en cuatro grandes competencias:
- RoboCupSoccer:
RoboCupSoccer es una competencia de fútbol con robots autónomos.
El objetivo oficial del proyecto es conseguir para mediados del siglo XXI un equipo capaz de vencer al ganador de la Copa Mundial de la FIFA siguiendo sus propias reglas.
- RoboCupRescue:
Se trata de poner a prueba a los robots para tareas de búsqueda y
salvamento de víctimas en terreno desfavorable. Los robots pueden ser
tanto autónomos como guíados por control remoto.
En cada prueba, un equipo de robots debe ser capaz de encontrar el
camino adecuado en la zona designada y hacer un mapa con la posición de
los diferentes obstáculos del térreno y de las víctimas.
- RoboCupJunior:
Intenta acercar las metas y objetivos de Robocup a estudiantes de educación primaria y secundaria.
Hay diferentes formatos:
- Fútbol, en equipos de 2 contra 2.
- Rescate, las reglas son similares al concurso global,4 pero el escenario es más básico y sencillo.
- Baile, en el que los participantes deben escoger una canción y robots autónomo que bailen a su son.
- RoboCup@Home:
Competencia añadida en la edición del 2006 celebrada en Bremen (Alemania) que se centra en la aplicación de robots autónomos en la vida diaria y en las relaciones hombre-robot derivadas.7
El escenario suele ser de la vida real y es ahí donde hay que demostrar las capacidades del robot.
Cada una de ellas tiene varias ligas internas dependiendo de la modalidad.
En México se celebrará en los diás 18-24 de Junio un torneo de RoboCup
pueden checar bases y todo lo que se le ocurra (con respecto al torneo) en la pagina RoboCup México 2012.
-
Referencias Bibliográficas y Utilidades
- http://jade.tilab.com/
- http://es.wikipedia.org/wiki/SPADE
- http://www.robocup.org/
- http://es.wikipedia.org/wiki/Robocup
- http://wiki.robocup.org/wiki/Soccer_Simulation_League
- http://robocup.mty.itesm.mx/
- http://www.robocup2012.org/
- http://www.madkit.org/
- http://sebastian.rodriguez.free.fr/index.php/7-primeros-pasos-con-madkit.html