GOAL es un lenguaje de programación de agentes para programar agentes cognitivos . Los agentes de GOAL derivan su elección de acción de sus creencias y metas. El lenguaje proporciona los bloques de construcción básicos para diseñar e implementar agentes cognitivos mediante la programación de constructos que permiten y facilitan la manipulación de las creencias y metas de un agente y para estructurar su toma de decisiones . El lenguaje proporciona 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 lógico y simbólico para representar la información que tienen y sus creencias o conocimientos sobre el entorno en el que actúan para lograr sus objetivos. Este lenguaje de representación del conocimiento no está fijado por GOAL pero, en principio, puede variar según las necesidades del programador.
- Metas declarativas : los agentes pueden tener múltiples metas que especifican lo que el agente quiere lograr en algún momento en el futuro cercano o lejano. Las metas declarativas especifican un estado del entorno que el agente desea establecer, no especifican acciones o procedimientos sobre cómo lograr dichos estados.
- Estrategia de compromiso ciego : los agentes se comprometen con sus objetivos y abandonan los objetivos solo cuando se han alcanzado. Esta estrategia de compromiso, llamada estrategia de compromiso ciego en la literatura, es la estrategia predeterminada utilizada por los agentes de GOAL. Se supone que los agentes cognitivos no tienen metas que creen que ya se han logrado, una restricción que se ha incorporado a los agentes de META al abandonar una meta cuando se ha logrado por completo .
- Selección de acciones basada en reglas : los agentes utilizan las llamadas reglas de acción para seleccionar acciones, dadas sus creencias y objetivos. Tales reglas pueden especificar la elección de la acción en el sentido de que se pueden realizar múltiples acciones en cualquier momento dadas las reglas de acción del agente. En ese caso, un agente de 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 poner todos sus esfuerzos en lograr un subconjunto de sus objetivos, utilizando un subconjunto de sus acciones, utilizando solo el conocimiento relevante para lograr esos objetivos. GOAL proporciona módulos para estructurar reglas de acción y conocimientos dedicados a lograr objetivos específicos. De manera informal, los módulos pueden verse como 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 de 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 puede escribir pruebas para GOAL.
Programa de agentes GOAL
Un programa de agente GOAL consta de seis secciones diferentes, que incluyen el conocimiento , las creencias , las metas , las reglas de acción , las especificaciones de acción y las reglas de percepción , respectivamente. El conocimiento, las creencias y los objetivos se representan en un lenguaje de representación del conocimiento como Prolog , Programación de conjuntos de respuestas , SQL (o Registro de datos ) o el Lenguaje de definición de dominio de planificación , por ejemplo. A continuación, ilustramos los componentes de un programa de agente GOAL utilizando Prolog.
La estructura general de un programa de agente de GOAL se ve así:
main:{ }
El código de agente de GOAL que se utiliza para ilustrar la estructura de un agente de GOAL es un agente que puede resolver los problemas del mundo de Blocks . Las creencias del agente representan el estado actual del mundo de Blocks, mientras que las metas del agente representan el estado de la meta. La sección de conocimientos que se enumera a continuación contiene conocimientos conceptuales o de dominio adicionales relacionados con el dominio mundial Blocks.
conocimiento{ bloque (a), bloque (b), bloque (c), bloque (d), bloque (e), bloque (f), bloque (g). claro (tabla). borrar (X): - bloquear (X), no (en (Y, X)). torre ([X]): - en (X, mesa). torre ([X, Y | T]): - en (X, Y), torre ([Y | T]).}
Tenga en cuenta que todos los bloques enumerados en la sección de conocimientos 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 bloques.
creencias{ en (a, b), en (b, c), en (c, mesa), en (d, e), en (e, mesa), en (f, g), en (g, mesa).}
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.
metas{ en (a, e), en (b, mesa), en (c, mesa), en (d, c), en (e, b), en (f, d), en (g, mesa).}
Un agente de GOAL puede tener varios objetivos al mismo tiempo. Estos objetivos pueden incluso estar en conflicto, ya que cada uno de los objetivos puede alcanzarse en diferentes momentos. Por ejemplo, un agente puede tener el objetivo de ver una película en el cine y estar en casa (después).
En GOAL se distinguen diferentes nociones de objetivo. Un objetivo primitivo es una declaración que se deriva de la base de objetivos junto con los conceptos definidos en la base de conocimientos. Por ejemplo, la torre ([a, e, b]) es un objetivo primitivo y escribimos objetivo (torre ([a, e, b]) para denotar esto. Inicialmente, la torre ([a, e, b]) también es una meta de logro, ya que el agente no cree que a esté encima de e, e esté encima de by b esté sobre la mesa. Las metas de logro son metas primitivas que el agente no cree que sean el caso y se denotan por a-goal (tower ([a, e, b])) . También es útil poder expresar que se ha logrado una meta . goal-a (tower ([e, b]) se usa para expresar, por ejemplo , que la torre [e, b] se ha logrado con el bloque e encima del bloque b. Se pueden definir tanto las metas de logro como la noción de meta lograda:
a-objetivo (fórmula) :: = objetivo (fórmula), no (bel (fórmula))objetivo-a (fórmula) :: = objetivo (fórmula), bel (fórmula)
Existe una literatura significativa sobre la definición del concepto de una meta de logro en la literatura de agentes (ver las referencias).
GOAL es un lenguaje de programación basado en reglas. Las reglas están estructuradas 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 a continuación establece que mover el bloque X encima del bloque Y (o, posiblemente, la mesa) es una opción si dicho movimiento es constructivo, es decir, mueve el bloque en su posición. La segunda regla establece que mover un bloque X a la mesa es una opción si el bloque X está fuera de lugar.
módulo principal { programa{ si a-goal (torre ([X, Y | T])), bel (torre ([Y | T])) entonces mueva (X, Y). si a-goal (torre ([X | T])) entonces mueva (X, mesa). }}
Las acciones, como la acción de movimiento utilizada anteriormente, se especifican mediante una especificación de condiciones previas y posteriores al estilo STRIPS . Una condición previa especifica cuándo se puede realizar la acción (está habilitada). Una condición posterior especifica cuáles son los efectos de realizar la acción.
actionpec { mover (X, Y) { pre {borrar (X), borrar (Y), activado (X, Z), no (X = Y)} publicar {no (en (X, Z)), en (X, Y)}}
Por último, el módulo de eventos consta de reglas para procesar eventos como las percepciones recibidas del entorno. La siguiente regla especifica que para todas las percepciones recibidas que indican que el bloque X está en el bloque Y, y se cree que X está encima de Z diferente a Y, el nuevo hecho sobre (X, Y) debe agregarse a la base de creencias. y el átomo de (X, Z) debe eliminarse.
módulo de eventos { programa{ para todos bel (percepto (en (X, Y)), en (X, Z), no (Y = Z)) inserte (en (X, Y), no (en (X, Z))). }}
Lenguajes de programación de agentes relacionados
El lenguaje de programación de agentes de GOAL está relacionado pero es diferente de otros lenguajes de programación de agentes como AGENT0 , AgentSpeak , 2APL , Golog , JACK Intelligent Agents , Jadex y, por ejemplo, Jason . La característica distintiva de GOAL es el concepto de objetivo declarativo . Los objetivos de un agente de GOAL describen lo que un agente quiere lograr, no cómo lograrlo. A diferencia de otros idiomas, los agentes de GOAL están comprometidos con sus objetivos y solo eliminan un objetivo cuando se ha logrado por completo . GOAL proporciona un marco de programación con un fuerte enfoque en la programación declarativa y las capacidades de razonamiento requeridas por los agentes cognitivos.
Ver también
Referencias
- ^ El simulador de ascensor fue escrito originalmente por Chris Dailey y Neil McKellar y está disponible en su forma original a través de http://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: El Segundo Taller Internacional de Programación de Sistemas Multiagente.
- Philip R. Cohen y Hector J. Levesque (1990). La intención es la opción con el compromiso. Inteligencia artificial 42, 213-261.
- Andreas Herzig y D. Longin (2004). Intención de C & l revisada. En: Proc. del 9º Int. Conferencia sobre los principios de la representación y el razonamiento del conocimiento (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: Proc. del 7º Int. Taller sobre agentes inteligentes VII (ATAL'00), págs. 228–243.
- Anand S. Rao y Michael P. Georgeff (1993). Intenciones y Compromiso Racional. Tech. Rep. 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 Multi-Agentes.
enlaces externos
- Inicio del lenguaje de programación del agente de GOAL