Java Agent Development Framework http:sharon'cselt'itprojectsjade - PowerPoint PPT Presentation

1 / 33
About This Presentation
Title:

Java Agent Development Framework http:sharon'cselt'itprojectsjade

Description:

Dise ado para soportar escalabilidad. Cumple con las especificaciones FIPA. Implementado en Java ... de clases que van a soportar las entidades y los roles de ... – PowerPoint PPT presentation

Number of Views:228
Avg rating:5.0/5.0
Slides: 34
Provided by: doneduardo
Category:

less

Transcript and Presenter's Notes

Title: Java Agent Development Framework http:sharon'cselt'itprojectsjade


1
Java 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

3
Introducció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.

4
Arquitectura distribuida de la plataforma JADE
5
Arquitectura interna de JADE en tiempo de
ejecución
6
Servicio 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é

7
Arquitectura 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
8
Modelo 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

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

10
Movilidad 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

11
Escalabilidad 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

13
Modelo 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

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

15
Evolució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

16
Aplicaciones 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, ...

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

18
Plataforma 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
19
La 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
20
La 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()
21
Mensajes 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.
22
Tareas 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
23
Tareas de los Agentes(2)
Paquete jade.core.behaviours
24
Protocolos 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
25
Lenguajes 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.
26
Lenguajes 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 )
27
JADE 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

28
Ejemplo Metabuscador
Altavista
palabra
gestor
resultados
Google
www
MSN
29
Ejemplo 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)
30
Ejemplo 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
31
Ejemplo 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
32
Conclusiones
  • 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,..)

33
Bibliografí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
Write a Comment
User Comments (0)
About PowerShow.com