Articulo de referencia

Lenguaje de programación de agentes GOAL

GOAL es un lenguaje de programación para agentes cognitivos . Los agentes GOAL basan sus decisiones en sus creencias y objetivos. El lenguaje proporciona los componentes básicos...

GOAL es un lenguaje de programación para agentes cognitivos . Los agentes GOAL basan sus decisiones en sus creencias y objetivos. El lenguaje proporciona los componentes básicos para diseñar e implementar agentes cognitivos mediante la programación de estructuras que permiten y facilitan la manipulación de las creencias y objetivos de un agente, así como la estructuración de su toma de decisiones . El lenguaje ofrece un marco de programación intuitivo basado en el sentido común o el razonamiento práctico .

Descripción general

Las principales características de GOAL incluyen:

  • Creencias declarativas : Los agentes utilizan un lenguaje simbólico y lógico para representar la información que poseen, así como sus creencias o conocimientos sobre el entorno en el que actúan para alcanzar sus objetivos. Este lenguaje de representación del conocimiento no está predefinido por GOAL, sino que, en principio, puede variar según las necesidades del programador.
  • Objetivos declarativos : Los agentes pueden tener múltiples objetivos que especifican lo que desean lograr en algún momento, ya sea en un futuro cercano o lejano. Los objetivos declarativos especifican un estado del entorno que el agente desea establecer, pero no especifican acciones ni procedimientos para alcanzar dicho estado.
  • Estrategia de compromiso ciego : Los agentes se comprometen con sus objetivos y solo los abandonan cuando los han alcanzado. Esta estrategia, denominada estrategia de compromiso ciego en la literatura, es la estrategia predeterminada utilizada por los agentes GOAL. Se supone que los agentes cognitivos no tienen objetivos que consideren ya alcanzados, una restricción incorporada en los agentes GOAL al abandonar un objetivo una vez que se ha logrado por completo .
  • Selección de acciones basada en reglas : Los agentes utilizan las llamadas reglas de acción para seleccionar acciones, según sus creencias y objetivos. Dichas reglas pueden ser poco específicas en la elección de la acción, ya que se pueden realizar múltiples acciones simultáneamente, dadas las reglas de acción del agente. En ese caso, un agente GOAL seleccionará una acción habilitada arbitraria para su ejecución.
  • Módulos de intención basados ​​en políticas : Los agentes pueden centrar su atención y dedicar todos sus esfuerzos a lograr un subconjunto de sus objetivos, utilizando un subconjunto de sus acciones y empleando únicamente el conocimiento relevante para alcanzar dichos objetivos. GOAL proporciona módulos para estructurar reglas de acción y conocimiento dedicados a lograr objetivos específicos. De manera informal, los módulos pueden considerarse intenciones basadas en políticas, en el sentido de Michael Bratman .
  • Comunicación a nivel de conocimiento : Los agentes pueden comunicarse entre sí para intercambiar información y coordinar sus acciones. Los agentes GOAL se comunican utilizando el lenguaje de representación del conocimiento, que también se utiliza para representar sus creencias y objetivos.
  • Pruebas : También puedes escribir pruebas para GOAL.

Programa de agentes GOAL

Un programa agente GOAL consta de seis secciones diferentes: conocimiento , creencias , objetivos , reglas de acción , especificaciones de acción y reglas de percepción . El conocimiento, las creencias y los objetivos se representan mediante un lenguaje de representación del conocimiento como Prolog , programación de conjuntos de respuestas , SQL (o Datalog ) o el lenguaje de definición de dominio de planificación ( PDL ), por ejemplo. A continuación, ilustramos los componentes de un programa agente GOAL utilizando Prolog.

La estructura general de un programa de agentes GOAL es la siguiente:

principal: <nombre del agente> { <secciones> } 

El código del agente GOAL, utilizado para ilustrar su estructura, es capaz de resolver problemas del mundo de Blocks . Las creencias del agente representan el estado actual del mundo de Blocks, mientras que sus objetivos representan el estado final deseado. La sección de conocimiento que se detalla a continuación contiene información conceptual o de dominio adicional relacionada con el mundo de Blocks.

conocimiento { bloque ( a ), bloque ( b ), bloque ( c ), bloque ( d ), bloque ( e ), bloque ( f ), bloque ( g ). limpiar ( tabla ). limpiar ( X ) :- bloque ( X ), no ( en ( Y , X )). torre ([ X ]) :- en ( X , tabla ). torre ([ X , Y | T ]) :- en ( X , Y ), torre ([ Y | T ]). }

Tenga en cuenta que todos los bloques enumerados en la sección de conocimiento vuelven a aparecer en la sección de creencias , ya que es necesario especificar la posición de cada bloque para caracterizar la configuración completa de los mismos.

creencias{ en(a,b), en(b,c), en(c,tabla), en(d,e), en(e,tabla), en(f,g), en(g,tabla). } 

Todos los bloques conocidos también están presentes en la sección de objetivos , que especifica una configuración de objetivos que reutiliza todos los bloques.

objetivos{ en(a,e), en(b,tabla), en(c,tabla), en(d,c), en(e,b), en(f,d), en(g,tabla). } 

Un agente GOAL puede tener múltiples objetivos simultáneamente. Estos objetivos incluso pueden ser contradictorios, ya que cada uno puede alcanzarse en momentos diferentes. Por ejemplo, un agente podría tener como objetivo ver una película en el cine y, posteriormente, estar en casa.

En GOAL, se distinguen diferentes nociones de objetivo. Un objetivo primitivo es una afirmación que se deriva de la base de objetivos junto con los conceptos definidos en la base de conocimiento . Por ejemplo, tower([a,e,b])es un objetivo primitivo y escribimos goal(tower([a,e,b])para denotarlo. Inicialmente, tower([a,e,b])también es un objetivo de logro, ya que el agente no cree que a esté encima de e, e encima de b y b sobre la mesa. Los objetivos de logro son objetivos primitivos que el agente no cree que sean ciertos y se denotan por a-goal(tower([a,e,b]). También es útil poder expresar que se ha logrado un objetivo . goal-a(tower([e,b])se utiliza para expresar, por ejemplo, que se ha logrado la torre [e,b]con el bloque e encima del bloque b. Tanto los objetivos de logro como la noción de un objetivo logrado pueden definirse:

a-meta(fórmula) ::= meta(fórmula), no(bel(fórmula)) meta-a(fórmula) ::= meta(fórmula), bel(fórmula) 

Existe una importante bibliografía sobre la definición del concepto de objetivo de logro en la literatura sobre agentes (véanse las referencias).

GOAL es un lenguaje de programación basado en reglas. Las reglas se estructuran en módulos. El módulo principal de un agente GOAL especifica una estrategia para seleccionar acciones mediante reglas de acción. La primera regla que se muestra a continuación indica que mover el bloque X sobre el bloque Y (o, posiblemente, sobre la mesa) es una opción si dicho movimiento es constructivo, es decir, si mueve el bloque a su posición correcta. La segunda regla indica que mover un bloque X a la mesa es una opción si el bloque X está mal colocado.

módulo principal{ programa{ Si a-goal(tower([X,Y|T])), bel(tower([Y|T])) entonces move(X,Y). si a-goal(torre([X|T])) entonces mover(X,mesa). } } 

Las acciones, como la de mover que se muestra arriba, se especifican mediante una especificación de precondiciones y postcondiciones al estilo STRIPS . Una precondición especifica cuándo se puede realizar la acción (está habilitada). Una postcondición especifica cuáles son los efectos de realizar la acción.

especificación de acción{ mover(X,Y) { pre{ limpiar(X), limpiar(Y), en(X,Z), no(X=Y) } post{ not(on(X,Z)), on(X,Y) } } 

Finalmente, el módulo de eventos consta de reglas para procesar eventos como percepciones recibidas del entorno. La regla que se muestra a continuación especifica que, para todas las percepciones recibidas que indiquen que el bloque X está sobre el bloque Y, y se cree que X está encima de Z distinto de Y, se debe agregar el nuevo hecho on(X,Y) a la base de creencias y se debe eliminar el átomo on(X,Z).

módulo de eventos{ programa{ para todo bel( percept(on(X,Y)), on(X,Z), not(Y=Z) ) hacer insertar(on(X,Y), not(on(X,Z))). } } 

El lenguaje de programación de agentes GOAL está relacionado con otros lenguajes como AGENT0 , AgentSpeak , 2APL , Golog , JACK Intelligent Agents , Jadex y Jason , pero se diferencia de ellos . La característica distintiva de GOAL es el concepto de objetivo declarativo . Los objetivos de un agente GOAL describen lo que el agente quiere lograr, no cómo lograrlo. A diferencia de otros lenguajes, los agentes GOAL se comprometen con sus objetivos y solo los abandonan cuando los han alcanzado por completo . GOAL proporciona un marco de programación con un fuerte enfoque en la programación declarativa y las capacidades de razonamiento necesarias para los agentes cognitivos.

Véase también

Referencias

  1. El simulador de ascensores fue escrito originalmente por Chris Dailey y Neil McKellar y está disponible en su forma original a través de https://sourceforge.net/projects/elevatorsim .
Notas

Literatura sobre la noción de meta:

  • Lars Braubach, Alexander Pokahr, Daniel Moldt y Winfried Lamersdorf (2004). Representación de objetivos para sistemas de agentes BDI, en: Segundo taller internacional sobre programación de sistemas multiagente.
  • Philip R. Cohen y Hector J. Levesque (1990). La intención es elección con compromiso. Inteligencia Artificial 42, 213–261.
  • Andreas Herzig y D. Longin (2004). La intención C&L revisitada. En: Actas de la 9.ª Conferencia Internacional sobre Principios de Representación del Conocimiento y Razonamiento (KR'04), 527–535.
  • Koen V. Hindriks, Frank S. de Boer, Wiebe van der Hoek, John-Jules Ch. Meyer (2000). Programación de agentes con objetivos declarativos. En: Actas del 7.º Taller Internacional sobre Agentes Inteligentes VII (ATAL'00), págs.  228–243.
  • Anand S. Rao y Michael P. Georgeff (1993). Intenciones y compromiso racional. Informe técnico 8, Instituto Australiano de Inteligencia Artificial .
  • Birna van Riemsdijk, Mehdi Dastani, John-Jules Ch. Meyer (2009). Metas en conflicto: fundamentos semánticos de las metas en la programación de agentes. Revista internacional de agentes autónomos y sistemas multiagente.
  • Página principal del lenguaje de programación de agentes GOAL