1315.16 assign 연산자를 통한 값 할당
1. assign 연산자의 정의
assign 연산자는 수치 함수의 현재 값을 완전히 무시하고, 지정된 새 값으로 대체하는 갱신 연산이다. increase와 decrease가 현재 값에 대한 상대적 변경인 반면, assign은 절대적 설정이다.
s'[f] = v
2. 구문
(assign <function-instance> <numeric-expression>)
3. 주요 활용 사례
3.1 배터리 완충
(:action full_charge
: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))
)
3.2 상태 초기화 및 리셋
;; 오류 카운터 초기화
(assign (error_count ?r) 0)
;; 데이터 저장소 비우기 (업로드 후)
(assign (storage_used ?r) 0)
;; 현재 적재량 초기화
(assign (current_load ?r) 0)
3.3 속성 재설정
;; 속도 모드 변경
(:action set_high_speed
:parameters (?r - robot)
:precondition (robot_active ?r)
:effect (assign (current_speed ?r) (max_speed ?r))
)
(:action set_low_speed
:parameters (?r - robot)
:precondition (robot_active ?r)
:effect (assign (current_speed ?r) (* (max_speed ?r) 0.3))
)
3.4 센서 보정 후 정확도 설정
(:action calibrate_sensor
:parameters (?r - robot ?s - sensor)
:precondition (and (has_sensor ?r ?s) (not (sensor_calibrated ?s)))
:effect (and
(sensor_calibrated ?s)
(assign (sensor_accuracy ?s) (max_accuracy ?s))
)
)
4. assign과 increase/decrease의 비교
| 특성 | assign | increase/decrease |
|---|---|---|
| 이전 값 참조 | 불참조 | 참조 |
| 연산 성격 | 절대적 설정 | 상대적 변경 |
| 역연산 가능 | 불가 (이전 값 소실) | 가능 (역연산 적용) |
| 주요 용도 | 초기화, 리셋, 절대 설정 | 누적, 소모, 증감 |
5. assign의 특수한 용도
5.1 함수 값의 복사
한 함수의 값을 다른 함수에 복사:
;; 현재 위치의 좌표를 저장
(assign (saved_x ?r) (current_x ?r))
(assign (saved_y ?r) (current_y ?r))
5.2 조건부 할당
조건부 효과와 결합하여 조건에 따라 다른 값을 할당:
:effect (and
(when (priority_high ?task)
(assign (urgency_score ?task) 10)
)
(when (priority_low ?task)
(assign (urgency_score ?task) 1)
)
)
6. 주의사항
-
이전 값의 소실:
assign적용 후 이전 값을 복원할 수 없으므로, 이전 값이 필요한 경우 별도 함수에 저장해야 한다. -
계획의 비가역성:
assign을 사용한 액션은 역방향으로 되돌리기 어려우므로, 후방 탐색 기반 플래너에서 처리가 복잡해질 수 있다. -
메트릭과의 상호 작용:
assign으로 메트릭 함수(예:total_cost)를 임의로 설정하면 비용 최적화가 무의미해질 수 있다. 메트릭 함수에는increase만 사용하는 것이 안전하다.
7. 참고 문헌
- Fox, M. & Long, D. (2003). “PDDL2.1: An Extension to PDDL for Expressing Temporal Planning Domains.” Journal of Artificial Intelligence Research, 20, 61–124.
- Haslum, P., Lipovetzky, N., Magazzeni, D., & Muise, C. (2019). An Introduction to the Planning Domain Definition Language. Morgan & Claypool Publishers.