1315.43 제약 조건의 PDDL 표현
1. 제약 조건의 개념
PDDL 3.0에서 제약 조건(constraint)은 계획의 실행 경로(trajectory) 전체에 걸쳐 반드시 충족되어야 하는 경성 조건(hard constraint)이다. 선호도(preference)가 위반되어도 계획이 유효한 것과 달리, 제약 조건이 위반되면 계획 자체가 무효화된다(Gerevini & Long, 2005).
2. 구문
제약 조건은 문제 파일의 :constraints 절에서 정의된다:
(:constraints (and
<constraint-1>
<constraint-2>
...
))
3. 시간 양상 연산자
3.1 always
계획의 모든 상태에서 조건이 참이어야 한다:
(:constraints (and
(always (not (collision_occurred)))
(always (forall (?r - robot) (> (battery_level ?r) 0)))
))
로봇 도메인에서 always는 안전 불변 조건을 강제하는 데 핵심적이다.
3.2 sometime
계획의 경로 중 적어도 하나의 상태에서 조건이 참이어야 한다:
(:constraints (and
(sometime (robot_at robot1 checkpoint_A))
(sometime (data_uploaded))
))
이는 특정 체크포인트 방문이나 필수 행동의 수행을 강제한다.
3.3 at-most-once
조건이 경로에서 최대 한 번만 참이 될 수 있다:
(:constraints (and
(at-most-once (emergency_mode_activated))
(at-most-once (system_reset))
))
3.4 sometime-after
조건 p가 참이 된 후, 이후의 어떤 상태에서 조건 q가 참이어야 한다:
(:constraints (and
;; 태스크를 시작하면 반드시 완료해야 함
(sometime-after (task_started task1) (task_completed task1))
;; 위험 감지 후 반드시 대응해야 함
(sometime-after (hazard_detected zone1) (hazard_resolved zone1))
))
3.5 sometime-before
조건 q가 참이 되기 전에, 이전의 어떤 상태에서 조건 p가 참이어야 한다:
(:constraints (and
;; 진입 전 반드시 인증 필요
(sometime-before (enter_restricted_area robot1) (authorized robot1))
;; 조립 전 부품 검사 필요
(sometime-before (assemble product1) (parts_inspected product1))
))
3.6 always-within
조건 p가 참이 된 후 t 시간 단위 내에 조건 q가 참이어야 한다:
(:constraints (and
;; 경보 발생 후 60초 내 대응
(always-within 60 (alarm_triggered zone1) (alarm_handled zone1))
))
4. 로봇 도메인에서의 제약 표현
4.1 안전 불변 제약
(:constraints (and
;; 로봇은 절대 금지 구역에 진입하지 않음
(always (forall (?r - robot ?z - forbidden_zone)
(not (robot_in_zone ?r ?z))))
;; 두 로봇이 동시에 같은 위치를 점유하지 않음
(always (forall (?r1 ?r2 - robot ?w - waypoint)
(imply (and (robot_at ?r1 ?w) (robot_at ?r2 ?w))
(= ?r1 ?r2))))
))
4.2 순서 제약
(:constraints (and
;; 기기를 사용하기 전에 보정 필요
(forall (?d - device)
(sometime-before (device_used ?d) (device_calibrated ?d)))
;; 배터리가 임계값 이하로 떨어지면 충전 수행
(forall (?r - robot)
(sometime-after (battery_critical ?r) (battery_charged ?r)))
))
4.3 자원 제약
(:constraints (and
;; 배터리가 절대 0 이하가 되지 않음
(always (forall (?r - robot) (>= (battery_level ?r) 0)))
;; 적재량이 최대 용량을 초과하지 않음
(always (forall (?r - robot) (<= (current_load ?r) (max_load ?r))))
))
5. 제약과 전제 조건의 관계
제약 조건의 일부는 액션의 전제 조건으로도 표현 가능하다. 두 접근의 차이:
| 특성 | 전제 조건 | 경로 제약 |
|---|---|---|
| 범위 | 개별 액션 | 전체 경로 |
| 위반 시 | 해당 액션 적용 불가 | 계획 전체 무효 |
| 표현력 | 단일 상태 조건 | 시간 양상 조건 |
| 구문 위치 | 도메인 파일 | 문제 파일 |
경로 제약은 전제 조건으로 표현할 수 없는 시간적 관계(sometime-after, sometime-before 등)를 강제할 수 있다.
6. 참고 문헌
- Gerevini, A. & Long, D. (2005). “Plan Constraints and Preferences in PDDL3.” Technical Report, University of Brescia.
- Haslum, P., Lipovetzky, N., Magazzeni, D., & Muise, C. (2019). An Introduction to the Planning Domain Definition Language. Morgan & Claypool Publishers.