Enfoque basado en agentes

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 31 de octubre de 2018; las comprobaciones requieren 7 ediciones .

Un enfoque de programación orientado a agentes (en adelante, AOP) es una especie de representación de programa o un paradigma de programación en el que los conceptos fundamentales son los conceptos de un agente y su comportamiento mental , dependiendo del entorno en el que se encuentre. El concepto fue propuesto por Shochem ( Ing.  Yoav Shoham ) en 1990 [ 1] . Definición de paradigma dada por el autor: [2]

Este nuevo paradigma de programación se llama razonablemente programación racional. Así como la programación orientada a objetos ha cambiado el paradigma de escribir procedimientos a crear objetos, la programación racional ha cambiado el paradigma de crear objetos de información a crear agentes motivados.

Un agente es todo lo que puede considerarse que percibe su entorno con la ayuda de sensores y actúa sobre este entorno con la ayuda de actuadores . [3]

Significado del término "agente"

Shochem, al presentar el enfoque orientado al agente como un nuevo paradigma, analiza con suficiente detalle en qué sentido se usa la palabra agente en él . El hecho es que esta palabra puede usarse en varios sentidos relacionados. Y aunque Shochem entiende a un agente software como un agente , se basa en la teoría de la inteligencia artificial y parte del concepto de agente inteligente , que ya existía con anterioridad. Pero al darse cuenta de que este concepto es bastante vago, se fija el objetivo de transformarlo para una aplicación más formal en la programación, proponiendo un marco AOP especial . Como resultado, el concepto de agente, en contraste con un objeto simple , está dotado de una serie de construcciones mentales, como creencias, deberes y habilidades. Por lo tanto, aparecerán varias categorías mentales en el lenguaje de programación y la semántica de la programación estará conectada con la semántica de las construcciones mentales. [una]

Conceptos relacionados

Un objeto  La esencia del programa de una estructura dada y mecanismos específicos para interactuar con otros objetos a través del paso de mensajes. Los mensajes se forman y envían en respuesta a los mensajes entrantes. Los mensajes están formados por procedimientos basados ​​en datos. Actor Esencia de software de la estructura dada y mecanismos de interacción. Agente Una entidad de software para realizar tareas asignadas. Tiene comportamiento , a saber: interactúa con un entorno externo complejo y en desarrollo dinámico que puede ser modificado o ser modificado por otros agentes dependiendo de condiciones específicas. La interacción implica [4] :

Según el grado de libertad del entorno, que implica la presencia de un tipo de agente apropiado en él, los entornos se dividen en [5] :

Cerrado La última descripción determinista o probabilística de todo el entorno, que el agente conoce a priori o a través de la exploración . abierto La descripción final determinista o probabilística del área local del entorno en el que se encuentra el agente y que le es conocida a priori o mediante investigación. transformable Entornos en desarrollo dinámico, cuya estructura en desarrollo es un agente.

Relación entre AOP y OOP

El enfoque orientado al agente es un caso especial (especialización) de la programación orientada a objetos (POO). En OOP, un proceso computacional se entiende de manera bastante amplia como un sistema ensamblado a partir de objetos que interactúan entre sí a través de mensajes . AOP especializa estos conceptos al establecer un estado (llamado estado mental) de objetos (llamados agentes) formados por componentes tales como creencias (incluidas creencias sobre el mundo, sobre uno mismo y sobre los demás), habilidades y decisiones. , cada uno de los cuales tiene una sintaxis específica. Además, se imponen varias restricciones al estado mental del agente. La computación consiste en informar a los agentes, cumplir con sus requisitos, cumplir con sus sugerencias, aceptar, rechazar, competir y ayudarse mutuamente. [una]

Programación orientada a objetos POA
Unidad básica un objeto agente
Parámetros que determinan el estado de la unidad principal ilimitado creencias, compromisos, habilidades, elecciones....
Proceso de cálculo métodos de llegada y respuesta de mensajes métodos de llegada y respuesta de mensajes
tipos de mensajes ilimitado información, petición, oferta, promesa, negativa….
Restricciones del método No honestidad, coherencia....

La presencia de un mecanismo de fijación de objetivos en un agente proporciona un nivel de autonomía fundamentalmente nuevo. Un agente no sigue necesariamente las órdenes de ningún otro agente o usuario, simplemente depende de las condiciones del entorno, incluidos los objetivos e intenciones de otros agentes. A diferencia de un objeto, un agente puede asumir ciertas obligaciones o, por el contrario, negarse a realizar algún trabajo, motivando esto por falta de competencia, estar ocupado con otra tarea, etc. Al mismo tiempo, un agente puede realizar acciones como generar, supresión y sustitución de otros agentes, activación de funciones (tanto propias como de otros agentes), activación de un escenario de actividad, memorización del estado actual de otros agentes, etc. [6] .

De la tarea a la implementación

Causas

Razones para el surgimiento de un enfoque basado en agentes:

  1. la necesidad de superar los límites de los entornos operativos;
  2. eliminación de la heterogeneidad de los modelos de objetos causada por el hecho de que las clases y los objetos construidos en diferentes entornos de herramientas tienen ciertas diferencias.

Planteamiento del problema

En general, un sistema AOP debe incluir los siguientes componentes básicos: [7] [8]

Las principales propiedades que deben tener los agentes se consideran :

  1. Comportamiento activo, constante intercambio de información “dentro” del agente y entre el agente y el entorno;
  2. Comunicación: intercambio de datos con el entorno externo;
  3. Percepción del entorno: la presencia de "medios" especiales de percepción del entorno del funcionamiento del agente;
  4. La movilidad es el movimiento de un agente dentro de otro software y entornos y/o componentes físicos.

Implementaciones

Las arquitecturas de objetos distribuidos ( CORBA , DCOM , Java RMI , servicios WEB ), que tienen muchas de las propiedades enumeradas, tienen las siguientes desventajas:

  1. la necesidad de recompilar códigos de programa al realizar cambios en objetos e interfaces ;
  2. la imposibilidad de adaptación dinámica del comportamiento de los objetos del programa en función de los estados y el comportamiento del entorno;
  3. imposibilidad de trabajar explícitamente con modelos de conocimiento ;

El entorno de objetos distribuidos de JADE (basado en Java RMI, Java CORBA IDL, Java Serialization y Java Reflection API) otorga a los agentes de Java las siguientes propiedades:

  1. Autonomía, la capacidad de realizar acciones por sí mismo: el agente sigue una lista de comportamientos que se pueden reponer de forma asíncrona, es decir, tanto en el modo de espera como en el modo "ocupado-trabajando".
  2. Sostenibilidad: al no tener efectos secundarios después de cada comportamiento, tiene la capacidad de retroceder.
  3. Comportamiento activo: es que en caso de falla se realizan intentos cíclicos para ejecutar el actual, para luego pasar a la siguiente acción del comportamiento. Durante la ejecución del comportamiento, el agente está ocupado, sin interactuar con el entorno. Una vez que se completa el comportamiento actual, el agente pasa al siguiente en la lista y, si no hay una lista, espera a que aparezca una. El objeto, por otro lado, no tiene descendencia en caso de éxito, y en caso de falla, abandona la tarea.
  4. Movilidad: la capacidad de transferir un agente a otro contenedor . Esta propiedad surge de la ausencia de un efecto secundario después de la ejecución de cada comportamiento .

Estructura del agente

Estructuralmente, el agente se puede representar de la siguiente manera :

Agente | |->Recursos | |->Objetos | |->funciones | |->datos

Estructura del comportamiento

Ejemplos

Un ejemplo típico de un enfoque orientado a agentes son los programas especiales que imitan las acciones de los jugadores en los juegos de computadora. Un nombre común para este tipo de programas es bots . Sin embargo, el uso de bots no se limita a los juegos de ordenador . Se pueden encontrar como un elemento del programa en chats y foros que juegan el papel de "interlocutor" y apoyan "discusiones". Sin embargo, algunos bots no solo cumplen el papel de imitadores en el proceso de comunicación o juegos, sino que se utilizan para editar información textual (incluida Wikipedia), establecer conexiones de red, moderar recursos, etc.

Echemos un vistazo al área temática de los libreros, que ilustrará los pasos necesarios para crear aplicaciones basadas en agentes.

Cada agente de compra recibe el título del libro que va a comprar como argumento de línea de comando y consulta periódicamente a todos los agentes de venta conocidos para realizar una solicitud de compra. Una vez recibida la oferta, el agente comprador la confirma y envía el pedido. Si más de un agente de venta proporciona el libro, el comprador elige la mejor oferta (mejor precio). Habiendo comprado el libro requerido, el agente de compras finaliza el trabajo. Cada agente vendedor tiene una interfaz mínima a través de la cual el usuario puede agregar nuevos títulos (y sus precios) al catálogo local de libros a la venta. Los agentes de venta están esperando solicitudes de los agentes de compra. Cuando reciben una solicitud de un libro, verifican si el libro está en su catálogo. Si es así, responden con una oferta con un precio. De lo contrario, se niegan. Cuando reciben una orden de compra, la procesan y eliminan el libro solicitado de su catálogo.

jade

Para crear un agente en JADE, basta con definir su método de inicialización:

importar jade.core.Agente ; public class BookBuyerAgent extends Agent { protected void setup () { // Imprime un mensaje de bienvenida System . fuera _ println ( " ¡ Hola ! Comprador - agente " + getAID (). getNombre () + " está listo . " ); } }

El trabajo real que tiene que hacer un agente generalmente se realiza dentro del "comportamiento del agente". Un comportamiento es una tarea que un agente puede realizar.

Un agente puede ejecutar múltiples comportamientos al mismo tiempo. Sin embargo, es importante señalar que la programación de varias conductas en un agente no es proactiva, sino cooperativa. Esto significa que cuando se programa la ejecución de un comportamiento, se llama a su método action()y se ejecuta hasta que se completa. Por lo tanto, es el programador quien determina cuándo el agente pasa de ejecutar un comportamiento determinado a ejecutar el siguiente.

Dado el mecanismo de programación descrito, es importante enfatizar que un comportamiento como el que se muestra a continuación evita que se ejecute cualquier otro comportamiento porque su action()método nunca se completa.

public class OverbearingBehavior extiende el comportamiento { public void action () { while ( true ) { // hacer algo } } public boolean hecho () { return true ; } }

Notas

  1. 1 2 3 Shoham Yoav. Programación orientada a agentes  :  Informe técnico STAN-CS-90-1335. - Departamento de Ciencias de la Computación, Universidad de Stanford , 1990.
  2. Shoham Yoav. Sistemas multiagente: fundamentos algorítmicos, teóricos de juegos y lógicos = Inteligencia artificial: un  enfoque moderno . - Prensa de la Universidad de Cambridge, 2009. - 504 p. — ISBN 9780521899437 .  (Consulta: 1 de junio de 2010)
  3. Stuart Russel, Peter Norvig. Inteligencia artificial: un enfoque moderno = Inteligencia artificial: un enfoque moderno . - el segundo. — M .: Williams . — 1407 pág. — ISBN 5-8459-0887-6 .
  4. B. Hayes-Roth
  5. citado por D.A. Pospelov Archivado el 14 de enero de 2012.
  6. Tarasov V. B. Agentes, sistemas multiagente, comunidades virtuales: una dirección estratégica en informática e inteligencia artificial  // Noticias de inteligencia artificial: Sáb. - 1998. - No. 2 . - S. 5-63 . Archivado desde el original el 14 de enero de 2012. (Consulta: 25 de mayo de 2010)  
  7. Shoham Yoav. Programación orientada a agentes  (inglés)  // Inteligencia artificial. - 1993. - No. 60(1) . - Pág. 51-92 . Archivado desde el original el 13 de enero de 2012.  (Consulta: 25 de mayo de 2010)
  8. Tarasov V. B. De los sistemas multiagente a las organizaciones inteligentes: filosofía, psicología, informática . - M. : Editorial URSS, 2002. - S. 352 . — ISBN 5-8360-0330-0 .

Véase también

Literatura