Title: Java Agent Development Framework http:sharon'cselt'itprojectsjade
1Java Agent Development Frameworkhttp//sharon.cse
lt.it/projects/jade/
Ourense el 29/05/2001
Escuela Superior de Ingeniería Informática Univers
idad de Vigo Eduardo Domínguez Requejo Manuel
Rodríguez Salgado
2Índice
- Introducción
- Arquitectura distribuida
- Arquitectura interna en tiempo de ejecución
- Servicio de transporte de mensajes
- Arquitectura interna de un agente genérico
- Modelo de ejecución de agentes
- Modelo de comunicación de agentes
- Movilidad, Clonación y Escalabilidad de agentes
- Cómo oculta JADE las especificaciones FIPA al
programador? - Modelo de Concurrencia
- Los Agentes como un sistema que construye
paradigmas - Evolución
- Aplicaciones desarrolladas con JADE
- Creación de un SMA en JADE
- Conclusiones
- Bibliografía
3Introducción
- Jade
- Entorno de desarrollo para Sistemas multiagentes
- Servicios
- Ciclo de vida, páginas blancas, páginas
amarillas, transporte de mensajes, codificación
de mensajes - Herramientas gráficas
- Remote Monitoring Agent, Dummy Agent, Sniffer
Agent, Introspector Agent - Diseñado para soportar escalabilidad
- Cumple con las especificaciones FIPA
- Implementado en Java
- RMI, Corba, Serialización de objetos, Reflection
API - Open Source desde febrero del 2000
- Objetivo simplificar el desarrollo de agente
asegurando el cumplimiento de los estándares.
4Arquitectura distribuida de la plataforma JADE
5Arquitectura interna de JADE en tiempo de
ejecución
6Servicio de transporte de Mensajes
- Distribución del Agent Communication Channel
(ACC) - El contenedor principal no es un cuello de
botella gracias a las cachés y ACC distribuidos - Controla la cola privada de mensajes ACL de los
agentes - Diseñado como un camaleón
- El mecanismo de transporte es seleccionado de
acuerdo con la situación - Para obtener un coste mínimo de paso de mensajes
- La sobrecarga depende de la localización del
receptor y del estado de la caché
7Arquitectura interna de un agente genérico
Tareas activas de agente
tarea n
tarea 1
tarea 2
creencias
pattern matching
access mode
timeout-based
capacidades
Bandeja de entrada Privada de mensajes
Planificador de tareas
Administrador del Ciclo de Vida
Libreria JADE de Protocolos de Interacción y de
comportamientos genéricos para agentes
8Modelo de ejecución de agentes
- Los agentes son autónomos
- Controlado completamente por hilos de ejecución
- Deciden cuando leer los mensajes y qué mensajes
deben leer - El mecanismo de transporte llena la cola privada
del agente. (No llaman directamente al agente) - Los agentes necesitan concurrencia
- Permite llevar a cabo varias conversaciones
simultáneas - Pueden ejecutar varias tareas concurrentes
- Java multi-thread
- Un hilo de ejecución por tarea o conversación.
- Modelo de Programación
- Un agente JADE utiliza la paquete jade.core
- Las tareas en JADE se definen a través del
paquete jade.core.behaviours
9Modelo de Comunicación de Agentes
- Los agentes envían/reciben objetos java, que
representan mensajes, dentro del alcance del
protocolo de interacción - JADE oculta la codificación de todos sus
mensajes - Lenguaje de Comunicación de Agentes
- String-based, XML-based, bit-efficient
- Lenguaje de Contenido
- FIPA SL-0
- Objetos java en Base64 (serialización)
- Todos los niveles proporcionan APIs para
implementar nuevos codec - JADE proporciona librerías para el manejo de
protocolos de interacción - Permite personalizar los protocolos de
interacción - Definición de estados en el protocolo de
interacción.
10Movilidad y Clonación
- JADE soporta movilidad y clonación de agentes
dentro de toda la plataforma - Una plataforma puede ser distribuida a través de
varios hosts - Cada host tiene un agente contenedor
- Los agentes pueden migrar entre contenedores
- Los agentes pueden clonarse a través de
contenedores - Funciones
- doMove(Location) / doClone(Location, String)
- before/afterMove() before/afterClone()
- jade.domain.MobilityOntology
11Escalabilidad en JADE
- Configuración de una plataforma
- De un SMA en un único host
- A un SMA con un agente por host
- Plataforma de agentes compuesta por un grupo de
hosts - La configuración puede cambiar en tiempo de
ejecución - Caché local.
- Es el contenedor principal un cuello de
botella? - El Agente encargado de la Comunicación (ACC) está
distribuido - Uso de cachés distribuidas
- El contenedor principal es invocado únicamente
cuando es estríctamente necesario
12 Cómo oculta JADE las especificaciones FIPA al
programador?
- No necesita implementar la plataforma de agentes
- AMS, DF, y ACC son cargados al arrancar
- No necesita implementar administradores de
agentes para para ontologías y capacidades - Un agente es registrado automáticamente
- Al que se da un nombre, una dirección y un estado
- La clase agente proporciona un interfaz simple
para acceder al servicio del DF (registro,
búsqueda, ) - No necesita implementar el transporte y
codificación de mensajes - Realizado Automáticamente por JADE cuando se
envían/reciben mensajes - No requiere implementar protocolos de interacción
- Estos deben ser extendidos por métodos si se
quieren personalizar
13Modelo de concurrencia
- Permite diferentes contenedores en la misma
plataforma - 1 JVM por contenedor
- Permite diferentes agentes en el mismo contenedor
- Hilos de ejecución
- Permite diferentes comportamientos en el mismo
agente - Tipos de tareas
- Planificación cooperativa
- Cada tarea debe dejar el control para permitir a
otras tareas que se ejecuten. - El planificador de JADE usa el algoritmo de
planificación non-preemptive para todas las
tareas de la cola que están listas
14Los Agentes como un paradigma para la
construcción de sistemas. El problema la
interoperatibilidad
- Las metodologías, tecnologías, y herramientas
actualmente disponibles permiten desarrollar
software más y más potente y complejo, pero no
todo el software está listo para interoperar con
otro software si no se prevee en el diseño del
mismo, por lo tanto es necesario definir nuevas
metodologías de desarrollo de software que
permitan conseguir la interoperatibilidad.
15Evolución
- JADE 2.2
- HTTP MTP (Messages Transport Protocol)
- XML-based ACL Codec
- bit-efficient ACL codec como alternativa a
FIPA-ACL - SnifferAgent GUI
- Integración con JESS
- JADE 2.3
- Integración con tecnologías Web applets,
servlets, JSP, XML - Persistencia de objetos
- Implementación de más protocolos de interacción
- Muy pronto
- Seguridad y soporte de multiusuarios
16Aplicaciones desarrolladas con JADE
- FILIGRANE
- e-commerce para agentes móviles
- HTTP//WWW.FILIGRANE.ORG
- COMMA
- Sistema para ayudar a los usuarios de una
organización en la creación, transmisión y
reutilización del conocimiento de la misma - http//www.medialab.unict.it/atti/articoli/
- FACTS
- comercio electrónico
- Servicio de reservas
- Servicio de difusión de video
- http//www.labs.bt.com/profsoc/facts/
- MONADS
- Comunicación en redes inalámbricas (varía QoS)
- Predecir la (QoS)
- SONG, SAFIRA, LiMe,FACTS, DICEMAN, ...
17Creando un SMA con JADE
- Plataforma de Agentes (AP).
- Clase Agent.
- Mensajes ACL.
- Tareas de los Agentes.
- Protocolos de interacción.
- Lenguajes de contenido y ontologías.
18Plataforma de Agentes (AP)
- La AP de JADE es compatible con la arquitectura
de referencia FIPA para un AP
Referencia FIPA
JADE
Los agentes DF y AMS para comunicarse usan -
FIPA-SL0 como lenguaje de contenido - La
ontología fipa-agent-management - El protocolo
de interacción fipa-request
19La clase Agent
Es la clase base de la que extienden los nuevos
agentes. De ella se heredan las interacciones
básicas con la AP (registro., gestión remota...)
y un conjunto de métodos para implementar los
comportamientos ( envío/recepción de mensajes,
uso de IP, registro en varios dominios...)
Un agente es multitarea, las tareas o
comportamientos se ejecutan concurrentemente.
Un agente cumple con los ciclos de vida de FIPA
20La clase Agent (2)
Los pasos en la vida de un agente en el entorno
JADE son - Se ejecuta el constructor ?
AP_INITIATED - Se le da un identificador, un
AID - Se registra en el AMS - Se pone en el
estado AP_ACTIVE y se ejecuta su método
setup() En el método setup() se inicia y
finaliza la actividad del agente y es donde se
definen y añaden y gestionan todos los
comportamientos o tareas con addBehaviour(Behaviou
r) y removeBehaviour(Behaviour)y finaliza con
doDelete()
21Mensajes ACL
Los usan los agentes para comunicarse entre
ellos y contienen los atributos definidos por la
especificación FIPA. Un agente crea un objeto
ACLMessage y mediante los métodos send(),
receive()y blockingreceive() gestiona los
mensajes. Aunque también puede usar tareas
predefinidas y especificas para esto como son
SendBehaviour y ReceiveBehaviour. Para acceder
y recuperar los mensajes de su cola de mensajes
se instancia la clase MessageTemplate que permite
realizar la búsqueda por patrones en esa cola.
JADE tiene clases ya creadas para la respuesta
automática a mensajes, para la serializacion y
envío de secuencias de bytes y además proporciona
ya el codec necesario para codificar en ACL.
22Tareas de los Agentes
Cada agente JADE esta compuesto por un simple
hilo de ejecución y todas sus tareas deben estar
implementadas como objetos Behaviour Con los
métodos add/removeBehaviour() el agente añade los
comportamientos a su lista de tareas. Un
planificador oculto al programador es el que
decide que tarea ejecutar en que momento de la
lista de tareas preparadas La clase Behaviour y
sus derivadas tienen la siguiente
estructura public class 3PasosBehaviour
private int estado 1 private boolean
acabado false public void action()
switch (estado) case 1 op1()
estado break case 2 op2()
estado break case 3 op3()
estado1 acabado true break
public boolean done() return acabado
23Tareas de los Agentes(2)
Paquete jade.core.behaviours
24Protocolos de Interacción
JADE distingue dos roles en una comunicación
entre agentes, el Initiator y el Responder y
proporciona clases Behaviour para estos roles de
acuerdo con los IP FIPA. Están en el paquete
jade.proto. Por defecto usa el FIPA-Request (
mediante objetos FipaRequestInitiatorBehaviour y
FipaRequestResponderBehaviour) pero también tiene
ya implementadas las clases para FIPA-Query y
FIPA-Contract-Net
25Lenguajes de contenido y Ontologías
La información que va en los mensajes ACL se
representa como expresiones que cumplen con un
lenguaje de contenido (SL). Las ontologías son
las estructuras de clases que van a soportar las
entidades y los roles de estas en el
funcionamiento de los agentes. Cuando a un
agente le llega una información en un mensaje ACL
( como una cadena p.ej) , esta no corresponde con
la representación interna que el agente tiene de
esa información. El entorno JADE realiza la
conversión de un formato a otro.
26Lenguajes de contenido y Ontologías(2)
class Persona String nombre int
edad public String getNombre() return
nombre public void setNombre(String n)
nombre n public int getEdad() return
edad public void setEdad(int a) edada
Ontology myOnto new DefaultOntoly() myOnto
.addRole( Persona, new SlotDescriptor
new SlotDescriptor(nombre,Ontology.PRIMITIV
E_SLOT, Ontology.STRING_TYPE, Ontology.M),
new SlotDescriptor(edad, Ontology.PRIMITIVE_SLOT
, Ontology.INTEGER_TYPE,Ontolgy.O) , new
RoleEntityFactory() public Object crear
(Frame f) return new Persona() public
Class getClaseParaRol() return
Persona.class )
27JADE Herramientas gráficas
- RMA (Remote Monitoring Agent)
- Navegador del servicio de páginas blancas
- Controla el ciclo de vida de un agente (creación
remota, migración, clonación,) - Activación / Desactivación de MTP en contenedores
- DF (Director Facilitator)
- Navegador del servicio de páginas amarillas
- Recopilación de información de agentes,
modificación de descripción - Permite control remoto de DFs
- DummyAgent
- envía/recibe almacena/guarda ACL Mensajes
- Sniffer Agent
- Seguimiento de conversaciones en sistemas
multiagentes - Introspector Agent
- Control de cola de mensajes y tareas
28Ejemplo Metabuscador
Altavista
palabra
gestor
resultados
Google
www
MSN
29Ejemplo Metabuscador(1)
class generalBehaviour extends SimpleBehaviour pu
blic void action () switch(estado)
case PRIMERO if (datos_recogidos()) estado
SEGUNDO else estado PRIMERO
break case SEGUNDO if
(llamar_agentes()) estado TERCERO
else estado SEGUNDO break case
TERCERO if (recibir_resultados())
estadoCUARTO else estado TERCERO break
case CUARTO if (generar_html())estadoPR
IMERO acabadotrue else estado
SEXTO break public boolean
done()return acabado protected void setup()
generalBehaviour miBehaviour new
generalBehaviour (this) addBehaviour(miBehavi
our)
30Ejemplo metabuscador(2)
private boolean llamar_agentes()
System.out.println(" GESTOR Llamando a los
agentes con la palabra "cadena)
ACLMessage msg new ACLMessage(ACLMessage.INFORM)
msg.addReceiver(new AID("altavista"))
msg.addReceiver(new AID("msn"))
msg.addReceiver(new AID("google"))
msg.setContent(cadena) msg.setLanguage("pal
abra") send(msg) return true
31Ejemplo metabuscador(3)
private boolean recibir_resultados()
boolean salidafalse System.out.println("
GESTOR esperando a recibir resultados
"cadena) MessageTemplate
m1MessageTemplate.MatchPerformative(ACLMessage.IN
FORM) MessageTemplate m2MessageTemplate.Ma
tchLanguage("resultado") MessageTemplate
m1ym2MessageTemplate.and(m1,m2)
ACLMessage mensaje receive(m1ym2) if
(mensaje!null) temptemp.append(mensaje.
getContent().toString()) salidatrue
else block() salidafalse return
salida
32Conclusiones
- Cumplimiento total de FIFA
- Está JADE demasiado bajo nivel?
- El JADE proporciona la capa de comunicación y la
capa de planificación de tareas - El JADE puede integrarse fácilmente con sistemas
expertos (JESS, DESFILE,)
- Algunos Números
- gt 4000 descargas desde Feb. 2000
- gt 800 usuarios registrado en la lista de correo
jade-develop_at_sharon.cselt.it - Aprovechamiente de la potencia del lenguaje Java
- JADE ofrece un modelo de agentes más primitivo
que otros entornos. (Agent builder, dMars,RETSINA
and Zeus,..)
33Bibliografía
- http//sharon.cselt.it/projects/jade/
- Jade Programmers Guide - Fabio Bellifemine,
Giovanni Caire, Tiziana Trucco - Jade Administrator Guide - Fabio Bellifemine ,
Giovanni Caire, Tiziana Trucco - Jade Documentation Library- Fabio Bellifemine ,
Giovanni Caire, Tiziana Trucco - Jade A FIPA compliant framework - Fabio
Bellifemine , Giovanni Caire, Tiziana Trucco