JADE Java Agent Development Framework EXPOSITOR: Melvin Fallas CascanteA62098
Agenda IntroducciónIntroducción HistoriaHistoria El estándar FIPAEl estándar FIPA CaracterísticasCaracterísticas Conceptos BásicosConceptos Básicos ArquitecturaArquitectura EjemplosEjemplos ConclusionesConclusiones
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
Permite la interoperabilidad entre plataformas de diferentes empresas y organizaciones. 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. 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. 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. 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). 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. 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. 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. 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. 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
Agentes Agentes Comportamientos Comportamientos Comunicación Comunicación Ontologías 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
Código Mínimo de un Agente
Conceptos Básicos Comportamientos 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. Se puede utilizar una marca que se activa cuando se quiere que finalice el comportamiento (se evalúa su valor en el método done()).
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 jade.content.onto.Ontology 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 RMA Dummy Agent Dummy Agent Sniffer Agent Sniffer Agent DF y AMS 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., Juan Francisco Garamendi Bragado. Agentes Inteligentes: JADE
REFERENCIAS BIBLIOGRAFICAS Escuela de primavera de agentes. Tutorial Basico de JADE, jade.htmlhttp://proyectojadeud.blogspot.com/2007/12/02-arquitectura- jade.html desarrollo-de-agentes-jade http:// desarrollo-de-agentes-jade