Paradigma Orientado a Agentes Inteligencia Artificial Silvana Arias – Carla Espinosa – Livia Loaiza – Beatriz Pasaca 2010 Paradigma Orientado a Agentes PARADIGMA ORIENTADO A AGENTES En los últimos años diferentes aplicaciones basadas en el paradigma de agente han ido apareciendo intentando buscar fundamentalmente una solución al problema de la explosión de la información. Unido a otros factores, como es el espectacular aumento del uso de la red, ha provocado que internet haya sido y sea un excelente campo de pruebas para el desarrollo y generación de agentes. De manera que, luego de la masiva aplicación del paradigma de orientación a objetos, surge la necesidad de subir un nivel más de abstracción para poder desarrollar aplicaciones de mayor complejidad. Entidades autónomas, paralelismo, capacidad de comunicación, colaboración y negociación son algunas de las claves del paradigma de agentes. Siendo que un agente inteligente es (a grandes rasgos) una entidad que observa y actúa en un entorno para intentar alcanzar unos objetivos. Los agentes inteligentes hay que entenderlos más cómo un paradigma de diseño que cómo una solución a un problema. Y entendidos como un paradigma de diseño, son innegablemente útiles, ya que sirven para modelar un programa siguiendo un comportamiento inspirado en el de los seres vivos. También sirven para implementar la noción de agente situado en un entorno, que permite definir los límites en el sistema y así mejorar el rendimiento nuestro agente: no es necesario diseñar un agente que opere en cualquier entorno, sino uno que lo haga en el entorno que hemos definido. Lo importante para diseñar el agente no es sólo los objetivos, sino el entorno y la interacción con el mismo. Sin embargo, el hecho de usar este paradigma no ayuda a resolver por sí mismo los problemas. Hay otro factor importante: a veces se plantea un problema en términos de agentes inteligentes y se espera que el simple planteamiento en estos términos sirva para resolver el problema. La realidad es que el problema es complejo de resolver empleando cualquier paradigma, el problema es complejo en términos absolutos, da igual cómo lo resolvamos. En los últimos años el uso del paradigma agente/sistema ha crecido notablemente. Este paradigma se ha venido aplicando a diferentes áreas, como pueden ser control de procesos, robots móviles y recuperación de información. El paradigma de sistemas multi-agente constituye actualmente un área de creciente interés dentro de la Inteligencia Artificial, entre otras cosas, por ser aplicable a la resolución de problemas complejos no resueltos de manera satisfactoria mediante técnicas clásicas. Paradigma Orientado a Agentes Paradigma de Objetos vs Paradigma de Agente. Objetos Ejecuta los métodos invocados Flujo de control del llamante Encapsula estado y comportamiento Estado: valor de variables Comportamiento: salida a partir de una entrada Mensajes invocan procedimiento Asociaciones entre objetos Agentes Autonomía de decisión Flujo de control propio Encapsula la activación del comportamiento Estado mental: objetivos, creencias, ... Comportamiento: cómo decidir lo que hacer Interacciones: actos de habla (intencionalidad) Organización: relaciones sociales entre agentes Metodología Una metodóloga constituye un conjunto de etapas o fases que van guiando a los diseñadores partiendo de una definición de alto nivel hacia una aproximación a una implementación. La necesidad de utilizar una metodología Desarrollar SMAs es complejo Hay soluciones tecnológicas: Arquitecturas: subsunción, BDI, capas. Entornos de desarrollo: Zeus, AgentBuilder. Plataformas de ejecución: JADE, FIPA-OS, Jackal, OAA, etc. Pero hace falta responder a varias cuestiones: Qué problema tengo que resolver Desarrollar muchos agentes o agentes de elevada complejidad Explicar a otros cómo es el SMA Trabajar más de una persona: Coordinar el trabajo Valorar la calidad del desarrollo Qué proceso seguir Paradigma Orientado a Agentes La metodología ayuda Lo necesario para definir una metodología Definir los resultados a producir • Documentación • Código, prototipos, pruebas Un lenguaje para definir los resultados • Visuales: Data Flow Diagrams, Entity-Relationship diagrams, Message Sequence Charts, UML • Formales: Z, redes de Petri Actividades orientadas a producir los resultados • De análisis, diseño, implementación, validación,etc. Guías Métricas Paradigma de ingeniería del software • Estructuración de actividades • Estimación de habilidades necesarias en el equipo de desarrollo • Gestión del proceso Paradigma Orientado a Agentes Metodologías de desarrollo de SMA A continuación se enumeran las principales metodologías de agentes. Ingenias. Esta metodología ha sido diseñada por un grupo de investigadores de la Universidad Complutense de Madrid. Ingenias se basa en los resultados obtenidos por la metodología Message y, por lo tanto, se basa en 5 metamodelos desde los cuales se define el sistema multiagente. Gaia. Intenta ayudar a ir desde unos requisitos iniciales a un diseño lo suficientemente detallado para ser implementado automáticamente. MaSE. Parte del paradigma orientado a objetos y considera que un agente es sólo una especialización de un objeto. Esta especialización consiste en que los agentes se coordinan unos con otros mediante conversaciones y actúan para alcanzar sus propias metas y las metas de todo el sistema. Paradigma Orientado a Agentes Otras como: Zeus, Adelfe, AAII (Australian Artificial Intelligence Institute), Tropos, Zeus,c MAS-CommonKADS, MESSAGE, Newell. MaSE (Multi-agent systems Software Engineering) Parte del paradigma orientado a objetos y asume que un agente es sólo una especialización de un objeto. La especialización consiste en que los agentes se coordinan unos con otros vía conversaciones y actúan proactivamente para alcanzar metas individuales y del sistema. En MaSE los agentes son sólo una abstracción conveniente, que puede o no poseer inteligencia. En este sentido, los componentes inteligentes y no inteligentes se gestionan igualmente dentro del mismo armazón. El proceso de desarrollo en MaSE es un conjunto depasos, la mayoría de los cuales se ejecutan dentro de la herramienta que soporta MaSE, AgentTool El análisis en MaSE consta de tres pasos: capturar los objetivos, capturar los casos de uso y refinar roles. Como productos de estas etapas se esperan: diagramas de objetivos, que representan los requisitos funcionales del sistema; diagramas de roles, que identifica roles, tareas asociadas a roles y comunicaciones entre roles y entre tareas; y casos de uso, mostrados no como diagrama sino como una enumeración de los casos de uso considerados con la posibilidad de usar diagramas de secuencia para detallarlos. El diseño consta de cuatro pasos: crear clases de agentes, construir conversaciones, ensamblar clases de agentes y diseño del sistema. Como productos de estas etapas, MaSE espera: diagramas de clases de agentes, que enumeran los agentes del sistema, roles jugados e identifican conversaciones entre los mismos; descomposición del sistema (agente) en subsistemas (componentes del agente) e interconexión de los mismos (definición de la arquitectura del agente mediante componentes); diagramas UML de despliegue para indicar cuántos agentes habrá en el sistema y de qué tipo. GAIA GAIA es una metodóloga para el diseño de sistemas basados en agentes cuyo objetivo es obtener un sistema que maximice alguna medida de calidad global. GAIA pretende ayudar al analista a ir sistemáticamente desde unos requisitos iniciales a un diseño que, según los autores, esté lo suficientemente detallado como para ser implementado directamente. En GAIA se entiende que el objetivo del análisis es conseguir comprender el sistema y su estructura sin referenciar ningún aspecto de implementación. Esto se consigue a través de la idea de organización. Una organización en GAIA es una colección de roles, los cuales mantienen ciertas relaciones con otros y toman parte en patrones institucionalizados de interacción con otros roles. Paradigma Orientado a Agentes Los roles agrupan cuatro aspectos: responsabilidades del agente, los recursos que se le permite utilizar, las tareas asociadas e interacciones. GAIA propone trabajar inicialmente con un análisis a alto nivel. En este análisis se usan dos modelos, el modelo de roles para identificar los roles clave en el sistema junto con sus propiedades definitorias y el modelo de interacciones que define las interacciones mediante una referencia a un modelo institucionalizado de intercambio de mensajes. Tras esta etapa, se entraría en lo que GAIA considera diseño a alto nivel. El objetivo de este diseño es generar tres modelos: el modelo de agentes que define los tipos de agente que existen, cuántas instancias de cada tipo y que papeles juega cada agente, el modelo de servicios que identifica los servicios (funciones del agente) asociados a cada rol, y un Modelo de conocidos, que define los enlaces de comunicaciones que existen entre los agentes. A partir de aquí, los autores de GAIA proponen aplicar técnicas clásicas de diseño orientado a objetos. Sin embargo, GAIA declara que queda fuera de su ámbito. Esta metodología sólo busca especificar como una sociedad de agentes colabora para alcanzar los objetivos del sistema, y que se requiere de cada uno para lograr esto último. PASSI Para comprender esta metodóloga, es importante tener en cuenta la definición de agente propuesta en [CP00]. Un agente es “una instancia de una clase agente que es la implementación de software de una entidad autónoma capaz de lograr sus objetivos a través de sus decisiones autónomas, sus acciones y sus relaciones sociales”. Un agente puede tener varios roles para alcanzar sus metas, siendo un rol una función temporal asumida por el agente en la sociedad mientras busca alcanzar una sub-meta. Dentro de esta metodología podemos identificar varias fases con las cuales se asegura llegar de la especificación del sistema a una versión implementable. Dentro de la etapa de análisis, tenemos las siguientes fases: Descripción del dominio: utilizando los diagramas de casos de uso de UML se describe el dominio de la aplicación, identificación de agentes: a partir del diagrama anterior y utilizando Rational Rose identificamos los agentes que componen el sistema, Identificación de roles: los roles de los agentes los representamos mediante diagramas de secuencia e identificación de tareas: se dibuja un diagrama de actividad para cada agente y se deciden que tareas son necesarias para realizar las funcionalidades descritas anteriormente. Paradigma Orientado a Agentes En la segunda etapa, la etapa de diseño, podemos identificar otras fases entras cuales se encuentran: descripción de ontologías: se describe la sociedad desde el punto de vista ontológico, descripción de roles: se modela la vida de los agentes observando sus roles, descripción de protocolos: se define cuales protocolos se utilizarán y si es necesario, se definirán los nuevos, definición de la estructura y del comportamiento de los agentes: se diseña la estructura de la sociedad y de los agentes en particular. Finalmente tenemos las fases de implementación y configuración. La fase de producción de código no está completamente implementada, pero está en desarrollo la búsqueda de una solución en un metalenguaje basado en XML. En cuanto a la configuración, se acentúa su importancia si se trabaja con agentes móviles y con problemas significativos en la diseminación de los agentes en el sistema. Integración de metodologías El paradigma de agente extiende al de objeto: Aprovechar las metodologías OO • Más fácil de aceptar por los ingenieros software • Aprovecha herramientas y experiencia Ciclo de desarrollo iterativo e incremental, basado en casos de uso Extensiones: • Aspectos sociales (organización, interacciones, negociación) • Comportamiento (autonomía, estado mental, objetivos, tareas) • Concurrencia y distribución Modelado desde varios puntos de vista (Vowel Engineering, AAII, MAS-CommonKADS, MESSAGE) Para poder gestionar la complejidad del SMA Modelos: Entorno, dominio/ontología, roles, objetivos/tareas, interacciones/protocolos, organización, agente. Análisis Casos de uso para capturar requisitos funcionales Roles y servicios para agrupar las distintas funcionalidades asociadas a un agente o grupo de agentes Diseño Independiente de la arquitectura (Gaia) Basado en una arquitectura concreta (MaSE, AAII, Zeus) Define el modelo computacional del agente => arquitectura del agente (MASCommonKADS) Relevancia de las herramientas (Zeus, MaSE, MESSAGE) Paradigma Orientado a Agentes Arquitectura Agente = Programa de Agente + Arquitectura La arquitectura se refiere la parte Hardware (sensores y efectores) que están entre el entorno y el Programa de Agente; proporciona al programa las percepciones del entorno que se obtienen a partir de los sensores e indica a los efectores los comandos asociados a las acciones que tienen que ejecutar. Para ejemplificarla podemos mencionar una computadora, una cámara, un brazo robótico u otro dispositivo que funcione como sensor. La parte más importante de la estructura para el desarrollo del sistema de agente planteado en esta investigación es sin duda el diseño del programa de agente, para esto es necesario tomar en cuenta puntos como el entorno en el que se desarrollará, las percepciones que se obtienen del ambiente, las acciones que realizará el agente y los objetivos que debe alcanzar el agente. Podemos mencionar una serie de pasos para la construcción de un programa de agente: 1. Analizar el tipo de problema que vamos a tratar para poder definir claramente el problema. 2. Definir el entorno, las percepciones, las acciones y las metas Paradigma Orientado a Agentes 3. Representar el conocimiento definiendo una técnica de representación 4. Diseñar el agente con la base de conocimiento y el mecanismo de inferencia respectivo. 5. Realizar las pruebas correspondientes. Las Arquitecturas de Agentes analizan los agentes como entidades reactivas/preactivas independientes. Las arquitecturas de agentes conceptualizan los agentes como un agregado de componentes de percepción, acción y razonamiento. Los componentes de percepción alimentan los de razonamiento, los cuales gobiernan las acciones de los agentes, incluyendo lo que se va a percibir a continuación. Las Arquitecturas de Sistemas de Agentes analizan los agentes como entidades interactivas que proporcionan y consumen servicios. Las arquitecturas de sistemas facilitan las operaciones y las interacciones de los agentes bajo las restricciones del entorno, y les permiten aprovechar las facilidades y los servicios disponibles. Lenguajes de Agentes. Un lenguaje de agentes se definen como lenguajes que permiten programar agentes con los términos desarrollados teóricamente acerca de los agentes, utilizando una estructura correspondiente a un agente y propiedades de agencia modeladas con anterioridad Los principales lenguajes de programación son: Lenguajes de agentes de propósito general: Destinados a programar agentes genéricos utilizables en cualquier aplicación. Lenguajes de agentes específicos: Lenguajes para un tipo de agentes específicos (ej. Telescript y Agent-Tel, utilizados para la telefonía móvil / celular). También se pueden distinguir los siguientes niveles en la programación de agentes: Lenguajes de programación de la estructura del agente: permiten programar las funcionalidades básicas para definir a un agente: funciones de creación de procesos y funciones de comunicación entre agentes. Sólo es utilizado por programadores de plataformas de desarrollos de agentes. Lenguajes de programación del comportamiento del agente: permiten definir el conocimiento del agente: conocimiento inicial (modelo de entorno, creencias, deseos, objetivos), funciones de mantenimiento de dicho conocimiento (reglas, planes), funciones para alcanzar sus objetivos (planes, reglas) y funciones para desarrollar habilidades (programación de servicios). Paradigma Orientado a Agentes Análisis de la Metodología BDI Modelo BDI. Un sistema que maneja agentes racionales tiene ciertos estados mentales, que son: creencias, deseos e intenciones formando así el modelo BDI (belief, desire, intention) que representa respectivamente la información, los motivos y los estados de liberación de un agente. El modelo BDI combina modelos ontológicos del razonamiento humano y se mantiene en relación con otros modelos de agentes, sin embargo tiene algunas limitaciones como lo son: Algunas conductas no han sido bien establecidas, en particular el modelo básico BDI parece ser inapropiado para construir sistemas que deben aprender y adaptar su conducta. No tiene consideraciones de arquitectura para aspectos explícitos de la conducta de los multi-agentes. Algunos paradigmas de programación han sido modelos computacionales bien definidos y entendidos, el modelo BDI al ser un modelo de especulación filosófica, no es sujeto de demostración. Creencias. Un agente debe obtener la información del estado del medio ambiente. Basándose en la definición presentada por Michael Georgeff [2001], las creencias representan el estado del medio ambiente como una variable, una base de datos, un conjunto de expresiones lógicas o alguna otra estructura de datos. Éstas se pueden se pueden ver como el componente informativo de un estado del sistema, representando una posibilidad “imperfecta” de un posible mundo que va cambiando constantemente, siendo así un modelo del mundo y del resto de los agentes. Para esto, nos será muy útil clasificar la información en conocimiento y creencias acerca del mundo, sabiendo que la diferencia es que conocimiento es algo que es verdadero en el mundo y las creencias es lo que el agente entiende acerca del mundo, entonces un agente puede creer algo que es falso pero no puede saberlo. Deseos. También llamados metas, es otro de los componentes mentales más importantes en un agente; es el valor de una variable, el registro de una estructura o una expresión simbólica en alguna lógica. Representa algún estado final deseado y el estado “motivacional” del sistema. Intenciones. Un sistema necesita terminar los planes y submetas que adopta, sin embargo debe ser capaz de reconsiderarlos. Estos planes terminados se llaman intenciones, que son simplemente un conjunto Paradigma Orientado a Agentes de procesos en ejecución que pueden ser interrumpidos para retroalimentarse del posible mundo en cambio. El sistema debe almacenar sus intenciones actuales y éstas capturan el componente de liberación del sistema. Para cada mundo que se puede acceder por medio de deseos existe un correspondiente mundo que se puede acceder por medio de intenciones que contiene solo la mejor manera de hacer una acción así como de determinar una función de liberación apropiada [Georgeff, Pell & Pollac, 1998]. Intérprete básico. Las entradas al sistema son eventos recibidos por medio de una cola de eventos. El sistema puede reconocer eventos internos y externos; los eventos externos pueden generar eventos internos. Asumimos que los eventos son atómicos y se reconocen una vez que se completan y no cuando ocurren. Las salidas son acciones atómicas que son realizadas por una función de ejecución. El sistema puede reconocer eventos correspondientes a una ejecución exitosa o no exitosa de las acciones. Basándose en el estado actual y los eventos en la cola, el sistema selecciona y ejecuta opciones que corresponden a las subrutinas, reglas, tareas, planes o autómatas finitos. El intérprete continuamente hace lo siguiente: 1. Determina las opciones disponibles. 2. Libera algunas para realizarlas. 3. Actualiza su estado y ejecuta las acciones atómicas apropiadas. 4. La cola de eventos es actualizada para que contenga todos los eventos reconocidos que ocurrieron durante el ciclo. Arquitectura BDI Entrando más a fondo con el sistema anterior, vamos a considerar el caso de una arquitectura BDI. Éste incluye las creencias, deseos e intenciones de un agente. Asumimos que los eventos son atómicos y son reconocidos después de que ocurrieron. De forma similar las salidas de las acciones de los agentes son atómicas. El interprete queda como se muestra en la siguiente figura: Paradigma Orientado a Agentes El proceso del intérprete anterior funciona de la siguiente manera: 1) Al inicio de cada ciclo, el generador de opciones (option generator) lee la cola de eventos (event-queue) y regresa una lista de opciones; 2) El liberador selecciona un subconjunto de opciones para ser adoptados y las agrega a la estructura de intenciones. 3) Si existe una intención que realiza una acción atómica en este punto, el agente la ejecuta. 4) Si algún evento externo ha ocurrido durante el ciclo del intérprete es agregado a la cola de eventos. 5) Los eventos internos son agregados cuando ocurren. 6) El agente modifica las estructuras de deseos e intención desechando todos los deseos e intenciones exitosas, así como los deseos imposibles y acciones no – realizables. Este sistema es una versión simplificación del sistema de razonamiento procedural (PRS), uno de los primeros en implementar sistemas orientados hacia agentes basados en la arquitectura BDI y su sistema sucesor dMARS (distributed multiagent reasoning system). Es necesario representar las creencias acerca del estado actual del mundo y considerar sólo aquellos conjuntos de literales sin disyunciones o implicaciones. Después, se debe representar la información acerca de las opciones disponibles para los agentes y los planes, que se pueden ver como una forma especial de creencias. Cada plan tiene un cuerpo que describe las acciones primitivas o sub-metas que tienen que ser logradas por un plan de ejecución para ser exitoso. Las condiciones bajo las cuales un plan puede Paradigma Orientado a Agentes ser elegido como una opción son especificadas por una condición de invocación y una precondición. La condición de innovación especifica el evento clave que es necesario para una invocación del plan, y la precondición especifica la situación que debe ser tomada por el plan para ser ejecutada. Por último, cada intención del sistema se forma tomando ciertos planes de acción que están representados implícitamente usando una cola convencional en tiempo real de planes, que están relacionados jerárquicamente (similar a como un intérprete de prolog maneja las cláusulas). [Rao & Georgeff, 1995]