Vous êtes sur la page 1sur 9

Agentes

http://www.monografias.com/trabajos12/inteartf/inteartf2.shtml
http://www.mastermagazine.info/articulo/3355.php
http://www.wshoy.sidar.org/index.php?2007/05/08/38-los-trabajadores-de-la-web-
semantica-agentes-agentes-inteligentes-y-agentes-semanticos
http://www.wshoy.sidar.org/index.php?2007/05/08/38-los-trabajadores-de-la-web-
semantica-agentes-agentes-inteligentes-y-agentes-semanticos
http://cibernetica.wordpress.com/2008/09/03/cooperacion-entre-agentes-inteligentes/

En términos generales, un agente se considera como un sistema de software capaz de


percibir la información sobre el ambiente, comunicarse con otros agentes por medio de
la transmisión de mensajes y efectuar las acciones para cambiar este ambiente según sus
metas, planes y intenciones. El núcleo del concepto de agencia es la descomposición. En
vez de construir sistemas complejos con comunicaciones débiles entre sus componentes,
el concepto de agentes nos permite construir sistemas de componentes relativamente
sencillos pero que interactúan entre si de una manera compleja.

Entre las aplicaciones en las cuales se aplica la tecnología de agentes se cabe mencionar
las siguientes:

Administración de flujo de trabajo (workflow)


Administración de redes
Recuperación de información
Comercio electrónico
Empresas Virtuales
Educación virtual,
Bibliotecas virtuales
Configuración y Planificación
Control del trafico aéreo
Re-ingeniería de procesos de negocio
Minería de datos

Sin duda en los inicios del siglo XXI la tecnología de Agentes vive en gran parte de las
aplicaciones que hoy en día utilizamos, aún sin saberlo

Como sucede con toda nueva rama del conocimiento, existe bastante confusión en
cuanto al vocabulario de las tecnologías semánticas. En este artículo me centro en
explicar qué se entiende por agente, agente inteligente y agente semántico, términos que
aparecen casi siempre que se habla de la Web semántica. A fin de resaltar las
semejanzas y diferencias entre ellos, usaré definiciones y ejemplos.

Si consultamos el diccionario de la Real Academia Española, veremos que agente


significa "Persona que obra con poder de otra". Si actualizamos un poco la definición
("Programa o máquina que obra con poder de una persona o de otro programa o
máquina"), tendremos una primera idea de lo que se entiende por agente en ingeniería.

En general, se acepta que un agente es cualquier sistema capaz de percibir cambios en


su entorno, de representar de algún modo la información sobre el estado actual de sus
objetivos y de actuar sobre su entorno basándose en éstos y en experiencias pasadas.
Cuando se consideran entornos virtuales (la Web, intranets, etc.), se habla de agentes de
software; en entornos físicos, los agentes pueden ser animales, personas, robots o
autómatas. Por ejemplo, el vehículo Mars Pathfinder –que recorrió la aherrumbrada
superficie de Marte durante varios meses de 1997– era un agente en un entorno físico
bastante agresivo para la vida humana.

Un agente es un sistema de software capaz de actuar autónoma y flexiblemente en un


entorno cambiante. Para Gerhard Weiss, un agente es una entidad computacional que
percibe y actúa autónomamente en su entorno. Ambas definiciones coinciden en que los
agentes gozan de cierta libertad de actuación en su entorno; es decir, no se limitan a
efectuar ciertas tareas siempre de la misma forma, sino que tienen sus propias “ideas”
sobre cómo alcanzar sus objetivos

Según Jeffrey Bradshaw, las principales características de los agentes son éstas (no
todas son obligatorias y algunas pueden darse en mayor o menor grado):

• Persistencia: El código de un agente se ejecuta continuamente, no cuando el


usuario lo decide, y decide por sí mismo cuando deje ejecutar alguna acción. Los
agentes siempre permanecen activos: se ejecutan en un bucle infinito y observan
su entorno, actualizan su estado y determinan qué acciones realizar.
• Autonomía: Un agente puede tomar decisiones sin la intervención humana o de
otros agentes. Es decir, para cumplir sus objetivos, un agente controla sus
propias acciones.
• Reactividad: Un agente es capaz de percibir su entorno y mantener un vínculo
constante con él, de modo que puede responder adecuadamente a los cambios.
Los agentes más reactivos tienen en cuenta la posibilidad de que se produzcan
fallos o de que las cosas no vayan como se esperaba.
• Proactividad: Un agente no actúa dirigido solamente por los sucesos que se
producen en su entorno, sino que también toma iniciativas para lograr sus
objetivos. Es decir, los agentes reconocen y utilizan las oportunidades que se les
presentan. Las iniciativas pueden proceder de experiencias pasadas, pues los
agentes aprenden del pasado.
• Habilidad social: Un agente constituye una entidad social integrada en una
sociedad, en la cual hay tareas, recursos y papeles que se distribuyen entre los
agentes. Algunos objetivos sólo se pueden conseguir mediante la colaboración
con otros agentes o con humanos.
Dar una clasificación completa de los agentes es tarea compleja; pues cada autor
suele proponer su propia clasificación, a menudo tan discutible como cualquier otra.
Los agentes pueden clasificarse según su movilidad en:

• Estáticos
• Dinámicos

Según las tareas que desempeñan, Hyacinth S. Nwana clasifica así los agentes:

• Agentes colaboradores.
• Agentes de interfaz.
• Agentes móviles.
• Agentes de información.
• Agentes reactivos.
• Agentes híbridos.
• Sistemas heterogéneos de agentes.

Si consideramos como criterio de clasificación las tareas que desempeñan los


agentes, existen muchos tipos de agentes. Los más conocidos están vinculados al
comercio electrónico:

• Los agentes de compra comparativa se encargan de localizar mercancías al


mejor precio posible.
• Los agentes de subasta permiten a los usuarios pujar por una mercancía o bien.
• Los agentes de negociación automatizan los procesos de negociación habituales
en las transacciones comerciales.

En general, en casi cualquier dominio pueden usarse agentes. Por ejemplo, el


proyecto Guardian desarrolló un agente inteligente para monitorizar a los pacientes de
las unidades de cuidados intensivos. Este agente permite, entre otras cosas, controlar
constantemente el estado de los pacientes, definir los tratamientos y cuidados necesarios
a corto y largo plazo, así como diagnosticar posibles enfermedades y complicaciones.
Debido a lo delicado de su tarea, el agente reacciona rápidamente a cualquier
modificación del estado del paciente.

¿Todos los programas son también agentes?

Para contestar a la pregunta, consideremos un programa conversor de euros a


francos suizos. El programa funciona así: cada vez que un usuario ejecuta el programa,
éste se conecta por Internet a los mercados de divisas, extrae el tipo de cambio que
fluctúa constantemente y lo presenta por pantalla. El programa es, en cierto sentido,
consciente de su entorno porque devuelve una salida (un tipo de cambio) tras recibir una
entrada (la ejecución del programa) y porque se conecta a los mercados de divisas. Sin
embargo, no es un agente: su salida actual no afecta a sus futuras salidas; dicho de otro
modo, no tiene “memoria” de sus actos ni puede aprender de ellos. Además, el
programa carece de persistencia: sólo permanece activo un tiempo muy breve; una vez
que devuelve el tipo de cambio, se vuelve inactivo. Vemos, en definitiva, que no todos
los programas son agentes.

Como los agentes son programas, ¿debemos concluir que los programas son
también agentes? Para contestar a la pregunta, consideremos un programa conversor de
euros a francos suizos. El programa funciona así: cada vez que un usuario ejecuta el
programa, éste se conecta por Internet a los mercados de divisas, extrae el tipo de
cambio que fluctúa constantemente y lo presenta por pantalla. El programa es, en cierto
sentido, consciente de su entorno porque devuelve una salida (un tipo de cambio) tras
recibir una entrada (la ejecución del programa) y porque se conecta a los mercados de
divisas. Sin embargo, no es un agente: su salida actual no afecta a sus futuras salidas;
dicho de otro modo, no tiene “memoria” de sus actos ni puede aprender de ellos.
Además, el programa carece de persistencia: sólo permanece activo un tiempo muy
breve; una vez que devuelve el tipo de cambio, se vuelve inactivo. Vemos, en definitiva,
que no todos los programas son agentes.

Muchas personas piensan que los agentes no son más que objetos con algunas
funciones añadidas; según ellos "un agente es un objeto que realiza alguna actividad.
Otros van más lejos: afirman que la única diferencia entre ellos radica en que agente es
una palabra de moda, como en su día lo fue "objeto". Existen ciertas semejanzas entre
objetos y agentes: en primer lugar, se caracterizan por su estado y por su
comportamiento; en segundo, se comunican entre sí mediante mensajes.

Con todo, también hay diferencias entre unos y otros:

Los objetos no tienen ningún control sobre sus acciones, que están determinadas
desde su creación; por el contrario, los agentes las controlan para cumplir sus objetivos.
Éstos pueden tener un comportamiento impredecible. Por ejemplo, si se pide a un
agente que compre algún CD barato en alguna tienda, cualquier resultado es posible: el
agente podría volver con Power, Corruption and Lies de New Order o con un CD de
cantos hindúes del siglo V antes de Cristo, o sin nada. A diferencia de los objetos, los
agentes pueden decir "no" (es más, algunos gozan con eso).

Los agentes gozan de más autonomía y flexibilidad que los objetos, tan esclavos
ellos. Como las clases definen los métodos y atributos como públicos o privados, los
objetos (instancias de las clases) no pueden cambiar la visibilidad de métodos y
atributos. Si el método dispararFlecha de un objeto arcoOlímpico es público, el objeto
no puede impedir que otros objetos lo usen. Un agente, en cambio, sí podría impedir
que otros agentes usaran su dispararFlecha (volviéndolo privado, p. ej.), siempre que
eso favoreciera sus objetivos.

Tal como se mencionó antes, los agentes siempre están activos (vigilan su entorno,
actualizan su estado y determinan qué acciones son apropiadas); los objetos vienen a ser
muertos a tiempo casi completo, porque sólo “viven” (están activos) cuando sus
métodos son llamados por otros objetos.

Los objetos jamás se equivocan (en todo caso, se equivocan quienes los
programan), mientras que los agentes puede tomar decisiones equivocadas e incluso
aprender de sus errores pasados. Si un objeto tiene un método calcularIVA que aplica un
porcentaje equivocado (14% en lugar de 16%, verbigracia), el objeto nunca aprenderá
nada de ese error, pues ya nació mejor dicho, se instanció con él.

Agentes Inteligentes

La creación más reciente en IA son los agentes inteligentes, programas de


computadora que automáticamente revisan enormes cantidades de datos y seleccionan y
entregan la información más adecuada para el usuario, de acuerdo con requisitos
contextuales o específicos.

Los agentes inteligentes son capaces de controlar sus acciones y decisiones para
alcanzar unos objetivos basándose en su percepción del entorno. Habita en un entorno
dinámico y complejo, en el que percibe y actúa de manera autónoma, alcanzando el
conjunto de objetivos para el que fue diseñado. La aplicación más importante de los
agentes inteligentes se encuentra en la WEB.

El propósito principal de los agentes inteligentes es realizar sus tareas


significativas más rápido, con más frecuencia y de manera más efectiva, que la gente.
Los expertos dicen que pronto los agentes inteligentes vincularán automáticamente su
computadora con sitios favoritos, le avisarán cuando éstos se hayan actualizado y
adecuarán páginas específicas a sus preferencias.

Suele usarse el término agente inteligente para referirse a agentes dotados de


cierta inteligencia artificial y que, por tanto, gozan de un alto grado de autonomía,
reactividad, proactividad y habilidad social. Según Barbara Hayes Roth, los agentes
inteligentes realizan continuamente tres funciones:
• Perciben las condiciones cambiantes del entorno.
• actúan para modificar las condiciones del entorno.
• Razonan para interpretar percepciones, resolver problemas, extraer inferencias y
determinar acciones.

Algunas personas usan agente inteligente como sinónimo de agente, cuando en


realidad un agente no tiene por qué tener inteligencia (piénsese en un cliente de correo,
por ejemplo). Otras reservan agente inteligente para los agentes que contienen
planificaciones, calendarios, reglas, etc. Se suele emplear el término bot (abreviatura de
robot) para los agentes que, siguiendo reglas estrictas e invariables, realizan tareas
repetitivas: buscar productos, rellenar cuestionarios, mostrar noticias sobre un
determinado asunto. Los bots usados por los buscadores de información como Google,
Yahoo, MSN Search, permiten construir sus bases de datos y se denominan arañas.

Los agentes inteligentes suelen relacionarse con los sistemas expertos. Un sistema
experto es un programa que intenta imitar el comportamiento de un experto en un
dominio concreto. Por ejemplo, un sistema experto en medicina podría, a partir de los
síntomas del enfermo, emitir diagnósticos. Los agentes difieren de los sistemas expertos
en dos aspectos esenciales:

• Los sistemas expertos no interaccionan con el entorno.


• Los agentes suelen desarrollarse con la intención de colaborar con otros
agentes, mientras que los sistemas expertos no colaboran ni intercambian
información entre ellos.

Multiagente

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)

Los sistemas multiagente son sistemas distribuidos de software formados por un


conjunto de agentes autónomos (nodos) que trabajan juntos para resolver problemas.
Asignándose tareas unos a otros y colaborando, los agentes pueden solucionar
problemas que serían irresolubles para un agente aislado. En un sistema multiagente no
hay un control global del sistema ni un lugar donde esté toda la información. La
inteligencia de un sistema multiagente puede obtenerse de dos maneras. En primer
lugar, mediante el uso de agentes inteligentes para el sistema. En segundo lugar, usando
agentes reactivos (aquellos que reaccionan siguiendo el esquema conductista: estímulo-
respuesta). En este caso, la inteligencia colectiva del sistema es un fenómeno
emergente.

Las enormes posibilidades de los sistemas multiagente se vislumbran en Robocup


Rescue (puede encontrarlo en http://www.rescuesystem.org/robocuprescue/), un sistema
multiagente que simula la respuesta de los equipos de rescate a cualquier desastre
natural (un terremoto, por ejemplo). La simulación consiste en la reconstrucción
fotográfica de un desastre y, luego, en manejar un conjunto de agentes inteligentes (que
hacen el papel de víctimas, policías, bomberos, etc.) en ese entorno. El objetivo de
Robocup Rescue consiste, por un lado, en reducir al mínimo los daños en el mundo
virtual que sufre el desastre; y, por otro, en sacar de la simulación conclusiones que
puedan aplicarse en el mundo real a la coordinación de equipos de rescate. La
complejidad de Robocup Rescue es ingente, por cuanto maneja situaciones como
rescatar personas atrapadas en edificios en ruinas, en llamas o inundados. RoboCup
Rescue es también una competición: los participantes construyen sus propios agentes y
compiten por reducir al mínimo los efectos de los desastres naturales.

Existen muchas plataformas para crear agentes e interconectarlos: IBM Aglets, ZEUS,
JADE (Java Agent Development Framework), ABLE, MadKit, JATLite (Java Agent
Template Lite), Grasshopper, AgentBuilder, FIPA-OS, Concordia, Gossip, FarGo,
Voyager. Si usted no tiene experiencia en agentes y desea probar alguna plataforma, le
recomiendo empezar con AgentBuilder
(http://www.agentbuilder.com/Documentation/product.html). Es un conjunto integrado
de herramientas que permite desarrollar agentes inteligentes y aplicaciones basadas en
ellos, sin necesidad de programar (la versión PRO permite desarrollar también
aplicaciones multiagente). Recomiendo esta solución comercial porque me parece una
de las más sencillas y rápidas para quien carezca de experiencia en el desarrollo de
agentes. JADE y ABLE son más potentes que AgentBuilder, pero también son más
complejas de usar.

ZEUS (http://labs.bt.com/projects/agents/zeus/) es una herramienta para desarrollar


sistemas multiagente. Es una herramienta educativa y no necesita conocimientos de
programación. Tanto las ontologías como los agentes se crean mediante asistentes
visuales, como sucede con AgentBuilder. Al final del proceso de creación de los
agentes, ZEUS genera código fuente escrito en Java. Como Java es un lenguaje
multiplataforma (véase, por ejemplo, http://www.javahispano.org/articles.article.action?
id=55), el código compilado puede ejecutarse en las plataformas más habituales (una
plataforma es una combinación de hardware y software que permite ejecutar
aplicaciones; por ejemplo, Microsoft Windows/Intel x86 es la plataforma más común).
En consecuencia, con ZEUS pueden construirse sistemas multiagente donde un agente
"viva" (perdón, resida) en un PC con Linux, otro en un Macinstosh con Mac OS X, un
tercero en una estación de trabajo UNIX…
Los agentes semánticos son agentes que usan tecnologías de la Web semántica
(RDF/RDFS, OWL, ontologías) para cumplir sus objetivos. Puede obtener una
descripción de tales tecnologías en http://www.javahispano.org/tutorials.item.action?
id=55. Debido a que todavía no existe una Web semántica, no hay agentes semánticos
que puedan aprovechar sus posibilidades. Existen, sin embargo, agentes semánticos que
operan sobre dominios muy específicos (intranets de empresas, por ejemplo); y también
hay algunos agentes semánticos que actúan como buscadores de información o como
asistentes personales. Por ejemplo, el navegador Amblit Navigator
(http://www.amblit.com/products/AmblitNavigator.html) incluye un asistente
(Intelligent Personal Agent) al que se le puede enseñar qué desea el usuario y cuándo lo
desea.

Este agente admite preguntas como las siguientes: ¿Cuál es la cotización de Endesa?
¿Qué tiempo hará en París la próxima semana? ¿Cuál es el número de teléfono de María
Senso Huertas? También se le pueden dar órdenes del tipo "Búscame un mapa de
Hannover" o "Averigua dónde puedo encontrar la película Les 400 coups". Para
entender miles de sentencias en lenguaje natural, el agente semántico de Amblit se
apoya en una ontología y en un software de comprensión del lenguaje natural. Este
software "traduce" las preguntas u ordenes en texto libre a conceptos de la ontología
(puede encontrar más información sobre ontologías en
http://www.wshoy.sidar.org/index.php?2005/12/09/30-ontologias-que-son-y-para-que-
sirven).

Para mostrar las posibilidades de los agentes semánticos, considero el siguiente


ejemplo: Heliodoro Gómez ha puesto en marcha una tienda de lámparas en su barrio. Se
acerca la hora de hacer el primer pago fraccionado del IRPF y no sabé qué impreso usar
ni cómo calcular el rendimiento neto empresarial. Preocupado por hacer mal las cosas y
recibir luego una simpática carta de Hacienda, Heliodoro ha decidido usar un agente
semántico para encontrar un asesor contable y fiscal. Para ello, se conecta a la Web
semántica y elige un agente personal que parece fiable.

Escribe en un cuadro de texto "Busco asesor contable y fiscal (cerca de la calle


Arboleda, en Soria). Quiero que sea barato y bueno", y el agente se pone en marcha.
Primero obtiene una lista de todos los asesores que están a menos de dos kilómetros de
la calle Arboleda; luego, para comprobar la calidad de cada uno, investiga si tienen
reclamaciones de clientes, quejas ante los colegios profesionales o denuncias. A
continuación, busca los que tienen tarifas bajas. Finalmente, selecciona a dos asesores y
se los propone a Heliodoro.

A éste no le gusta ninguno de los dos. Uno no es todo lo barato que Heliodoro desearía,
y el otro no puede atenderle hasta dentro de dos semanas (está de viaje de novios).
Decepcionado con los resultados, Heliodoro escribe a su agente semántico: "Mira otras
opciones". El agente repite el trabajo que había hecho, pero no encuentra más asesores
que cumplan las condiciones del usuario. Entonces prepara una lista de los asesores
cercanos a la calle Arboleda y de buena reputación, independientemente de que sean
caros o baratos; acto seguido, contacta con los agentes semánticos de esos asesores para
intentar negociar una reducción de las tarifas que aplican. Sólo uno acepta la reducción.
Tras una rápida negociación entre agentes, la reducción se fija en un 20% (con la
condición de que el cliente pagará cada trimestre de asesoría por anticipado y al
contado).

El agente muestra a Heliodoro los datos del asesor elegido y la tarifa que ha quedado
establecida. Heliodoro desconfía de la tarifa, porque le parece demasiado barata, y le
pregunta a su agente: ¿Cómo has negociado la tarifa? ¿Cómo sabes que ese asesor es
bueno? El agente, dotado de paciencia infinita, le proporciona pruebas de todo (para
saber más sobre estas pruebas, puede consultar http://www.wshoy.sidar.org/index.php?
2007/01/30/37-la-web-semantica-metadatos-ontologias-logica-y-confianza). Contento
por ahorrarse un dinerillo, Heliodoro cierra su agente personal y se levanta del
ordenador. Mientras se prepara un café, piensa en la Web semántica: "Es buena idea
esto de la nueva Web. ¡Y pensar que hace diez años parecía ciencia-ficción! Hasta me
están cayendo simpáticos los bichos esos, los agentes".

Vous aimerez peut-être aussi