1315.3 타입 계층 구조의 설계
1. 타입 계층의 개념
PDDL 타입 계층 구조(type hierarchy)는 타입 간의 상위-하위 관계를 트리 형태로 조직한 것이다. 상위 타입(supertype)은 하위 타입(subtype)의 일반화이며, 하위 타입은 상위 타입의 특수화이다. 이 계층은 객체 지향 프로그래밍의 클래스 상속 계층과 유사한 역할을 수행한다.
(:types
object ;; 루트 타입 (암묵적)
entity location item - object ;; 1단계 하위
robot human - entity ;; 2단계 하위
ground_robot aerial_robot - robot ;; 3단계 하위
waypoint station - location
package tool - item
)
2. 계층 설계의 원칙
2.1 원칙 1: is-a 관계에 기반한 분류
타입 계층의 상위-하위 관계는 “is-a” 관계를 충실히 반영해야 한다. ground_robot은 robot이다(is-a), robot은 entity이다(is-a). “has-a” 관계나 “uses” 관계는 타입 계층이 아닌 술어로 표현해야 한다:
;; 올바른 is-a 관계 (타입 계층)
ground_robot - robot ;; 지상 로봇은 로봇이다
;; has-a 관계 (술어로 표현)
(has_gripper ?r - robot ?g - gripper) ;; 로봇이 그리퍼를 가진다
2.2 원칙 2: 공통 속성과 행동에 기반한 그룹화
동일한 술어와 액션에 참여하는 객체들을 동일한 상위 타입으로 그룹화한다:
;; ground_robot과 aerial_robot이 공통으로 사용하는 술어/액션
(robot_at ?r - robot ?loc - location) ;; 모든 로봇에 적용
(battery_level ?r - robot) ;; 모든 로봇에 적용
(:action communicate :parameters (?r - robot ...) ...) ;; 모든 로봇에 적용
;; 특정 타입에만 적용되는 술어/액션
(:action fly :parameters (?d - aerial_robot ...) ...) ;; 항공 로봇만
(:action dive :parameters (?u - underwater_robot ...) ...) ;; 수중 로봇만
2.3 원칙 3: 적절한 계층 깊이
타입 계층의 깊이는 도메인의 복잡도와 액션에서의 타입 구분 필요성에 따라 결정된다. 일반적으로 3–4 수준이 적절하다:
| 깊이 | 예시 | 적합한 경우 |
|---|---|---|
| 1 | robot - object | 단순 도메인, 단일 로봇 유형 |
| 2 | ground_robot - robot - object | 중간 복잡도, 2–3 로봇 유형 |
| 3 | wheeled_robot - ground_robot - robot - object | 복잡한 도메인, 다양한 로봇 |
| 4+ | 과도한 세분화 | 대부분 불필요, 재설계 권장 |
2.4 원칙 4: 균형 잡힌 계층
한쪽으로 치우친 비균형 계층보다 각 분기에 유사한 수의 하위 타입을 배치하는 것이 가독성과 관리 용이성을 향상시킨다.
3. 로봇 도메인의 전형적 타입 계층 설계
3.1 에이전트 중심 계층
(:types
agent - object
robot human - agent
mobile_robot manipulator_robot service_robot - robot
wheeled_robot tracked_robot legged_robot - mobile_robot
)
3.2 위치 중심 계층
(:types
location - object
indoor_location outdoor_location - location
room corridor - indoor_location
waypoint parking_area - outdoor_location
ground_waypoint air_waypoint - waypoint
)
3.3 물체 중심 계층
(:types
physical_object - object
movable_object fixed_object - physical_object
small_object large_object - movable_object
package container tool - small_object
)
4. 계층 설계의 판단 기준
새로운 타입을 도입할지 결정할 때 다음을 확인한다:
-
해당 객체군이 고유한 액션에 참여하는가? 특정 유형의 로봇만 수행할 수 있는 액션이 있다면 별도 타입이 필요하다.
-
해당 객체군에 고유한 술어가 적용되는가? 특정 유형에만 적용되는 속성이 있다면 별도 타입이 유용하다.
-
그라운딩 공간이 실질적으로 감소하는가? 타입 분리로 인한 그라운딩 감소 효과가 미미하면 불필요한 복잡성만 추가된다.
5. 다중 로봇 도메인의 타입 계층 예시
(define (domain multi_robot_warehouse)
(:requirements :strips :typing)
(:types
;; 에이전트 계층
robot - object
transport_robot inspection_robot charging_robot - robot
;; 위치 계층
location - object
storage_area loading_dock workstation charging_bay - location
;; 물체 계층
cargo - object
pallet box fragile_item - cargo
;; 인프라 계층
equipment - object
conveyor shelf charging_unit - equipment
)
)
이 설계에서 각 로봇 유형은 고유한 능력(운송, 점검, 충전 보조)을 가지며, 각 위치 유형은 고유한 기능을 제공하고, 각 화물 유형은 고유한 취급 요구사항을 갖는다. 타입 계층을 통해 이러한 구분이 구조적으로 표현된다.
6. 참고 문헌
- Ghallab, M., Nau, D., & Traverso, P. (2004). Automated Planning: Theory and Practice. Morgan Kaufmann.
- Haslum, P., Lipovetzky, N., Magazzeni, D., & Muise, C. (2019). An Introduction to the Planning Domain Definition Language. Morgan & Claypool Publishers.
- Helmert, M. (2009). “Concise Finite-Domain Representations for PDDL Planning Tasks.” Artificial Intelligence, 173(5–6), 503–535.