Articulo de referencia

GOLOG

.pl "}},"i":0}}]}"> GOLOG es un lenguaje de programación lógica de alto nivel para la especificación y ejecución de acciones complejas en dominios dinámicos. Se basa en el cálcu...

GOLOG es un lenguaje de programación lógica de alto nivel para la especificación y ejecución de acciones complejas en dominios dinámicos. Se basa en el cálculo de situaciones . Es un lenguaje lógico de primer orden para razonar sobre acciones y cambios. GOLOG fue desarrollado en la Universidad de Toronto . [ 1 ] [ 2 ]

Historia

El concepto de cálculo de situaciones en el que se basa el lenguaje de programación GOLOG fue propuesto por primera vez por John McCarthy en 1963. [ 3 ]

Descripción

Un intérprete de GOLOG mantiene automáticamente una caracterización directa del mundo dinámico que se está modelando, basándose en axiomas proporcionados por el usuario sobre las precondiciones, los efectos de las acciones y el estado inicial del mundo. Esto permite que la aplicación razone sobre la condición del mundo y considere los impactos de diferentes acciones potenciales antes de centrarse en una acción específica. [ 4 ]

Golog es un lenguaje de programación lógica , muy diferente de los lenguajes de programación convencionales. Un lenguaje de programación procedimental como C define la ejecución de las instrucciones de antemano. El programador crea una subrutina compuesta por instrucciones, y el ordenador ejecuta cada instrucción en orden secuencial. En cambio, los lenguajes de programación de quinta generación como Golog trabajan con un modelo abstracto que permite al intérprete generar la secuencia de acciones. El código fuente define el problema y es el solucionador quien debe determinar la siguiente acción. Este enfoque facilita la gestión de problemas complejos en el ámbito de la robótica.

Un programa Golog define el espacio de estados en el que el agente puede operar. Se encuentra una ruta en el dominio simbólico mediante la búsqueda en el espacio de estados . Para acelerar el proceso, los programas Golog se implementan como redes de tareas jerárquicas . [ 5 ]

Además del lenguaje Golog original, existen algunas extensiones disponibles. El lenguaje ConGolog proporciona concurrencia e interrupciones. Otros dialectos, como IndiGolog y Readylog, se crearon para aplicaciones en tiempo real en las que las lecturas de los sensores se actualizan sobre la marcha. [ 6 ]

Usos

Golog se ha utilizado para modelar el comportamiento de agentes autónomos. Además de un formalismo de acciones basado en la lógica para describir el entorno y los efectos de las acciones básicas, permite la construcción de acciones complejas utilizando construcciones típicas de lenguajes de programación.

También se utiliza para aplicaciones en el control de alto nivel de robots y procesos industriales , agentes virtuales, simulación de eventos discretos , etc. [ 7 ] También se puede utilizar para desarrollar sistemas de agentes del estilo Creencia, Deseo e Intención . [ 8 ]

Planificación y guionización

A diferencia del lenguaje de definición de dominio de planificación , Golog también admite planificación y scripting. [ 9 ] [ 10 ] La planificación implica que se define un estado objetivo en el modelo del mundo, y el solucionador lleva un sistema lógico a este estado. El scripting de comportamiento implementa procedimientos reactivos, que se ejecutan como un programa informático. [ 11 ]

Por ejemplo, supongamos que la idea es escribir una historia. El usuario define qué debería ser cierto al final de la trama . Un solucionador se pone en marcha y aplica las acciones posibles a la situación actual hasta alcanzar el estado objetivo. La especificación del estado objetivo y las acciones posibles se realizan en el modelo lógico del mundo. [ 12 ]

En cambio, un comportamiento reactivo cableado no necesita un solucionador, sino que la secuencia de acciones se proporciona en un lenguaje de scripting . [ 13 ] El intérprete de Golog , que está escrito en Prolog, [ 14 ] ejecuta el script y esto llevará la historia al estado objetivo.

Referencias

  1. Levesque, Hector J.; Reiter, Raymond; Lespérance, Yves; Lin, Fangzhen; Scherl, Richard B. (1997-04-01). "GOLOG: Un lenguaje de programación lógica para dominios dinámicos" . The Journal of Logic Programming . Reasoning about Action and Change. 31 (1): 59– 83. doi : 10.1016/S0743-1066(96)00121-5 . ISSN 0743-1066 . 
  2. "GOLOG: Un lenguaje de programación lógica para dominios dinámicos" (PDF) . GOLOG: Un lenguaje de programación lógica para dominios dinámicos .
  3. Marta Cialdea Mayer (2010). Il Calcolo delle Situazioni e il linguaggio Golog (PDF) (en italiano).
  4. "GOLOG - Software matemático - swMATH" . swmath.org . Consultado el 12 de enero de 2020 .
  5. Gabaldon, Alfredo (2002). Programación de redes de tareas jerárquicas en el cálculo de situaciones . Taller AIPS'02 sobre planificación y programación en línea.
  6. ^ Clase, Jens (2013). Planificación y verificación en el lenguaje agente Golog (Doctor). Hochschulbibliothek der Rheinisch-Westfalischen Technischen Hochschule Aachen.
  7. Gómez, Sergio Alejandro. "El lenguaje de programación y la agencia Golog" (PDF) . El lenguaje de programación y la agencia Golog .
  8. Sardina, Sebastian; Lespérance, Yves (10 de mayo de 2009). "Golog habla el lenguaje BDI" (PDF) . Programación de sistemas multiagente . Lecture Notes in Computer Science. Vol. 5919. pp. 82–99 . doi : 10.1007/978-3-642-14843-9_6 . ISBN   978-3-642-14842-2.{{cite book}}: |journal=ignorado ( ayuda )
  9. Hofmann, Till y Niemueller, Tim y Cla\ssen, Jens y Lakemeyer, Gerhard (2016). Planificación continua en Golog . Trigésima conferencia AAAI sobre inteligencia artificial.{{cite conference}}: CS1 maint: varios nombres: lista de autores ( enlace )
  10. Dylla, Frank y Ferrein, Alexander y Lakemeyer, Gerhard (2002). Actuar y deliberar usando golog en fútbol robótico: una arquitectura híbrida . Proc. CogRob02, AAAI Press.{{cite conference}}: CS1 maint: varios nombres: lista de autores ( enlace )
  11. Ferrein, Alexander y Fritz, Christian y Lakemeyer, Gerhard (2005). "Uso de Golog para la deliberación y la coordinación de equipos en el fútbol robótico". KI . 19 (1): 24.{{cite journal}}: CS1 maint: varios nombres: lista de autores ( enlace )
  12. Gudhmundsson, Tryggvi Thor (2017). Autoría flexible mediante la planificación GOLOG en la narración interactiva (Tesis doctoral). Universidad de Reikiavik, Islandia.
  13. Yves Lesperance, Kenneth Tam y Michael Jenkin (2000). Reactividad en un marco de programación de robots basado en lógica . Agentes inteligentes VI. Teorías, arquitecturas y lenguajes de agentes. Springer Berlin Heidelberg. págs. 173–187 . doi : 10.1007/10719619_13 . 
  14. Ferrein, Alexander (2010). golog. lua: Hacia una implementación de GOLOG sin Prolog para sistemas embebidos . Serie de simposios de primavera de la AAAI de 2010.