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_robotrobot이다(is-a), robotentity이다(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 수준이 적절하다:

깊이예시적합한 경우
1robot - object단순 도메인, 단일 로봇 유형
2ground_robot - robot - object중간 복잡도, 2–3 로봇 유형
3wheeled_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. 계층 설계의 판단 기준

새로운 타입을 도입할지 결정할 때 다음을 확인한다:

  1. 해당 객체군이 고유한 액션에 참여하는가? 특정 유형의 로봇만 수행할 수 있는 액션이 있다면 별도 타입이 필요하다.

  2. 해당 객체군에 고유한 술어가 적용되는가? 특정 유형에만 적용되는 속성이 있다면 별도 타입이 유용하다.

  3. 그라운딩 공간이 실질적으로 감소하는가? 타입 분리로 인한 그라운딩 감소 효과가 미미하면 불필요한 복잡성만 추가된다.

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.