PDDL 문법의 기본 구조 (Basic Syntax Structure of PDDL)
1. 개요
PDDL의 문법은 Lisp의 S-Expression(S-표현식)에 기반하며, 괄호로 구분된 중첩 리스트 구조를 사용한다. 모든 PDDL 파일은 (define ...) 최상위 표현식으로 시작하며, 키워드 접두어 :를 통해 각 구성 요소를 식별한다.
2. S-Expression 기반 구문
2.1 기본 형태
(키워드 인자1 인자2 ...)
모든 PDDL 요소는 괄호로 감싸진 리스트이며, 첫 번째 요소가 키워드 또는 연산자이다.
2.2 중첩 구조
(and
(at ?robot ?from)
(not (blocked ?from ?to))
(or (has_key ?robot)
(door_open ?from ?to)))
논리 연산(and, or, not)은 중첩된 S-Expression으로 표현된다.
3. 도메인 파일의 문법 구조
(define (domain 이름)
(:requirements ...)
(:types ...)
(:constants ...)
(:predicates ...)
(:functions ...)
(:action 이름 ...)
(:durative-action 이름 ...))
3.1 순서 규약
도메인 파일 내의 선언 순서는 일반적으로 :requirements → :types → :constants → :predicates → :functions → :action이다.
4. 문제 파일의 문법 구조
(define (problem 이름)
(:domain 도메인이름)
(:objects ...)
(:init ...)
(:goal ...)
(:metric ...))
5. PDDL 명명 규칙
| 요소 | 규칙 | 예시 |
|---|---|---|
| 도메인 이름 | 소문자, 하이픈 구분 | robot-delivery |
| 변수 | ? 접두어 | ?robot, ?from, ?to |
| 타입 | 소문자 | robot, location, object |
| 술어 | 소문자, 하이픈 구분 | at, gripper-empty |
| 행동 | 소문자, 하이픈 구분 | move, pick-up |
| 키워드 | : 접두어 | :requirements, :action |
6. 주석
PDDL에서 주석은 세미콜론(;)으로 시작한다.
; 이 행동은 로봇을 한 위치에서 다른 위치로 이동시킨다
(:action move
:parameters (?r - robot ?from ?to - location)
...)
7. 참고 문헌
- McDermott, D., et al. (1998). “PDDL — The Planning Domain Definition Language.”
- Ghallab, M., Nau, D., & Traverso, P. (2016). Automated Planning and Acting. Cambridge University Press.
| 버전 | 날짜 | 변경 사항 |
|---|---|---|
| v0.1 | 2026-04-05 | 초안 작성 |