1314.35 increase, decrease, assign 연산의 활용

1. 수치 갱신 연산의 개요

PDDL 2.1에서 수치 플루언트의 값을 변경하는 세 가지 핵심 연산은 increase, decrease, assign이다. 이 연산들은 액션의 효과에서 사용되며, 로봇 도메인에서 에너지 소모, 자원 관리, 비용 추적 등 정량적 상태 변화를 모델링하는 데 필수적이다.

2. increase 연산

increase 연산은 수치 플루언트의 현재 값에 지정된 양을 더한다:

f' = f + \Delta

구문: (increase <fluent> <expression>)

;; 이동 거리 누적
(increase (total_distance ?r) (distance ?from ?to))

;; 수집 아이템 수 증가
(increase (items_collected ?r) 1)

;; 총 비용 증가 (복합 표현식)
(increase (total_cost) (* (distance ?from ?to) (cost_per_unit)))

;; 적재량 증가
(increase (current_load ?r) (weight ?obj))

로봇 도메인에서의 주요 활용 사례:

  • 이동 거리, 작업 시간, 에너지 소모 등의 누적 메트릭 추적
  • 적재량, 수집 데이터량 등의 자원 축적
  • 계획 비용 함수의 증분적 계산

3. decrease 연산

decrease 연산은 수치 플루언트의 현재 값에서 지정된 양을 뺀다:

f' = f - \Delta

구문: (decrease <fluent> <expression>)

;; 배터리 소모
(decrease (battery_level ?r) (energy_cost ?from ?to))

;; 연료 감소
(decrease (fuel_level ?v) (* (distance ?from ?to) (fuel_rate ?v)))

;; 잔여 용량 감소
(decrease (remaining_capacity ?container) (volume ?obj))

;; 남은 시간 감소
(decrease (time_remaining ?mission) (action_duration))

decrease 사용 시 결과 값이 음수가 될 수 있으므로, 전제 조건에서 충분한 잔량을 확인해야 한다:

:precondition (>= (battery_level ?r) (energy_cost ?from ?to))
:effect (decrease (battery_level ?r) (energy_cost ?from ?to))

4. assign 연산

assign 연산은 수치 플루언트의 값을 완전히 새로운 값으로 대체한다:

f' = v

구문: (assign <fluent> <expression>)

;; 배터리 완전 충전
(assign (battery_level ?r) (max_battery ?r))

;; 상태 코드 초기화
(assign (error_count ?r) 0)

;; 현재 속도 설정
(assign (current_speed ?r) (max_speed ?r))

;; 위치 좌표 갱신
(assign (position_x ?r) (waypoint_x ?to))

assign은 이전 값에 무관하게 새로운 값을 설정하므로, 초기화, 리셋, 절대 값 설정 등의 시나리오에 적합하다.

5. 세 연산의 비교

특성increasedecreaseassign
연산f + \Deltaf - \Deltav
이전 값 참조예 (현재 값에 가산)예 (현재 값에서 감산)아니오 (완전 대체)
주요 용도누적, 축적소모, 감소초기화, 리셋, 절대 설정
교환 법칙해당 없음해당 없음해당 없음
역연산decreaseincrease없음 (이전 값 복원 불가)

6. 복합 표현식의 활용

세 연산 모두 변경량으로 산술 표현식을 사용할 수 있다:

;; 상수
(increase (total_cost) 10)

;; 수치 플루언트 참조
(decrease (battery_level ?r) (energy_cost ?from ?to))

;; 산술 연산
(decrease (fuel_level ?v) (* (distance ?from ?to) (consumption_rate ?v)))

;; 중첩 산술
(increase (score) (+ (* (distance ?from ?to) 2) (bonus_factor ?region)))

;; 다른 플루언트 간의 연산
(assign (efficiency ?r) (/ (work_done ?r) (energy_consumed ?r)))

7. 듀레이티브 액션에서의 수치 연산

듀레이티브 액션에서 수치 연산은 시간 주석과 결합된다:

(: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))))
    )
    :effect (and
        (at start (not (robot_at ?r ?from)))
        (at end (robot_at ?r ?to))
        (at end (decrease (battery_level ?r) (* ?duration (discharge_rate ?r))))
        (at end (increase (total_distance ?r) (distance ?from ?to)))
    )
)

8. 로봇 도메인 종합 예시

(:functions
    (battery_level ?r - robot)
    (max_battery ?r - robot)
    (current_load ?r - robot)
    (max_load ?r - robot)
    (weight ?obj - object)
    (distance ?from - waypoint ?to - waypoint)
    (total_cost)
)

(:action charge_battery
    :parameters (?r - robot ?station - charging_station)
    :precondition (and
        (robot_at ?r ?station)
        (< (battery_level ?r) (max_battery ?r))
    )
    :effect (assign (battery_level ?r) (max_battery ?r))
)

(:action pick_up_item
    :parameters (?r - robot ?obj - object ?loc - waypoint)
    :precondition (and
        (robot_at ?r ?loc)
        (object_at ?obj ?loc)
        (<= (+ (current_load ?r) (weight ?obj)) (max_load ?r))
    )
    :effect (and
        (holding ?r ?obj)
        (not (object_at ?obj ?loc))
        (increase (current_load ?r) (weight ?obj))
    )
)

(:action drop_item
    :parameters (?r - robot ?obj - object ?loc - waypoint)
    :precondition (and (robot_at ?r ?loc) (holding ?r ?obj))
    :effect (and
        (not (holding ?r ?obj))
        (object_at ?obj ?loc)
        (decrease (current_load ?r) (weight ?obj))
    )
)

9. 참고 문헌

  • 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.