and, or, not 논리 연산자의 활용 (Usage of and, or, not Logical Operators)
1. 개요
PDDL의 전제 조건과 목표 조건에서 and, or, not 논리 연산자를 사용하여 복합 조건을 표현한다. 각 연산자의 사용 가능 여부는 :requirements에 의해 결정된다.
2. and 연산자
모든 하위 조건이 참이어야 전체가 참이다. :strips에서 기본 지원된다.
:precondition (and
(at ?r ?from)
(connected ?from ?to)
(gripper_empty ?r))
3. not 연산자
하위 조건의 부정이다. :negative-preconditions 요구.
:precondition (and
(at ?r ?from)
(not (blocked ?from ?to)))
효과에서의 not은 삭제 효과를 나타내며, :strips에서도 사용 가능하다.
:effect (and
(at ?r ?to)
(not (at ?r ?from))) ; 이전 위치에서 제거
4. or 연산자
하위 조건 중 하나 이상이 참이면 전체가 참이다. :disjunctive-preconditions 요구.
:precondition (or
(door_open ?room)
(has_key ?r ?room))
5. 중첩 사용
:precondition (and
(at ?r ?from)
(or (connected ?from ?to)
(and (has_teleporter ?r)
(teleport_pad ?from)
(teleport_pad ?to)))
(not (blocked ?from ?to)))
6. 연산자 요약
| 연산자 | 의미 | :requirements |
|---|---|---|
(and ...) | 논리 AND | :strips (기본) |
(not ...) | 논리 NOT (전제 조건) | :negative-preconditions |
(not ...) | 삭제 효과 | :strips (기본) |
(or ...) | 논리 OR | :disjunctive-preconditions |
7. 참고 문헌
- McDermott, D., et al. (1998). “PDDL — The Planning Domain Definition Language.”
| 버전 | 날짜 | 변경 사항 |
|---|---|---|
| v0.1 | 2026-04-05 | 초안 작성 |