septiembre 2008 Archives

0

Los agentes inteligentes, se tienden a interpretar como agentes aislados basados en diferentes tipos de arquitecturas: arquitectura de subsuncion, arquitectura de pizarra, arquitectura BDI y arquitecturas para la resolución genérica de problemas.

Debido al carácter distribuido de los entornos y a la necesidad de cooperación entre los agentes sobre todo en la solución de problemas complejos, han ido surgiendo métodos que permiten la colaboración de varios agentes para lograr objetivos comunes. Para estos casos surgen los Sistemas Multi-Agentes (SMA),

Existen dos formas de abordar el problema por medio de:
1. Agentes aislados.
2. Sistemas Multi-Agentes (SMA)

La filosofía de trabajo de los Sistemas Multi-Agentes implica no sólo la comunicación entre agente sino también lograr una actuación coordinada sobre el entorno. Este hecho aumenta la complejidad del desarrollo de los SMA, ya que obliga a realizar un estudio en todos sus detalles del entorno para detectar que acciones realizadas por un agente pueden afectar a otro agente y por supuesto al entorno en si.

A la hora de construir un sistema multiagente hay que tener en cuenta las diferentes técnicas que se pueden aplicar tales como:
1. Orientación a objetos.
• Estructura del sistema.
• Asignación de responsabilidades.
2. Sistemas expertos.
• Definición del comportamiento.
• Representación del conocimiento.
3. Inteligencia Artificial.
• Organización.
• Comunicación de conocimiento.
• Coordinación.

Para los sistemas basados en agentes consideraremos que el agente debe tener las siguientes características:
• Que tenga la capacidad de procesar conocimientos.
• Que puedan perseguir el cumplimiento de unos objetivos.
• Que sean capaces de influir en el entorno mediante acciones.
• Que las interacciones entre los agentes se puedan describir como acciones comunicativas.

Al igual que los sistemas expertos, los agentes no se aplican a cualquier tipo tarea. Para su uso eficiente seria bueno, que la tarea tenga alguna de las siguientes características:
• Situaciones donde los tipos de comunicaciones son complejos y diversos.
• Sistemas donde no es práctico o posible el comportamiento imperativo de caso por caso. Los agentes tienen la ventaja de estar guiado por sus objetivos y no de procedimientos que partiendo de una entrada lleguen a una salida.
• Sistemas donde se requiere de negociación, cooperación y competencia entre las distintas entidades.
• Sistemas autónomos.
• Sistemas con propiedades modulares: distribución, extensibilidad y flexibilidad.

Aspectos del SMA
1. Los agentes realizan tareas o persiguen objetivos
2. Identificación de objetivos generales y descomposición en objetivos más concretos que se pueden asignar a agentes
3. Qué interacciones existen entre agentes/roles
4. Organización de la estructura del SMA, roles, relaciones de poder, workflows
5. Entidades y relaciones con el entorno del SMA

1. Realización de tareas y control del estado mental del agente
a) Funcionalidad del agente:
• Qué tareas sabe ejecutar
• Qué objetivos se compromete a alcanzar
b) Control del agente:
• Estado mental: Agregación de entidades mentales tales como objetivos, creencias, compromisos, hechos.
• Gestión de estado mental: Creación, destrucción, modificación de las entidades del estado mental
• Procesador de estado mental: Reglas, planificación, etc.

2. Identificación y descomposición de objetivos
a) Objetivo (Situación deseada):
• Conjunto de estados que el agente quiere lograr, mantener, o evitar
• Una función de utilidad que maximizar
• Responde a ¿por qué?
b) Tarea: Transiciones de estado
• Conduce a la consecución de objetivos
• Responde a ¿cómo?

3. Interacción entre los agentes
a) Intercambio de conocimiento o peticiones (intencionalidad) entre agentes
b) Define las interacciones entre los agentes o entre agentes y humanos
• Se definen a alto nivel, en diseño se detalla el protocolo de interacción
• Se puede usar el concepto de protocolo de interacción de Agent UML o los protocolos de Gaia

4. Organización de la estructura
a) Descomposición de la estructura en grupos y flujos de trabajo.
• Interrelación de tareas en flujos de trabajo
• Relaciones entre agentes respecto a las tareas
• Recursos disponibles y asignación
b) Relaciones sociales
• Relaciones de poder (p.ej. subordinación) y cliente/servidor entre agentes
• Relaciones entre grupos
• Relaciones entre organizaciones
c) Funcionalidad
• Propósito
• Tareas que debe realizar

5. Entidades del entorno con las que se va a interactuar.
a) Recursos:
• Elementos consumibles o no consumibles: Descriptores de ficheros, hilos de ejecución, memoria, dispositivos de E/S, sockets, ancho de banda, etc.
b) Aplicaciones:
• Uso más complejo, por medio de alguna interfaz
c) Agentes
• Satisface el principio de racionalidad

Análisis del SMA
1. Propósito: obtener un modelo abstracto que represente los requisitos del sistema para:
• Entender mejor el problema
• Confirmar que se trata del problema a resolver (validación)
• Facilitar el diseño de la solución
2. Define qué hace el sistema
• Requisitos funcionales: Qué servicios proporciona el sistema
• Requisitos no funcionales: Parámetros de calidad de servicio

Diseño del SMA
1. Propósito: Transformación de las entidades de análisis en entidades computacionales
• Se asume una plataforma de agentes que establece una arquitectura y restricciones en las alternativas de diseño: Por ejemplo, BDI, capas, FIPA, etc.
2. Define cómo se realizan los requisitos del sistema
• Definición de la organización de los agentes del sistema
• Especificación de las interfaces de los agentes y componentes del sistema
• Estructura interna de los agentes y su comportamiento

Diseño del agente

1. Control y gestión
• Sincronización y coordinación de las actividades de los otros componentes

2. Percepción y comunicación
• Gestión de las sesiones de comunicación del agente con
• Otros agentes
• Usuarios
• Sistemas propietarios (legacy systems)

3. Dominio
• Recursos y elementos de información propios del dominio de la aplicación

4. Recursos
• Recursos genéricos de la plataforma de agentes

0

A la hora de desarrollar un SMA se pueden considerar dos filosofías de trabajo, una basada en la utilización de un lenguaje de especificación de agentes y la otra a través del desarrollo de un sistema de software a partir de una plataforma que sirve de base a la construcción del SMA, dicha plataforma proporciona servicios básico de comunicación, gestión de agentes y una arquitectura de agente. En cualquiera de los dos casos, y sobre todo cuando el sistema a desarrollar es grande, se necesita metodologías que estructuren el desarrollo de acuerdo con las prácticas de ingeniería de software.

Tenemos que un SMA se puede abordar de dos formas:
1. Utilizando un lenguaje de especificación de agentes.
2. Utilizando una plataforma (sistema de software).

Lenguajes de especificación de agentes

Existen diferentes lenguajes específicos para agentes. Aunque vale decir que también se pueden desarrollar los SMA a tr5aves de lenguajes de propósito general tales como C++, Java, Pascal, etc. Pero seria mas engorrosa su implementación ya que se parte de cero y hay que construirlo todo, mientras los lenguajes de agentes ya ofrecen ciertas herramientas que facilitan la elaboración de los SMA.

El lenguaje de agente mas conocido es Agent0, donde se utilizo, por primera vez, la definición de programación orientada a gentes. Y propuso un nuevo paradigma de programación en el que la entidad principal es el agente. En Agent0, un agente es una entidad cuyo estado se ve como un conjunto de componentes mentales tales como creencias, habilidades, elecciones y compromisos, con estas entidades y un conjunto de primitivas, como son: enviar mensajes, comprometerse o solicitar la ejecución de una tarea, es posible elaborar un lenguaje de descripción de agentes. Existen otros lenguajes que siguen el modelo de Shohan como CASA o PLACA, estos lenguajes añaden la capacidad de planificar acciones a los agentes en el SMA.

Han surgido otros enfoques orientados a teorías de agentes, donde se enuncian definiciones formales para la construcción de los SMA. que permite la confirmación de las propiedades del mismo, lo cual permite manipular la intencionalidad de los agentes. Dentro de estos nuevos enfoques se encuentra ConGOLOG el cual se centra en modelar la ejecución de tareas asignadas a varios agentes y su efecto en el entorno y se tiene en cuenta la modificación de los conocimientos que sufren la entidades en la ejecución de las tareas (fluents) y defines axiomas: de ejecución de tareas, de precondición de tareas de marco (especifica a que fluents afecta la ejecución de la tarea). La ejecución del SMA consiste en descubrir que acciones se pueden ejecutar en el SMA que no creen inconsistencias en el conjunto de axiomas acumulados, que son el conjunto de precondiciones asociadas a las acciones posibles de los agentes.

Lenguajes de agentes:
1. Agent0
2. CASA
3. ConGOLOG.

Plataformas para el diseño de Sistemas Multi-Agentes

La tendencia actual en el desarrollo de SMA es la utilización de plataformas de desarrollo. Esto se debe en gran parte al nivel de conocimientos necesarios que generalmente implica programar con un lenguaje de agentes. Para suplir dicha complejidad han surgido dos tendencias por un lado armazones de software de SMA adaptables a diferentes dominios de aplicación (herramientas) y por otro lado plataformas de desarrollo de ámbito genérico que son implementaciones de estándares de agentes. Aunque el desarrollo con los armazones es más sencillo hoy en día predominan los segundos.

Tipos de plataformas:
1. Herramientas o armazones.
2. Plataformas genéricas.

La mayoría de las plataformas implementan las arquitecturas abstractas FIPA

0

Habíamos visto que dada la complejidad del diseño de agentes, son sistemas abiertos y cooperativos donde cada agente debe jugar su función se requiere de plataformas de desarrollo que faciliten la programación. Y que existían dos tipos de plataformas: las herramientas o armazones y las genéricas.

Plataformas de herramientas o armazones.
El caso más significativo de las armazones de software es Zeus, que presenta un entorno de desarrollo con el que se programa visualmente el SMA. Las posibilidades de programación a través de este entorno son muy variadas. Entre otros hay que suministrar una ontología: reglas de comportamiento, planes de ejecución de tareas y mensajes a enviar a otros agentes.

Debido a esta versatilidad en su configuración, el diseño con ZEUS se hace tan complejo como programar con lenguajes de agentes. Aunque se facilita el desarrollo de aspectos como la coordinación, quedan pendientes decisiones como qué hay que coordinar y para qué. Por ello, la aportación de una metodología en este caso consistiría en proporcionar un ciclo de desarrollo, actividades y elementos conceptuales que ayudasen al descubrimiento incremental de los elementos requeridos por ZEUS. Un ejemplo, aunque limitado, de metodología para ZEUS se tiene de mano de sus propios desarrolladores [Collis y Ndumu 99], donde se aplica la idea de rol para guiar el descubrimiento de funciones del sistema.

Zeus es un conjunto de herramientas para ayudar en la creación de sistemas de
agentes colaborativos (limitados en competencias y recursos, por lo
que deben compartir sus habilidades con otros para realizar un
problema más complejo)
http://www.labs.bt.com/projects/agents/zeus/index.htm

Es un paquete de clases JAVA, que cuenta con
Agent building software:
• Editores que ayudan al usuario a crear los agentes utilizando los “bloques” o componentes software
• Sigue la metodología propia en 6 etapas:
1. Análisis (identificación de agentes)
2. Definición de agentes (atributos).
3. Organización de agentes.
4. Definición de las tareas de los agentes.
5. Coordinación de agentes (protocolos).
6. Generación automática de código (JAVA)
Agent Component Library.
• Bloques de construcción de agentes.
• Proporciona mecanismos de comunicación
1. Lenguaje de comunicación (ACL, KQML)
2. Mecanismos de paso de mensajes (TPC/IP)
• Gestión y uso de Ontologías.
• Librerías de protocolos.
• Otros.

Zeus es a su vez una herramienta y una metodología…

ABLE (Agent Building and Learning Environment) [IBM 02] aunque también permite el prototipado rápido de SMA, no llega al nivel de ZEUS. ABLE es una herramienta de IBM para la construcción de sistemas de agentes inteligentes donde todos sus elementos, incluso los agentes, se construyen por composición de AbleBeans, una extensión de los JavaBeans1. Son de interés un conjunto de AbleBeans especializados que implementan sistemas de aprendizaje estadísticos (mapas autoorganizativos, redes neuronales, mapas de conexión) y control simbólico (razonamiento por encadenamiento hacia delante y lógica de predicados). ABLE incorpora también un entorno visual de desarrollo donde se interconectan AbleBeans. El interés de esta plataforma es que soluciona visualmente la construcción y comunicación de los agentes.

ABLE no llega a detallar cómo se obtiene la funcionalidad de los agentes y cómo deben actuar en cada situación. La aportación de una metodología a ABLE sería más amplia que en el caso de ZEUS. Se trataría de dar medios para detallar aspectos de control del agente teniendo en cuenta los elementos de control que vienen predefinidos en ABLE. Sería útil, por ejemplo, la idea de casos de uso [Jacobson, Booch y Rumbaugh 00] para identificar conjuntos de funciones a proporcionar por el sistema y escenarios para describir cómo se espera que se realice el proceso de aprendizaje de los agentes.
Entorno: plataformas para el diseño, implementación, pruebas y
ejecución de agentes autónomos y sistemas multiagente.
La mayoría implementan la arquitectura abstracta de la especificación
FIPA (www.fipa.org) y proporcionan servicios o facilidades para la
ejecución de MAS…

Herramientas o armazones:
1. Zeus.
2. ABLE

Plataformas genéricas
Las plataformas de desarrollo más extendidas son JADE [Bellifemine, Poggi y Rimassa 01] y Grasshopper [Breugst y Magedanz 98].

JADE es la implementación oficial del estándar FIPA [FIPA 95], y soporta todos los servicios básicos de infraestructura especificados en FIPA (comunicaciones, movilidad, gestión de agentes y localización de agentes), a los que añade algunas utilidades gráficas para facilitar la administración de las plataformas y la depuración de los mensajes intercambiados por agentes en tiempo de ejecución.

Es un paquete desarrollado en Java que cuenta con
Java Agent DEvelopment framework
Soporta la implementación de MAS (FIPA compliant) :
• Librería de paquetes para programar agentes.
• Herramientas para la depuración y la ejecución de agentes.
Plataforma distribuida para la ejecución de agentes (heterogéneos
como Zeus): middle-ware para MAS
• servicios para agentes: directorios, codificación y transporte de mensajes
• herramientas: monitor remoto de agentes, sniffer agent, dummy agent
Completamente desarrollado en JAVA
Libre distribución bajo licencia LPGL
http://sharon.cselt.it/WWW projects/jade/

Grasshopper es la implementación del estándar MASIF [Baümer et al. 00], que soporta la movilidad de agentes en un entorno distribuido utilizando comunicación y servicios CORBA [OMG 00a]. En JADE y Grasshopper existe una arquitectura básica de agente que hay que utilizar para acceder a los servicios de la plataforma correspondiente.
El diseño de agentes con estas plataformas significa atenerse a unos estándares de comunicación y de gestión de agentes. El resto, como la especificación del control del agente, su inteligencia o las relaciones entre las tareas del sistema, se deja al criterio del desarrollador. La aportación de una metodología a desarrollos basados en este tipo de plataformas consistiría en organizar el proceso de generación del SMA y en proporcionar elementos para el diseñador pueda describir estos aspectos teniendo en cuenta las restricciones de la plataforma destino.

Plataformas genéricas:
1. JADE.
2. Grasshopper.