1314.36 수치 전제 조건과 비교 연산
1. 수치 전제 조건의 개념
수치 전제 조건(numeric precondition)은 수치 플루언트의 값에 대한 비교 조건을 전제 조건에 포함하는 것이다. 이를 통해 액션의 실행 가능성을 정량적 기준으로 판단할 수 있다. :numeric-fluents 요구사항의 활성화가 필요하다.
2. 비교 연산자
PDDL 2.1에서 지원하는 수치 비교 연산자는 다음과 같다:
| 연산자 | 의미 | 구문 예시 |
|---|---|---|
< | 미만 | (< (battery_level ?r) 20) |
<= | 이하 | (<= (current_load ?r) (max_load ?r)) |
> | 초과 | (> (fuel_level ?v) 0) |
>= | 이상 | (>= (battery_level ?r) (energy_cost ?from ?to)) |
= | 동등 | (= (error_count ?r) 0) |
3. 기본 활용 패턴
3.1 자원 충분성 검사
(:action move
:parameters (?r - robot ?from - waypoint ?to - waypoint)
:precondition (and
(robot_at ?r ?from)
(connected ?from ?to)
(>= (battery_level ?r) (energy_cost ?from ?to))
)
:effect (and
(not (robot_at ?r ?from))
(robot_at ?r ?to)
(decrease (battery_level ?r) (energy_cost ?from ?to))
)
)
3.2 용량 제한 검사
(:action load_cargo
:parameters (?r - robot ?cargo - object ?loc - waypoint)
:precondition (and
(robot_at ?r ?loc)
(object_at ?cargo ?loc)
(<= (+ (current_load ?r) (weight ?cargo)) (max_load ?r))
)
:effect (and
(holding ?r ?cargo)
(not (object_at ?cargo ?loc))
(increase (current_load ?r) (weight ?cargo))
)
)
3.3 상태 임계값 검사
(:action enter_low_power_mode
:parameters (?r - robot)
:precondition (and
(robot_active ?r)
(< (battery_level ?r) 20)
)
:effect (and
(not (robot_active ?r))
(low_power_mode ?r)
)
)
4. 산술 표현식을 포함하는 비교
비교 연산의 양변에 산술 표현식을 사용할 수 있다:
;; 왕복 이동에 충분한 배터리 확인
:precondition (>= (battery_level ?r)
(* 2 (energy_cost ?from ?to)))
;; 적재 후 총 중량이 제한 이내인지 확인
:precondition (<= (+ (current_load ?r) (weight ?obj))
(max_load ?r))
;; 작업 완료까지 충분한 시간이 남았는지 확인
:precondition (>= (time_remaining ?mission)
(+ (travel_time ?from ?to) (task_duration ?task)))
5. 듀레이티브 액션에서의 수치 전제 조건
듀레이티브 액션에서 수치 전제 조건은 시간 주석과 결합된다:
(:durative-action move
:parameters (?r - robot ?from - waypoint ?to - waypoint)
:duration (= ?duration (/ (distance ?from ?to) (speed ?r)))
:condition (and
(at start (robot_at ?r ?from))
(at start (>= (battery_level ?r) (* ?duration (discharge_rate ?r))))
(over all (> (battery_level ?r) 0))
)
:effect (...)
)
at start에서 총 소모량에 대한 사전 검사를, over all에서 실행 중 최소 잔량 유지를 확인한다.
6. 수치 전제 조건과 휴리스틱
수치 전제 조건은 플래너의 휴리스틱 추정에 도전적인 요소이다. 논리적 술어의 달성과 달리, 수치 플루언트가 특정 비교 조건을 만족하도록 하려면 적절한 수치 변경 액션의 시퀀스가 필요하다.
Metric-FF(Hoffmann, 2003)는 수치 전제 조건에 대한 휴리스틱을 제공하며, 삭제 완화를 수치 플루언트에 확장하여 “수치 값이 한 방향으로만 변한다“는 완화 가정 하에 비용을 추정한다.
7. 설계 지침
-
비교 연산의 방향을 일관되게 사용하라.
>=와<=를 혼용하면 가독성이 저하된다. 가능하면 “자원 >= 요구량” 형태를 표준으로 사용하라. -
엄격 비교(
<,>)와 비엄격 비교(<=,>=)를 적절히 구분하라. 경계 값에서의 동작이 달라지므로, 의도에 맞는 비교 연산을 선택해야 한다. -
0과의 비교에 주의하라. 부동소수점 연산의 특성상,
(= (value) 0)대신(<= (value) 0.001)등의 근사 비교가 더 안전할 수 있다.
8. 참고 문헌
- Fox, M. & Long, D. (2003). “PDDL2.1: An Extension to PDDL for Expressing Temporal Planning Domains.” Journal of Artificial Intelligence Research, 20, 61–124.
- Hoffmann, J. (2003). “The Metric-FF Planning System: Translating ‘Ignoring Delete Lists’ to Numeric State Variables.” Journal of Artificial Intelligence Research, 20, 291–341.
- Haslum, P., Lipovetzky, N., Magazzeni, D., & Muise, C. (2019). An Introduction to the Planning Domain Definition Language. Morgan & Claypool Publishers.