JADE Java Agent DEvelopment Framework - Sistemas Distribuidos by hcj

VIEWS: 0 PAGES: 77

									         JADE
Java Agent Development Framework




         EXPOSITOR:
Melvin Fallas Cascante   A62098
                   Agenda
•   Introducción
•   Historia
•   El estándar FIPA
•   Características
•   Conceptos Básicos
•   Arquitectura
•   Ejemplos
•   Conclusiones
Introducción
               Introducción

Las tecnologías basadas en agentes:
  • Inmaduras
  • Pocos sistemas

Las herramientas existentes no se acogían a ningún
estándar.
Historia
                   Historia
• Middleware

• Desarrollado por Telecom Italy Lab (TILAB)

• Desarrollo de sistemas distribuidos multi-agente

• Cumplen con las especificaciones FIPA
Estándar
 FIPA
              Estándar FIPA
• Permite la interoperabilidad entre plataformas de
diferentes empresas y organizaciones.

• Especifica la normatividad que se debe llevar a
cabo para la construcción de plataformas Multi-
Agente.

• Estas especificaciones no restringen la
tecnología usada para la implementación de
plataformas.
              Estándar FIPA
Agent Managment System (AMS)

• Supervisión y control sobre el acceso y uso de la
plataforma.

• Responsable de la autenticación de los agentes
residentes y control de registros (ANS).
             Estándar FIPA
Agent Communication Channel (ACC)


• Proporciona la ruta para el contacto básico entre
agentes dentro y fuera de la plataforma.

• Método por defecto de comunicación que ofrece
un servicio confiable, ordenado y exacto.
              Estándar FIPA
Directory Facilitator (DF)

• Proporciona el servicio de paginas amarillas.

• En el se registran los servicios que ofrecen los
agentes; y de igual forma se pueden buscar dichos
servicios.
Características
  de JADE
             Características


• Entorno de desarrollo para la creación de
aplicaciones basadas en agentes.

• Entorno de ejecución para que los agentes vivan
y se comuniquen.
              Características

• Plataforma distribuida
• Herramientas de debugging
• Movilidad de agentes inter-plataforma
• Soporta ejecución paralela de múltiples agentes
• Transporte de mensajes ACL dentro de la
plataforma
• Servicio de nombres
• Interface para aplicaciones externas
              Características

• Arquitectura peer to peer (P2P)

• Interoperabilidad:
   • Especificaciones FIPA

• Portabilidad:
   • Realizado en JAVA
Conceptos
 Básicos
        Conceptos Básicos


•   Agentes
•   Comportamientos
•   Comunicación
•   Ontologías
           Conceptos Básicos
Agentes

• Un agente es un programa autónomo que
constituye las plataformas de agentes y que tienen
características propias

• Entre ellas identidad, prestación de servicios y
una dirección que le permite recibir mensajes de
parte de otros agentes
      Agentes (Características)
• Tienen un nombre único en el entorno de
ejecución

• Se implementan como un único hilo a ejecutar
(single-threaded)

• Tienen un método de inicio (setup)
• Tienen un método de fin (takeDown)
            El método Setup

• Sirve para inicializar el agente incluyendo
instrucciones que especificarán la ontología a
utilizar y los comportamientos asociados al agente

• Se invoca al comenzar la ejecución del agente
        El método takeDown

• Sirve para liberar recursos antes de la
eliminación del agente

• Es invocado cuando se realiza una llamada al
método doDelete(), que es el que realmente da
por finalizada la ejecución del agente
      Agentes (Características)
• Un agente define en su implementación una
clase interna por cada uno de los
comportamientos asociados al agente

• Estos comportamientos se utilizan básicamente
para el envío y recepción de mensajes, aunque
también se pueden utilizar para realizar otras
tareas
             La Clase Agent
• Es una superclase común que permite a los
usuarios crear software de agentes

• Los programadores de aplicaciones basadas en
agentes deben escribir sus propios agentes como
subclases de Agent

• Se debe añadir tantos comportamientos
específicos como sean necesarios y explotando las
capacidades de la clase Agent
            La Clase Agent

• Suministra métodos que permiten ejecutar las
tareas básicas de los agentes:

  • Mensajes con objetos ACLMessage
  • Soporte para el ciclo de vida de un agente
  • Planificación y ejecución de múltiples
  actividades concurrentes
    Ciclo de Vida de un Agente
           Estados de un Agente
• Iniciado
• Activo
• Suspendido
• En espera
• Desconocido
• Tránsito
            Estado de Inicio

• El objeto Agente está creado pero todavía no se
ha registrado en el AMS

• No tiene nombre ni dirección y tampoco se
puede comunicar con otros agentes
              Estado Activo


• El Agente está registrado en el AMS

• Tiene un nombre, una dirección y puede acceder
a todas las opciones de JADE
          Estado Suspendido

• El Agente está interrumpido

• Su hilo de ejecución está detenido y no ejecuta
ningún Comportamiento
           Estado en Espera

• El Agente está bloqueado esperando por algo

• Su hilo de ejecución está dormido en un monitor
de java y se despertará cuando se cumpla una
cierta condición

• (Cuando reciba un mensaje)
       Estado de Desconocido

• El Agente ha sido eliminado

• El hilo de ejecución ha terminado y se ha
eliminado del registro del AMS
          Estado en Tránsito


• Un Agente móvil entra en este estado mientras
está migrando a una nueva localización.

• El sistema sigue guardando los mensajes en el
buffer hasta que el agente vuelve a estar activo
Transiciones de Estado
Transiciones de Estado
Código Mínimo de un Agente
           Conceptos Básicos
Comportamientos (Behaviours)

• Son métodos que permiten realizar acciones en
hilos de ejecución

• Funcionalidad que incorpora el agente

• Dan soporte al agente para realizar varias tareas
y establecer los tiempos de ejecución de cada una
 Comportamientos (Behaviours)
• Son útiles para atender peticiones de forma
ordenada

• Por ejemplo recibiendo mensajes de un solo
emisor

• Deben heredar de la clase Behaviour
Métodos de un Comportamiento

• Existen dos principales:

     •     Action
     •     Done
            El método Action

•Define la acción a ser realizada cuando se ejecute
el comportamiento

• Es invocado cuando se produce el evento
asociado al comportamiento
           El método Action

• Es recomendable que los métodos action() no
tengan un tiempo de ejecución alto ya que
mientras que se ejecutan no pueden ser
interrumpidos por otro comportamiento
             El método Done
• Es invocado cuando finaliza la ejecución del
método action()

• Determina si el comportamiento ha sido
completado o no

• Devuelve un booleano (true si ha terminado o
false en caso contrario)
Si el comportamiento ha finalizado, éste se elimina
de la cola de comportamientos activos.
            El método Done
• Devuelve un booleano
         • true si ha terminado
         • false en caso contrario
• Si el comportamiento ha finalizado, éste se
elimina de la cola de comportamientos activos

• Se puede utilizar una marca que se activa cuando
se quiere que finalice el comportamiento
     Tipos de Comportamientos
• Simples

• Cíclicos

• De recepción y envío de mensajes

• Los que ejecutan tareas al despertar de un
bloqueo o en segmentos de tiempo
           El comportamiento
            CyclicBehaviour

• Es el más fácil de usar

• Ejecuta una tarea de forma cíclica, deteniéndola
algunos segundos si así se le indica
Código del comportamiento
     CyclicBehaviour
      Algunas Precauciones !


• Un loop infinito en el setup antes de un
comportamiento impedirá que este último se
ejecute.
Esquema Conceptual
Flujo de Control de un Agente
          Conceptos Básicos
Comunicación

• Fundamental para poder conseguir la potencia
propia de los sistemas multiagente

•Para que los agentes se puedan comunicar deben
usar el mismo lenguaje de comunicación
          Conceptos Básicos
Comunicación

• Un lenguaje de comunicación define los tipos de
mensaje

•Las conversaciones entre agentes se rigen por
una serie de protocolos de interacción
                   ACL

•Lenguaje de Comunicación de Agentes

• Permite transmitir una serie de conocimiento
que vendrá expresado en un lenguaje de
contenido
                     ACL

• Los términos del lenguaje de contenido que
representen conocimiento pertenecen a un
vocabulario común a los distintos agentes que se
llama ontología.
      Intercambio de Mensajes
• Se realiza mediante mensajes FIPA-ACL

• Mecanismo:
     • Paso asíncrono de mensajes

• Cada agente tiene una cola de mensajes entrantes
• La lectura efectiva de los mensajes es a voluntad
del agente
      Intercambio de Mensajes
• Un agente puede:
     • Leer el primer mensaje en la cola
     • Leer el primer mensaje que satisfaga un
     requisito

• La cola de mensajes es única para cada agente y,
por lo tanto, es compartida por todos los
comportamientos
      Intercambio de Mensajes
• Cada vez que se coloca un mensaje en la cola el
agente receptor es avisado

• Un comportamiento puede ser bloqueado en
espera de la recepción de un mensaje:
      • Sincronización

• Los mensajes intercambiados por agentes son
instancias de la clase jade.lang.acl.ACLMessage
Mecanismo de paso de Mensajes
           Conceptos Básicos
Ontologías

• Conjuntos de elementos que definen la
estructura de los predicados, las acciones de los
agentes y conceptos relevantes al dominio del
problema.
           Conceptos Básicos
Ontologías

• Una ontología es una instancia de la clase
jade.content.onto.Ontology en la cual se
definen los Schemas

• Especifican la semántica de las relaciones
           Conceptos Básicos
Ontologías

• Conjuntos de elementos que definen la
estructura de los predicados, las acciones de los
agentes y conceptos relevantes al dominio del
problema.
   Elementos de una Ontología

• Predicados:
   • Expresiones sobre el estado de mundo

• Acciones de los agentes:
   • Expresiones que indican acciones que pueden
   realizar los agentes.
    Elementos de una Ontología

• Conceptos:
   • Expresiones que representan objetos,
   representan una estructura con varios atributos.
   • No aparecen aislados en los mensajes sino
   incluidos en otros elementos.

• Otros elementos: primitivas, agregaciones,
expresiones, variables, entre otros
El Modelo de Contenido
Ejemplo de Ontología
Arquitectura
               Arquitectura



Plataforma: entorno de ejecución en donde viven
los agentes. Una plataforma puede tener uno o mas
contenedores.
               Arquitectura


Contenedor: Es una Instancia del entorno de
ejecución de JADE. En esta es posible albergar un
número indeterminado de agentes. Cada contenedor
debe poseer un Message Dispatcher.
               Arquitectura


Contenedor principal: Es donde se alojan el AMS,
DF y ACC. Debe haber uno y solo uno por
plataforma.
    Agentes Auxiliares


•   RMA
•   Dummy Agent
•   Sniffer Agent
•   DF y AMS
Agentes Auxiliares: RMA
Agentes Auxiliares:
 Agente Dummy
Agentes Auxiliares:
  Agente Sniffer
Agentes Auxiliares: DF
Ejemplos
Conclusiones
Referencias
REFERENCIAS BIBLIOGRAFICAS
• Giovanni Caire. JADE TUTORIAL. Jade programming for
beginners., 2003.


• http://programacionjade.wikispaces.com/


• Juan Francisco Garamendi Bragado. Agentes Inteligentes: JADE.
2004.


• http://jade.tilab.com/
REFERENCIAS BIBLIOGRAFICAS

• http://es.scribd.com/doc/44652685/Programacion-Jade


• Escuela de primavera de agentes. Tutorial Basico de JADE, 2005.


•http://proyectojadeud.blogspot.com/2007/12/02-arquitectura-
jade.html


•http://www.slideshare.net/pcuestaesei/la-herramienta-de-
desarrollo-de-agentes-jade-293816

								
To top