Está en la página 1de 5

Programación Orientada a Agentes

Julissa Ventura Miranda


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

También podría gustarte