1314.4 액션 매개변수의 선언과 타입 제약
1. 매개변수의 구문적 구조
PDDL 액션 스키마에서 매개변수(parameters)는 :parameters 절을 통해 선언된다. 매개변수는 액션이 다양한 객체 조합에 대해 일반화될 수 있도록 하는 변수로서, 각 변수는 물음표(?) 접두사로 시작한다. 매개변수 선언의 일반적 구문은 다음과 같다:
:parameters (<variable-declaration>*)
여기서 <variable-declaration>은 하나 이상의 변수와 선택적 타입 지정으로 구성된다. 타입이 지정되는 경우, 변수 이름 다음에 하이픈(-)과 타입 이름이 따른다:
;; 개별 타입 지정
:parameters (?r - robot ?from - waypoint ?to - waypoint)
;; 동일 타입의 복수 변수 일괄 선언
:parameters (?from ?to - waypoint ?r - robot)
;; 타입 미지정 (모든 변수가 object 타입으로 간주)
:parameters (?x ?y ?z)
매개변수 목록에서 변수의 선언 순서는 의미론적으로 중요하다. 플래너가 생성한 계획에서 각 액션 인스턴스의 인수(argument)는 매개변수 선언 순서에 따라 배치되며, PlanSys2와 같은 실행 프레임워크에서도 이 순서를 기반으로 인수를 추출한다.
2. 타입 제약의 역할
:typing 요구사항이 활성화된 도메인에서 매개변수에 부여되는 타입 제약은 다음의 세 가지 핵심 기능을 수행한다.
2.1 그라운딩 공간의 축소
타입 제약은 각 매개변수에 바인딩될 수 있는 객체의 범위를 제한함으로써, 가능한 그라운드 액션의 수를 대폭 감소시킨다. 타입이 지정되지 않은 경우 모든 매개변수가 도메인 내 전체 객체 집합에 대해 바인딩될 수 있으므로, 그라운딩 공간이 불필요하게 확대된다.
도메인에 n 개의 총 객체가 존재하고 각 타입 \tau_i에 n_i개의 객체가 속하는 경우, k개의 매개변수를 가진 액션의 그라운딩 공간은 다음과 같이 비교된다:
\text{타입 미지정}: n^k \quad \gg \quad \text{타입 지정}: \prod_{i=1}^{k} n_i
이 차이는 특히 다수의 타입이 존재하고 각 타입의 객체 수가 적은 로봇 도메인에서 극적으로 나타난다.
2.2 의미론적 정확성 보장
타입 제약은 의미론적으로 무의미한 객체 바인딩을 사전에 차단한다. 예를 들어, 이동 액션의 출발지와 도착지 매개변수가 waypoint 타입으로 제약되면, 로봇 객체가 위치 매개변수에 바인딩되는 비논리적 상황이 구조적으로 방지된다:
;; 타입 제약으로 의미적 오류 방지
(:action move
:parameters (?r - robot ?from - waypoint ?to - waypoint)
...)
;; 타입 미지정 시, (move wp1 robot1 wp2) 같은 무의미한 바인딩 발생 가능
(:action move
:parameters (?r ?from ?to)
...)
2.3 플래닝 효율성 향상
타입 정보는 플래너의 탐색 과정에서 가지치기(pruning)에 활용된다. 적용 가능한 액션을 열거할 때, 타입 제약을 만족하는 객체만을 후보로 고려함으로써 탐색 공간을 효율적으로 축소할 수 있다(Helmert, 2009).
3. 타입 계층 구조와 매개변수
PDDL의 타입 시스템은 계층적 구조를 지원한다. 하위 타입(subtype)은 상위 타입(supertype)의 특수화이며, 상위 타입으로 선언된 매개변수에는 해당 타입과 모든 하위 타입의 객체가 바인딩될 수 있다.
(:types
entity - object
robot package - entity
ground_robot aerial_robot - robot
waypoint airspace - location
location - object
)
위의 타입 계층에서 robot 타입으로 선언된 매개변수에는 ground_robot과 aerial_robot 타입의 객체도 바인딩될 수 있다. 이를 형식적으로 표현하면:
\text{objects}(\tau) = \{o \in \mathcal{O} \mid \text{type}(o) \preceq \tau\}
여기서 \preceq는 타입 계층에서의 하위 타입 관계(subtype relation)를 나타낸다.
이 성질을 활용하면, 다양한 로봇 유형에 공통적으로 적용되는 액션을 상위 타입으로 일반화하여 정의할 수 있다:
;; 모든 로봇 유형에 적용되는 일반적 액션
(:action observe
:parameters (?r - robot ?loc - location)
:precondition (at ?r ?loc)
:effect (surveyed ?loc)
)
;; 특정 로봇 유형에만 적용되는 특화 액션
(:action fly
:parameters (?r - aerial_robot ?from - airspace ?to - airspace)
:precondition (and (at ?r ?from) (flight_path ?from ?to))
:effect (and (not (at ?r ?from)) (at ?r ?to))
)
4. either 타입과 다중 타입 허용
PDDL은 either 구문을 통해 하나의 매개변수가 여러 타입의 객체를 수용할 수 있도록 하는 합집합 타입(union type)을 지원한다:
(:action transport
:parameters (?r - robot ?cargo - (either package tool) ?from ?to - waypoint)
:precondition (and
(robot_at ?r ?from)
(cargo_at ?cargo ?from)
(holding ?r ?cargo)
)
:effect (and
(not (cargo_at ?cargo ?from))
(cargo_at ?cargo ?to)
(not (robot_at ?r ?from))
(robot_at ?r ?to)
)
)
이 예시에서 ?cargo 매개변수는 package 또는 tool 타입의 객체를 수용한다. either 구문은 타입 계층만으로는 표현하기 어려운 교차 타입 관계를 모델링하는 데 유용하다. 그러나 either 타입의 과도한 사용은 타입 시스템의 명확성을 저해할 수 있으므로, 가능하면 공통 상위 타입을 정의하여 타입 계층으로 표현하는 것이 권장된다.
5. 매개변수 설계의 실용적 지침
로봇 도메인에서 액션 매개변수를 설계할 때 고려해야 할 실용적 지침은 다음과 같다.
5.1 매개변수 수의 최소화
매개변수의 수가 증가하면 그라운딩 공간이 기하급수적으로 확장되므로, 가능한 한 매개변수의 수를 최소화해야 한다. 매개변수로 전달할 필요 없이 전제 조건이나 효과의 논리식 내에서 도출할 수 있는 정보는 매개변수에서 제외하는 것이 바람직하다:
;; 불필요한 매개변수 포함 (비권장)
(:action move
:parameters (?r - robot ?from - waypoint ?to - waypoint ?speed - speed_level)
:precondition (and
(robot_at ?r ?from)
(connected ?from ?to)
(current_speed ?r ?speed)
)
...)
;; 개선: 불필요한 매개변수 제거
(:action move
:parameters (?r - robot ?from - waypoint ?to - waypoint)
:precondition (and
(robot_at ?r ?from)
(connected ?from ?to)
)
...)
5.2 타입의 적절한 세분화
타입이 지나치게 추상적이면 그라운딩 공간이 불필요하게 넓어지고, 지나치게 세분화되면 도메인의 복잡성이 증가한다. 도메인의 술어와 액션에서 실제로 구별이 필요한 수준으로 타입을 설계해야 한다:
;; 적절한 타입 세분화
(:types
robot - object
mobile_robot manipulator_robot - robot
location - object
waypoint docking_station - location
)
;; 과도한 세분화 (비권장, 실제 액션에서 구분 불필요한 경우)
(:types
robot - object
wheeled_robot tracked_robot legged_robot - mobile_robot
mobile_robot - robot
)
5.3 매개변수 순서의 일관성
동일 도메인 내의 여러 액션에서 유사한 역할의 매개변수는 일관된 순서로 배치해야 한다. 이는 도메인의 가독성을 향상시키고, 디버깅 시 혼동을 방지한다:
;; 일관된 매개변수 순서: 에이전트, 대상, 위치 순
(:action pick_up
:parameters (?r - robot ?obj - object ?loc - waypoint)
...)
(:action place_down
:parameters (?r - robot ?obj - object ?loc - waypoint)
...)
(:action inspect
:parameters (?r - robot ?obj - object ?loc - waypoint)
...)
6. 참고 문헌
- Ghallab, M., Nau, D., & Traverso, P. (2004). Automated Planning: Theory and Practice. Morgan Kaufmann.
- Helmert, M. (2009). “Concise Finite-Domain Representations for PDDL Planning Tasks.” Artificial Intelligence, 173(5–6), 503–535.
- Haslum, P., Lipovetzky, N., Magazzeni, D., & Muise, C. (2019). An Introduction to the Planning Domain Definition Language. Morgan & Claypool Publishers.
- McDermott, D., Ghallab, M., Howe, A., Knoblock, C., Ram, A., Veloso, M., Weld, D., & Wilkins, D. (1998). “PDDL—The Planning Domain Definition Language.” Technical Report CVC TR-98-003, Yale Center for Computational Vision and Control.