GOLOGOLOG

GOLOG
GOLOGOLOG
패러다임논리 프로그래밍
처음 등장한1994년, 28년(연간)
파일 이름 확장자.pl
주요 구현
golog.lua, IndiGolog
영향을 받다
프롤로그

GOLOG는 동적 도메인에서 복잡한 액션을 지정 및 실행하기 위한 고급 논리 프로그래밍 언어입니다.그것은 상황 미적분에 기초하고 있다.이것은 행동과 변화에 대한 추론을 위한 1차 논리 언어입니다.GOLOG는 [1][2]토론토 대학에서 개발되었습니다.

역사

GOLOG 프로그래밍 언어의 기초가 되는 상황 미적분 개념은 1963년 [3]맥카시에 의해 처음 제안되었다.

언어

GOLOG 인터프리터는 전제조건, 동작의 효과 및 세계 초기 상태에 대한 사용자 제공 공리에 기초하여 모델링되는 동적 세계의 직접적인 특성을 자동으로 유지한다.이를 통해 어플리케이션은 특정 [4]액션에 초점을 맞추기 전에 세계의 상황을 추론하고 다양한 잠재적인 액션의 영향을 고려할 수 있습니다.

Golog는 논리 프로그래밍 언어이며 기존의 프로그래밍 언어와는 매우 다릅니다.C와 같은 절차적 프로그래밍 언어는 문장의 실행을 미리 정의한다.프로그래머는 문장으로 구성된 서브루틴을 만들고 컴퓨터는 각 문을 선형 순서로 실행합니다.이와는 대조적으로, Golog와 같은 5세대 프로그래밍 언어들은 해석자가 일련의 동작을 생성할 수 있는 추상적인 모델로 작업하고 있다.소스코드에 따라 문제가 정의되며 다음 액션을 찾는 것은 해결사에 달려 있습니다.이 접근방식은 로보틱스 영역에서 복잡한 문제를 쉽게 관리할 수 있습니다.

Golog 프로그램은 에이전트가 작동할 수 있는 상태 공간을 정의합니다.심볼 도메인의 경로는 상태 공간 검색과 함께 검색됩니다.프로세스 속도를 높이기 위해 Golog 프로그램을 계층형 태스크 [5]네트워크로 구현합니다.

원래의 Golog 언어 이외에도 몇 가지 확장 기능을 사용할 수 있습니다.ConGolog 언어는 동시성과 인터럽트를 제공합니다.IndiGolog 및 Readylog와 같은 다른 방언은 [6]센서 판독값이 즉시 업데이트되는 실시간 애플리케이션을 위해 만들어졌습니다.

사용하다

Golog는 Autonomous Agent의 동작을 모델링하기 위해 사용되어 왔습니다.환경 및 기본 동작의 효과를 기술하기 위한 논리 기반의 액션 형식주의 외에도, 그것들은 일반적인 프로그래밍 언어 구조를 사용하여 복잡한 동작을 구성할 수 있게 한다.

또한 로봇 및 산업 공정의 고급 제어, 가상 에이전트, 이산 이벤트 시뮬레이션 [7]등의 애플리케이션에도 사용됩니다.BDI(Belief Desire Intention) 스타일의 에이전트 [8]시스템 개발에도 사용할 수 있습니다.

계획 및 스크립트 작성

Planning Domain Definition Language와 달리 Golog는 계획과 스크립트 작성도 지원합니다.[9][10]계획이란 월드 모델에서 목표 상태가 정의되고 솔버가 논리 시스템을 이 상태로 만드는 것을 의미합니다.동작 스크립팅은 컴퓨터 [11]프로그램으로 실행되는 사후 대응적 절차를 구현합니다.

예를 들어, 이야기를 쓰는 것이 아이디어라고 가정해 봅시다.사용자는 플롯의 마지막에 참이 되어야 하는 것을 정의합니다.솔버가 기동되어 목표 상태에 도달할 때까지 가능한 액션을 현재 상황에 적용합니다.목표 상태의 사양과 가능한 액션은 논리 세계 [12]모델에서 실현됩니다.

반면 유선 연결된 반응 동작은 솔버가 필요하지 않지만 액션 시퀀스는 스크립트 [13]언어로 제공됩니다.프롤로그로 [14]작성된 Golog 인터프리터가 스크립트를 실행하여 스토리를 목표 상태로 만듭니다.

레퍼런스

  1. ^ Levesque, Hector J.; Reiter, Raymond; Lespérance, Yves; Lin, Fangzhen; Scherl, Richard B. (1997-04-01). "GOLOG: A logic programming language for dynamic domains". 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: A logic programming language for dynamic domains" (PDF). GOLOG: A Logic Programming Language for Dynamic Domains.
  3. ^ Marta Cialdea Mayer (2010). Il Calcolo delle Situazioni e il linguaggio Golog (PDF) (in Italian).
  4. ^ "GOLOG - Mathematical software - swMATH". swmath.org. Retrieved 2020-01-12.
  5. ^ Gabaldon, Alfredo (2002). Programming hierarchical task networks in the situation calculus. AIPS'02 Workshop on On-line Planning and Scheduling.
  6. ^ Classen, Jens (2013). Planning and verification in the agent language Golog (PhD). Hochschulbibliothek der Rheinisch-Westfalischen Technischen Hochschule Aachen.
  7. ^ G'omez, Sergio Alejandro. "The Golog Programming Language and Agency" (PDF). The Golog Programming Language and Agency.
  8. ^ Sardina, Sebastian; Lespérance, Yves (2009-05-10). "Golog Speaks the BDI Language" (PDF). Programming Multi-Agent Systems. Golog Speaks the BDI Language DO. 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.
  9. ^ Hofmann, Till and Niemueller, Tim and Cla\ssen, Jens and Lakemeyer, Gerhard (2016). Continual planning in Golog. Thirtieth AAAI conference on artificial intelligence.{{cite conference}}: CS1 maint: 여러 이름: 작성자 목록(링크)
  10. ^ Dylla, Frank and Ferrein, Alexander and Lakemeyer, Gerhard (2002). Acting and deliberating using golog in robotic soccer--a hybrid architecture. Proc. CogRob02, AAAI Press.{{cite conference}}: CS1 maint: 여러 이름: 작성자 목록(링크)
  11. ^ Ferrein, Alexander and Fritz, Christian and Lakemeyer, Gerhard (2005). "Using Golog for Deliberation and Team Coordination in Robotic Soccer". KI. 19 (1): 24.{{cite journal}}: CS1 maint: 여러 이름: 작성자 목록(링크)
  12. ^ Gudhmundsson, Tryggvi Thor (2017). Flexible authoring using GOLOG planning in interactive storytelling (PhD). Reykjavík University Iceland.
  13. ^ Yves Lesperance and Kenneth Tam and Michael Jenkin (2000). Reactivity in a Logic-Based Robot Programming Framework. Intelligent Agents VI. Agent Theories, Architectures, and Languages. Springer Berlin Heidelberg. pp. 173–187. doi:10.1007/10719619_13.
  14. ^ Ferrein, Alexander (2010). golog. lua: Towards a non-prolog implementation of GOLOG for embedded systems. 2010 AAAI Spring Symposium Series.