Universidad Autónoma del Estado de Hidalgo Ing. En Software yulitzamiranda.ener@gmail.com
Resumen este campo, en el desarrollo del artículo, para lo cual
Un agente es una entidad física o virtual, ubicada en será necesaria la introducción de los conceptos que un ambiente del cual tiene representación parcial, hasta ahora se han descrito. obtiene percepciones, y al cual responde tratando de cumplir con sus objetivos de la manera más eficiente. Introducción Los agentes se comportan de manera autónoma y proactiva, poseen habilidades y recursos propios, y El propósito del presente artículo, es dar además están en capacidad de ofrecer servicios. Al conocimiento a nuevas necesidades con el avance reunir un grupo de agentes para obtener un conjunto tecnológico que tenemos día a día y cuál es la de interacciones de manera cooperativa, con el fin de necesidad de la implementación a ella y lo que puede lograr un objetivo global, se crea un Sistema dar como resultado través del cual sustentaremos el Multiagentes. El concepto de objetivo de la implementación y el analisis que existe Organizaciones Multiagentes describe un conjunto de dentro del entorno de la ingeniería en software para el relaciones entre sus componentes, en donde los desarrollo de Programación Orientada a Agentes objetivos de la organización no se describen en utilizando alguna metodología para un buen trabajo. términos individuales, sino en términos del todo al que El concepto de agentes constituye un nuevo y pertenecen. promisorio paradigma para la realización de una nueva La programación concurrente es una forma de generación de la rama de ingeniería en Software que desarrollar programas con múltiples componentes que asistan, den soporte activo, y en algunos casos hasta se ejecutan de manera paralela. Por medio de la modelen ciertos aspectos del usuario. programación concurrente se generan entidades La Programación Orientada a Agentes, ofrece una autónomas que encapsulan datos y comportamientos. nueva perspectiva en el diseño de software para Estas entidades son componentes pequeños entre los manejar la complejidad inherente de los sistemas cuales se distribuye una tarea a realizar. Los Sistemas construidos a partir de esta actividad, la programación Multiagentes pueden verse como sistemas orientada a agentes, está basada en un conjunto de concurrentes que manejan tanto comunicación como conceptos que se proveen tanto para una aproximación sincronización entre ellos, y además encapsulan de diseño de software estructurada, como para una comportamiento. La característica que diferencia los intuitiva. Incluye diferentes niveles de abstracción dos tipos de sistemas es que las entidades que hacen para analizar un sistema de software y una perspectiva parte de un Sistema Multiagentes, guardan una de alto nivel para diseño de sistemas. Además, facilita relación semántica con el problema que están el análisis, y más específicamente, la fase de diseño de modelando. la arquitectura en el proceso de desarrollo de software. La Programación Orientada a Agentes puede ser La Ingeniería de Software Orientada a Agentes está considerada un mejoramiento y una extensión de la siendo descrita como un nuevo paradigma para el área Programación Orientada a Objetos. Los agentes son de investigación en Ingeniería de Software. Pero para activos y su comportamiento es autónomo, lo cual les que pueda convertirse en un nuevo paradigma permite tomar decisiones, además de poseer aceptado por esta industria, se deben desarrollar representaciones de estados mentales, compromisos, herramientas y metodologías y fáciles de usar. creencias y deseos. La Programación Orientada a Agentes está motivada por la necesidad que existe de modelar sistemas complejos y de manejar arquitecturas abiertas que cambien continuamente y evolucionen para acomodarse a nuevos componentes, logrando así satisfacer nuevos requerimientos. En la actualidad no existe una metodología estándar creada para ser utilizada en el desarrollo de sistemas basados en agentes. Se hará referencia al trabajo realizado en Agentes y Programación cuales tiende a satisfacer por medio de su conducta. En la actualidad, se presenta la tendencia a crear y Posee habilidades y está en capacidad de manejar sistemas inteligentes para obtener mejores ofrecer servicios. resultados en la resolución de problemas Posee recursos propios. complejos. Dichos sistemas pueden ser construidos La conducta de un agente se basa tanto en su utilizando como base a los Agentes y a los propia experiencia como en el conocimiento Sistemas Multiagentes, dadas sus características y integrado que sirve para construir al agente comportamientos que brindan un desempeño más para el ambiente específico en el cual va a ágil y eficiente. El desarrollo de software que tiene operar en cuenta estas características y comportamientos, ha dado origen a un nuevo paradigma denominado El comportamiento de un agente depende Programación Orientada a Agentes, utilizado exclusivamente de la secuencia de sus ampliamente en la actualidad en diferentes percepciones en un momento dado. Estas campos. percepciones del ambiente llegan al agente de forma limitada teniendo así una representación Los problemas generados dentro del contexto de parcial del mismo. Al enfrentarse a esta limitación, un sistema concurrente, como los bloqueos y la deben aplicar su racionalidad para determinar la inanición, a causa de la lucha por los recursos, acción que van a llevar a cabo ante una percepción pueden verse relacionados con las situaciones de dada. Para lograrlo realizan un “mapeo”, el cual conflicto que ocurren entre los componentes de un consiste en seleccionar la acción más apropiada Sistema Multiagentes. También, existe una similitud que puede emprender como respuesta a entre las interacciones y cooperación determinadas secuencias de percepciones. características de los Sistemas Multiagentes, y la forma en la que se establecen mecanismos para Para llevar a cabo toda la construcción física se que los elementos de un sistema concurrente se pueden utilizar diferentes clases de lenguajes de organicen, con el fin de actuar correctamente programación que existe y que la mayoría de los controlando los problemas ya mencionados. ingenieros conocen que son los siguientes: C, C++, Considerando esta correspondencia, se debe tener Lisp, Prolog y Java; lenguajes de comunicación en cuenta la concurrencia como un aspecto a ser para representar interacciones entre los agentes; representado dentro de una metodología de describe el comportamiento y reglas del ambiente; desarrollo de software orientado a agentes. lenguajes para representar conocimiento, usados para describir los modelos internos del mundo y Agentes Inteligentes permitirles “razonar” acerca del mismo; por último Un agente es todo aquello que puede considerarse lenguajes para cuestiones de formalización y que percibe su ambiente mediante sensores y que especificación. Así, el mapeo se puede realizar responde o actúa en tal ambiente por medio de utilizando entre otros, reglas imperativas (Java) o efectores. Un agente racional es una entidad física declarativas (Prolog), métodos derivados de redes (robot) o virtual (software), capaz de actuar de neuronales, o de forma más simple una tabla de manera correcta, lo cual quiere decir, que al correspondencia. obtener una serie de percepciones del entorno en Existen dos tipos de agentes: Los agentes el que se encuentra, y teniendo en cuenta sus cognitivos tienen una base de conocimientos que recursos y conocimientos, el agente selecciona la comprende toda la información y experiencia acción más adecuada para cumplir sus objetivos requeridos para llevar a cabo sus objetivos, y para buscando alcanzar el mejor desempeño. Para el manejo de interacciones con otros agentes y con poder determinar si la acción tomada fue la mejor, el ambiente; también se dice que son intencionales, se debe poder medir el desempeño del agente. La es decir, tienen objetivos y planes explícitos que les medición del desempeño se aplica al como: es el permiten alcanzar sus metas. criterio que sirve para definir qué tan exitoso ha sido un agente. Esta medición debe ser objetiva y Los agentes reactivos no manejan una establecida por los observadores del ambiente para representación del mundo, más bien se basan mejores resultados; lo ideal es realizarla midiendo estrictamente en cuanto perciben por medio de sus el desempeño a largo plazo. sensores, mientras que los cognitivos si tienen una representación interna del ambiente en que se Alguna de las características de un agente es que: encuentran. Otra característica importante que Se encuentra en un ambiente que percibe y marca la diferencia entre los cognitivos y los representa parcialmente y sobre el cual actúa reactivos, es que los cognitivos hacen una autónoma y proactivamente. planeación deliberativa, por medio de la cual siguen Cuenta con un conjunto de tendencias u una serie de pasos para conseguir el objetivo objetivos las cuales trata de optimizar y las deseado. Los reactivos, en cambio, responden ante sus percepciones para actuar, sin seguir ningún combinación de las capacidades de los mismos para plan previo. El ideal es desarrollar agentes que cumplir la tarea común del sistema. sigan un esquema híbrido, que les permita tener un modelo del mundo y a la vez tomen medidas Programación Orientada a Agentes (POA) reactivas, con el fin de no tener demoras en su tiempo de respuesta ante las percepciones. El término “Programación Orientada a Agentes”, Los agentes se han utilizado para manejo de POA, fue introducido por Shoham en 1993. La comercio electrónico, en teoría de direcciones, programación orientada a agentes AOP, por su teoría de juegos y hasta en misiones espaciales sigla en inglés, es un paradigma que se ha venido recientes como la DeepSpace de la NASA en 1998. tratando en algunos ámbitos académicos y principalmente en áreas como la inteligencia Sistemas Multiagentes (SMA) artificial y sistemas distribuidos. La POA se puede Un SMA es un conjunto organizado de agentes que ver como un mejoramiento y una extensión de la interactúan de forma cooperativa para lograr de Programación Orientada a Objetos (POO) la cual a manera colectiva un objetivo global. su vez es un sucesor de la programación estructurada. Los agentes tienen una habilidad social que les permite comunicarse directamente con otros En la POO la entidad principal es el objeto. Un agentes. Esta habilidad hace que entre ellos objeto es sencillamente un tipo abstracto de dato al existan relaciones de interacción y cooperación. que se añaden importantes innovaciones en Una situación de interacción es un conjunto de compartición de código y reutilización. Los comportamientos que resultan del agrupamiento de mecanismos básicos de orientación a objetos son: agentes que deben actuar juntos para lograr sus objetos, mensajes y métodos, clases e instancias y objetivos. herencia. Las interacciones se presentan en términos de: Un objeto es una combinación de atributos (información, estructuras de datos) y sus Compatibilidad de Objetivos: Cuando se correspondientes comportamientos. Los objetos pueden lograr los objetivos de ambos agentes, son entidades pasivas que responden a un control e incompatibles cuando lograr un objetivo externo, sólo reaccionan cuando son invocados por implica no lograr el otro. medio de uno de sus métodos. Los agentes en Relación con los recursos disponibles: Se cambio, son activos y su comportamiento es producen conflictos cuando dos o más agentes autónomo, y de este modo no es directamente requieren el mismo recurso simultáneamente, lo controlado desde el exterior. En otras palabras, los cual se soluciona por medio de técnicas de agentes toman decisiones. Los agentes son coordinación y resolución de conflictos. parecidos a los objetos pero manejan estructuras Capacidades de los agentes en relación con las que les permiten tener representaciones de estados tareas: Existen tareas para las cuales los mentales, compromisos, creencias, y deseos. agentes necesitan ayuda de otros porque sus La POA está motivada por la necesidad que existe capacidades no son suficientes. de manejar arquitecturas abiertas que cambien Una característica muy importante en los SMA es la continuamente y evolucionen para acomodarse a cooperación que se presenta entre los agentes, la nuevos componentes, logrando así satisfacer cual se da cuando al ingresar un nuevo agente al nuevos requerimientos. Un sistema desarrollado sistema el desempeño aumenta diferencialmente. basándose en este paradigma, debe operar sobre Cuando en un SMA hay cooperación, se presentan diferentes plataformas y sin recompilacion, debe ventajas cuantitativas y cualitativas, lo cual quiere ser robusto, autónomo y proactivo. Ejemplos de decir que la tarea a ser realizada se completa en un aplicaciones de la POA se pueden ver en comercio menor tiempo y de una manera mejor. La electrónico, enterprise resource planning, sistemas cooperación tiene tres elementos que son la de control de tráfico aéreo y asistentes personales coordinación, la colaboración y la resolución de digitales, entre otros. conflictos. La POA se encuentra muy relacionada con la La colaboración consiste en hacer una asignación de Ingeniería de software orientada a Agentes (ISOA) pequeñas tareas a cada uno de los agentes, con el fin dados los propósitos de esta. Los propósitos de la de cumplir el objetivo global del sistema. Esta ISOA son crear metodologías y herramientas que permitan el desarrollo a bajo costo y el asignación se debe realizar teniendo en cuenta técnicas mantenimiento de software basado en agentes. por medio de las cuales se distribuyan de manera adecuada las tareas. Gracias a esta asignación, se La aproximación Orientada a agentes promete la presentan interacciones entre los agentes, en las cuales habilidad de construir sistemas flexibles con cada uno desempeña un rol y se produce una comportamientos complejos y sofisticados al combinar componentes modulares (los agentes). Un problema complejo es descompuesto en estructura organizacional de la comunidad de problemas más simples, cuyas interacciones son agentes influyen aspectos de diseño y claramente establecidas. también la organización real. Esta relación entre agentes y subsistemas está muy cerca Roles en proceso de desarrollo de un sistema del enfoque de Tropos. Este rol también debe multiagentes encargarse de asignar los papeles a los Los roles en el proceso de desarrollo de software son agentes. importantes para la especialización y para mejorar la Ingeniero de componentes: Este rol adquiere eficacia en la distribución de las tareas entre los la tarea de especificación de los papeles, miembro del equipo. Como se pudo observar cuando el análisis se dirige al nivel más alto. anteriormente, las metodologías orientadas a agentes Ingeniero de la interacción: Este es un rol tienen varias tareas que no están presentes en nuevo, no está en RUP. Aparece como RUP,1,17 tal es el caso de modelar la inteligencia, consecuencia de la complejidad de la modelar la interacción entre los agentes, entre otros. interacción entre los agentes. Este rol debe Esto trae como consecuencia que dentro de las etapas encargarse de definirla conversación, del proceso de desarrollo aparezcan nuevas tareas y ontologías a usar, normas a ser respetadas, esto a su vez nuevos roles dentro del equipo de etc. La complejidad de esta tarea se explica proyecto o nuevas habilidades que deben tener los en la referencia18. roles propuesto por RUP. Aquí se presentan algunas Ingeniero de conocimiento: Este rol también propuestas para ajustar los roles de las personas para el es nuevo. Aparece como consecuencia de la desarrollo de sistemas multiagentes. Se optó, siempre complejidad del control interno en cada que fuera posible, por modificar las responsabilidades agente y la necesidad de operar con de los roles de RUP y adquirir nuevas tareas flexibilidad. Es responsable de definir las necesarias. Cuando esto no es posible (debido a la habilidades de inferencia de cada agente e naturaleza diferente de las tareas en los roles de RUP y implementar el mecanismo de razonamiento las nuevas necesidades) se proponen nuevos roles. Los acorde con el nivel de roles de RUP considerados que no cambian mucho, no reactividad/proactividad definido. Debe se discutirán. Se ha preferido usar el término papeles cooperar estrechamente con el ingeniero de la en este trabajo para llamar a lo que es llamado también interacción para definir las ontologías a ser roles en las metodologías de agentes, para evitar usadas en el razonamiento, acorde con la confusiones. comunicación. Analista de sistema: Este rol debe extender Integrador de sistema: Puede desaparecer, ya sus tareas para identificar los papeles que la naturalezade su tarea es menos preliminares y asociarlos con los casos del necesaria, por la flexible integración impuesta uso. Esta tarea incluye la identificación por la orientación a agentes. Podría usarse si preliminar del grado de autonomía y la la implementación interna de los agentes actitud reactiva/proactiva. También implica implica todavía complejos y distribuidos que el diagrama de caso de uso pueda subsistemas que utilizan el paradigma modificarse de alguna manera para identificar orientado a objetos u otro (debido a la mezcla claramente qué papel es responsable de cada natural de paradigmas). caso del uso. Ingeniero de prueba: Puede asumir la Arquitecto: Este rol en la etapa de análisis de preparación de una fase de prueba más requisitos puede adquirir la responsabilidad compleja, incluyendo una prueba pos de poner la importancia relativa de cada despliegue (prueba tardía) que garantice que papel, y proponer el orden de las iteraciones el sistema no se va de control. de desarrollo según esta decisión anterior. En Ingeniero de prueba de integración: Este la etapa de Análisis, puede adquirir la papel puede adquirirla responsabilidad de responsabilidad de definir la estructura hacer pruebas de la capacidad de organizacional o la comunidad del agente. colaboración de agentes y la prueba de Esta decisión está muy estrechamente cambios organizacionales. relacionada con la decisión de organización Ingeniero de prueba de agentes: Este rol es de los subsistemas(paquetes, clase más nuevo. Aparece como consecuencia de la importantes, etc.) pero también necesita una naturaleza más compleja de la conducta del calificación adicional en dirección y patrones agente. Es responsable de hacer pruebas de organizacionales humanos (como se sugiere agentes por separado para probar la en la referencia 12).Debe notarse que en la autonomía, reactividad y conducta proactiva. CONCLUSIONES presentan en esta última y que requieren cambios para el manejo de una metodología de desarrollo. La POA ha adquirido una gran importancia Un aspecto a tener en cuenta por ejemplo, está en como un paradigma prometedor, dadas las el caso de la herencia, pues dadas las ventajas que ofrece a los desarrolladores de características de los agentes, no tiene mucho software para modelar sistemas complejos, sentido manejarla tal como se maneja en los representando el mundo real de forma más fácil objetos. Podría existir la posibilidad de un manejo y crear arquitecturas abiertas que se acomoden a de herencia entre agentes llegando a pensar en nuevos requerimientos. Para que la POA sea relacionarla con los algoritmos genéticos. aceptada por completo como una nueva forma de programación en la industria del software, es necesario que esté respaldada por métodos y REFERENCIAS herramientas para su desarrollo, de la misma [1] https://www.cs.us.es/blogs/ontoblogia/2007/05/21/programaci manera que ocurre con la Programación on-orientada-a-agentes-y-conocimiento-comun/ Orientada a Objetos. [2] http://www.lsi.upc.edu/~bejar/ecsdi/Teoria/ECSDI03a- En el diseño de metodologías para desarrollo de AOSE.pdf sistemas basados en agentes, es necesario tener en cuenta todas las características inherentes a [3] http://agentesjade.blogspot.com/2010/01/programacion- orientada-agentes.html los Agentes y Sistemas Multiagentes, lo cual permite aprovechar al máximo las ventajas que [4] https://es.scribd.com/document/57972613/Programacion- Orientada-a-Agentes puede brindar el comportamiento, interacciones y relaciones que los caracterizan. El aspecto de [5] pegasus.javeriana.edu.co/~poa/Documentos/Articulo_J4.doc los Sistemas Multiagentes como estructuras [6] www.fdi.ucm.es/profesor/jpavon/doctorado/sma.pdf organizacionales y como Organizaciones Sociales, es útil para modelar diferentes aspectos [7] webdiis.unizar.es/asignaturas/ISBC/lecciones/9.Agentes.pdf del mundo real; en las metodologías en [8] Rusell N., “Inteligencia Artificial: Un enfoque moderno”, desarrollo se están creando maneras de Prentice Hall, 1996. representarlos y modelarlos para un sistema basado en la POA. [9] Ferber J., "Multiagent Systems: An Introduction to Distributed Artificial Intelligence". Addison – Wesley. 1999. La forma de interactuar de manera concurrente que poseen los agentes en un Sistema [10] http://www.science.unitn.it/tropos/, “Tropos – Multiagentes, crea una relación entre la POA y Requirement-Driven Development for Agent Software”. Universidad de Trento – Última consulta 23 de Abril de 2002. la programación concurrente, campo en el cual debe ser ampliamente utilizada, para aprovechar sus características y la facilidad que brinda para representar los componentes concurrentes de un sistema. Todas las necesidades que se tienen que manejar para obtener un sistema concurrente, como lo son los problemas de bloqueo y la comunicación entre sus integrantes, son aspectos a ser tenidos en cuenta para la creación de metodologías de desarrollo de sistemas basados en agentes. Al manejar un enfoque orientado a agentes se adquieren todas las ventajas que estos tienen sobre los objetos. Cabe anotar que no siempre se puede modelar un sistema en términos de agentes. En ocasiones es necesario utilizar objetos para que sean invocados y controlados por los agentes, con el fin de cumplir con su objetivo. El paradigma de la POA puede funcionar como una extensión de la POO, teniendo en cuenta ciertas limitaciones que se