:conditional-effects 요구사항 (:conditional-effects Requirement)
1. 개요
:conditional-effects 요구사항은 행동의 효과가 특정 조건에 따라 선택적으로 적용되도록 하는 (when ...) 표현을 허용한다. 이에 의해 동일한 행동이 상태에 따라 다른 결과를 생성할 수 있다.
2. 구문
(:requirements :strips :typing :conditional-effects)
3. 조건부 효과의 사용
3.1 기본 형태
:effect (and
(on ?obj ?dest)
(not (holding ?r ?obj))
(when (fragile ?obj)
(damaged ?obj))) ; 깨지기 쉬우면 손상됨
(when 조건 효과) 구조에서, 조건이 참인 경우에만 효과가 적용된다.
3.2 전칭 조건부 효과
:effect (forall (?x - item)
(when (in ?x ?container)
(not (in ?x ?container)))) ; 컨테이너 내 모든 물체 제거
4. 로봇 도메인에서의 활용
| 조건부 효과 | 의미 |
|---|---|
(when (fragile ?o) (damaged ?o)) | 깨지기 쉬운 물체면 손상 |
(when (heavy ?o) (decrease (battery ?r) 2)) | 무거운 물체면 배터리 추가 소모 |
(when (at_charger ?r) (charged ?r)) | 충전기 위치면 충전 |
5. 조건부 효과 없이의 대안
조건부 효과를 사용하지 않으면, 조건에 따라 별도의 행동을 정의하여야 한다.
; 조건부 효과 대안: 별도 행동
(:action place-fragile ...)
(:action place-robust ...)
이는 행동의 수를 증가시키므로, :conditional-effects가 더 간결하다.
6. 참고 문헌
- McDermott, D., et al. (1998). “PDDL — The Planning Domain Definition Language.”
- Pednault, E. (1989). “ADL: Exploring the Middle Ground Between STRIPS and the Situation Calculus.” KR 1989.
| 버전 | 날짜 | 변경 사항 |
|---|---|---|
| v0.1 | 2026-04-05 | 초안 작성 |