1314.32 듀레이티브 액션의 시간 매개변수
1. 지속 시간의 정의
듀레이티브 액션에서 :duration 절은 액션의 실행에 소요되는 시간을 명시한다. 지속 시간은 양의 실수 값으로 표현되며, 플래너가 시간적 계획을 생성할 때 액션의 시작과 종료 시점을 결정하는 데 사용된다.
기본 구문은 다음과 같다:
:duration (= ?duration <expression>)
여기서 ?duration은 시스템이 제공하는 예약 변수(reserved variable)로서, 해당 액션 인스턴스의 지속 시간을 나타낸다.
2. 고정 지속 시간
가장 단순한 형태로, 지속 시간이 상수 값으로 고정된다:
(:durative-action pick_up
:parameters (?r - robot ?obj - object ?loc - waypoint)
:duration (= ?duration 5)
:condition (...)
:effect (...)
)
이 정의에서 pick_up 액션은 항상 5단위 시간이 소요된다. 고정 지속 시간은 행동의 소요 시간이 매개변수나 상태에 무관한 경우에 적합하다.
3. 매개변수 의존 지속 시간
지속 시간이 수치 플루언트(numeric fluent)를 참조하여 매개변수에 따라 달라지는 경우이다:
(:functions
(distance ?from - waypoint ?to - waypoint)
(speed ?r - robot)
)
(:durative-action move
:parameters (?r - robot ?from - waypoint ?to - waypoint)
:duration (= ?duration (/ (distance ?from ?to) (speed ?r)))
:condition (...)
:effect (...)
)
이 정의에서 이동 시간은 출발지와 도착지 사이의 거리를 로봇의 속도로 나눈 값으로 계산된다. 이를 통해 서로 다른 경로와 로봇에 대해 현실적인 이동 시간을 모델링할 수 있다.
수치 표현식에서 사용 가능한 연산자:
| 연산자 | 의미 | 예시 |
|---|---|---|
+ | 덧셈 | (+ (setup_time ?r) (process_time ?obj)) |
- | 뺄셈 | (- (max_time) (overhead)) |
* | 곱셈 | (* (distance ?from ?to) (speed_factor)) |
/ | 나눗셈 | (/ (distance ?from ?to) (speed ?r)) |
4. 지속 시간 범위 제약
지속 시간을 고정 값이 아닌 범위로 지정할 수 있다. 이는 플래너에게 지속 시간의 유연성을 부여하여 최적화의 여지를 제공한다:
:duration (and
(>= ?duration 3)
(<= ?duration 10)
)
이 정의에서 액션의 지속 시간은 3 이상 10 이하의 범위 내에서 플래너가 결정한다. 범위 제약은 :duration-inequalities 요구사항의 활성화가 필요하다.
범위 지속 시간은 다음과 같은 시나리오에서 유용하다:
- 로봇의 이동 속도가 조절 가능한 경우: 느리지만 안전한 이동과 빠르지만 에너지 소모가 큰 이동 사이의 선택
- 작업의 품질과 소요 시간 사이에 트레이드오프가 존재하는 경우
5. 지속 시간과 수치 효과의 결합
:duration 변수는 수치 효과에서 참조할 수 있어, 지속 시간에 비례하는 자원 소모를 모델링할 수 있다:
(: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 (connected ?from ?to))
(over all (>= (battery_level ?r) 0))
)
:effect (and
(at start (not (robot_at ?r ?from)))
(at end (robot_at ?r ?to))
(at end (decrease (battery_level ?r)
(* ?duration (energy_consumption_rate ?r))
))
)
)
이 정의에서 배터리 소모량은 지속 시간 × 에너지 소모율로 계산되어, 긴 이동일수록 더 많은 배터리를 소모한다.
6. 플래너에서의 지속 시간 처리
6.1 POPF 플래너
POPF(Partial Order Planning Forward)는 PDDL 2.1의 지속 시간을 완전히 지원한다. 고정 지속 시간, 수치 표현식 기반 지속 시간, 범위 제약을 모두 처리할 수 있다.
6.2 TFD 플래너
TFD(Temporal Fast Downward)도 지속 시간의 다양한 형태를 지원하며, 시간적 최적화를 수행할 수 있다.
6.3 PlanSys2에서의 처리
PlanSys2의 Executor 노드는 플래너가 결정한 지속 시간을 기반으로 액션의 실행 시간을 관리한다. 그러나 실제 로봇 시스템에서 액션의 실행 시간은 PDDL 모델의 지속 시간과 정확히 일치하지 않을 수 있으므로, 실행 수준에서의 시간 관리는 별도의 메커니즘이 필요하다.
7. 설계 지침
-
가능하면 수치 플루언트 기반의 동적 지속 시간을 사용하라. 고정 지속 시간보다 현실적인 모델을 제공하며, 플래너가 더 정확한 시간 계획을 생성할 수 있다.
-
지속 시간의 단위를 일관되게 유지하라. 도메인 전체에서 동일한 시간 단위(초, 분 등)를 사용해야 한다.
-
과도하게 정밀한 지속 시간을 피하라. PDDL 수준의 시간 모델은 실제 실행과 차이가 있으므로, 합리적인 근사치를 사용하는 것이 적절하다.
-
지속 시간이 0인 액션은 피하라. 지속 시간이 0이면 듀레이티브 액션의 의미론이 퇴화(degenerate)되어 예측 불가능한 결과를 초래할 수 있다.
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.
- Coles, A. J., Coles, A. I., Fox, M., & Long, D. (2010). “Forward-Chaining Partial-Order Planning.” Proceedings of the International Conference on Automated Planning and Scheduling (ICAPS), 42–49.
- Haslum, P., Lipovetzky, N., Magazzeni, D., & Muise, C. (2019). An Introduction to the Planning Domain Definition Language. Morgan & Claypool Publishers.