GOLOG는 동적 영역에서 복잡한 행동의 명세와 실행을 위해 설계된 고수준 논리 프로그래밍 언어이다. 이 언어는 행동과 변화에 대해 추론하기 위한 1차 논리 형식주의인 상황 미적분학(situation calculus)에 기반을 둔다. 토론토 대학교에서 개발된 GOLOG는 해석기가 모델링된 세계의 직접적인 특성을 유지하도록 하여, 애플리케이션이 특정 행동 과정을 결정하기 전에 전제 조건, 효과 및 잠재적 행동 시퀀스에 대해 추론할 수 있게 한다.
C와 같은 기존의 절차적 언어가 미리 결정된 선형 순서로 명령문을 실행하는 것과 달리, GOLOG는 추상 모델에서 작동한다. 소스 코드는 문제를 정의하고 해석기가 행동 시퀀스를 생성하므로, 이는 5세대 프로그래밍 언어가 된다. 이 접근 방식은 솔버가 현재 상태에 따라 다음 행동을 동적으로 결정해야 하는 로봇 공학과 같은 복잡한 영역에 특히 적합하다.
역사적 배경
GOLOG의 기초 형식주의인 상황 미적분학은 1963년 AI 선구자 존 매카시(John McCarthy)가 처음 제안했다. 이 논리적 프레임워크는 동적 세계, 행동 및 그 효과를 표현하는 방법을 제공하여, 이후 행동과 변화에 대해 추론할 수 있는 프로그래밍 언어의 토대를 마련했다. GOLOG는 이러한 전통에서 출발하여 상황 미적분학을 실용적인 프로그래밍 패러다임에 통합했다.
언어 설명
GOLOG 해석기는 사용자가 제공한 전제 조건, 행동의 효과 및 초기 상태에 대한 공리(axioms)를 기반으로 모델링된 동적 세계의 직접적인 특성을 자동으로 유지한다. 이를 통해 애플리케이션은 세계의 상태에 대해 추론하고 특정 행동에 집중하기 전에 다양한 잠재적 행동의 영향을 고려할 수 있다. 이 언어는 에이전트가 작동할 수 있는 상태 공간을 정의하고, 상태 공간 검색을 통해 경로를 찾는다. 이 과정을 가속화하기 위해 GOLOG 프로그램은 종종 계층적 작업 네트워크(hierarchical task networks)로 구현된다.
GOLOG는 기존 프로그래밍 언어와 구별되는 논리 프로그래밍 언어이다. C와 같은 절차적 언어에서 프로그래머는 컴퓨터가 선형적으로 실행하는 명령문으로 서브루틴을 만든다. 반면 GOLOG는 추상 모델로 작업하며 해석기가 행동 시퀀스를 생성한다. 소스 코드는 문제를 정의하고, 솔버가 다음 행동을 찾는 역할을 하므로 로봇 공학 및 기타 영역의 복잡한 문제를 관리하는 데 도움이 된다.
확장 및 방언
원래 GOLOG 외에도 여러 확장이 개발되었다. ConGOLOG는 동시성과 인터럽트를 제공하여 더 복잡한 에이전트 행동을 가능하게 한다. IndiGOLOG 및 Readylog와 같은 다른 방언은 센서 판독값이 실시간으로 업데이트되는 실시간 애플리케이션을 위해 만들어졌다. 이러한 확장은 GOLOG의 적용 가능성을 동적이고 상호작용적인 환경으로 확장한다.
응용 분야
GOLOG는 환경을 설명하는 논리 기반 행동 형식주의와 일반적인 프로그래밍 언어 기능을 사용하여 복잡한 행동을 구축하기 위한 구성을 결합하여 자율 에이전트의 행동을 모델링하는 데 사용되었다. 로봇 및 산업 공정의 고수준 제어, 가상 에이전트, 이산 이벤트 시뮬레이션에 적용된다. 또한 GOLOG는 다중 에이전트 시스템 및 인지 로봇 공학에서 흔히 사용되는 Belief-Desire-Intention(BDI) 스타일 에이전트 시스템을 개발하는 데 사용될 수 있다.
계획 및 스크립팅
Planning Domain Definition Language(PDDL)와 대조적으로 GOLOG는 계획과 스크립팅을 모두 지원한다. 계획은 세계 모델에서 목표 상태를 정의하는 것을 포함하며, 솔버는 논리 시스템을 해당 상태로 가져온다. 행동 스크립팅은 컴퓨터 프로그램으로 실행되는 반응형 절차를 구현한다. 예를 들어, 스토리 저작에서 사용자는 플롯의 끝에서 참이어야 하는 것을 정의한다. 솔버는 목표 상태에 도달할 때까지 현재 상황에 가능한 행동을 적용하며, 목표 상태와 가능한 행동의 명세는 논리적 세계 모델에서 구현된다. 또는 하드와이어된 반응형 행동은 솔버가 필요하지 않다. 행동 시퀀스는 스크립팅 언어로 제공되고, Prolog로 작성된 GOLOG 해석기는 스크립트를 실행하여 스토리를 목표 상태로 가져온다.
같이 보기
- situation-calculus (목록에 없지만 관련 있음)
- logic-programming (목록에 없지만 관련 있음)
- Autonomous Agents (목록에 없지만 관련 있음)
- Robotics (목록에 없지만 관련 있음)