동적 최적화(dynamic optimization) 문제는 최적제어(optimal control) 문제라고도 하는데 매우 광범위한 영역에서 사용되고 있다.
예를 들면 인공위성을 궤도에 올리는 위한 가장 효율적인 연료 사용 전략이나 화학 공정 시설을 가동하는 가장 경제적인 방법을 찾는 문제 등을 들 수 있다. 이러한 동적 최적화 문제의 기본 가정은 동적 모델(dynamic model)이 주어진다는데 있다. 동적 모델의 예로서 다음과 같이 이산시간(discrete-time) 차분 방정식(difference equation)으로 표현된 비선형 시스템을 들 수 있다.
\[ \mathbf{x}_{t+1}=\mathbf{f}(\mathbf{x}_t, \mathbf{u}_t) \tag{1} \]
여기서 \(\mathbf{x}_t \in \mathbb{R}^n\) 는 상태변수, \(\mathbf{u}_t \in \mathbb{R}^p\) 는 제어입력이다. 최적제어 문제에서는 이러한 동적 모델을 사용할 수 있거나 안다고 가정한다. 최적제어의 목적은 다음과 같은 성능지수(또는 목적함수)가 일정 시간 범위 N에 걸쳐서 최적화되도록 제어입력의 시퀀스 \(\mathbf{u}_{t \ : \ t+N-1}^*= ( \mathbf{u}_t^*, \mathbf{u}_{t+1}^*, ... , \mathbf{u}_{t+N-1}^*) \) 를 계산하는 것이다.
\[ \min_{\mathbf{u}_{t \ : \ t+N-1}} \phi (\mathbf{x}_{t+N}) + \sum_{i=0}^{N-1} g(\mathbf{x}_{t+i}, \mathbf{u}_{t+i}) \tag{2} \]
여기서 \(\phi( \mathbf{x}_{t+N})\) 와 \(g(\mathbf{x}_{t+i}, \mathbf{u}_{t+i})\) 는 각각 최종 시간과 관심 시간 구간 단계에 부과되는 성능함수이다. 실제로 많은 문제를 이와 같은 형식으로 표현할 수 있으며 최적화 솔루션인 \(\mathbf{u}_{t \ : \ t+N-1}^*\) 을 계산하기 위한 알고리즘과 상용 소프트웨어 패키지도 다수 개발되어 있다.
그런데 여기서 한가지 문제점은 최적제어 시퀀스 \((\mathbf{u}_t^*, \mathbf{u}_{t+1}^*, \mathbf{u}_{t+2}^*, ... )\) 를 시스템에 그대로 적용할 수 없다는 데 있다. 왜냐하면 최적제어 시퀀스가 오픈-루프(open-loop) 제어를 산출하기 때문에 그대로 적용할 경우 시스템 모델에 내재되어 있는 오류나 불확실성에 의해서 시스템의 상태가 예측된 값에서 크게 벗어날 수 있기 때문이다. 이에 대응하여 일정 기간(예를 들면 한 시간 스텝) 후에 상태를 측정하고 측정된 상태를 새로운 초기 조건으로 시작하여 최적제어 문제를 다시 푸는 방법이 제안되었다. 이렇게 하면 측정 상태를 기반으로 새로운 최적화 과정이 이루어지기 때문에 피드백 제어(feedback control)가 된다. 피드백 제어는 오픈-루프 제어보다도 모델 불확실성이나 외란 등에 훨씬 강인하게 대처할 수 있는 장점이 있다. 이와 같은 제어 방식을 MPC(모델예측제어, model predictive control)라고 한다.
MPC는 RHC(receding horizon control), DMC(dynamic matrix control)등으로도 불리는데, 1970년대 초반 Shell Oil사에서 DMC라는 이름으로 처음 사용되었다고 한다. MPC는 고전 PID제어에 이어서 산업 현장에서 두번째로 많이 사용되는 제어 알고리즘이라고 알려져 있는데, 전통적으로 화학 공정 제어, 공급망 관리, 경제 및 금융의 확률적 제어 문제, 동적 헤징(hedging) 및 수익 관리 등에 적용되었고, 최근에는 무인 항공기나 로봇의 경로 계획 및 제어, 우주선의 랑데부, 잠수함 또는 미사일의 유도제어 등 반응 속도가 매우 빠른 시스템으로도 응용 범위를 넓히고 있다.
MPC는 제어입력과 상태변수 제약조건, 시간지연, 비최소 위상(nonminimum phase) 동역학 등을 갖는 비선형이 매우 강한 시스템도 제어할 수 있지만, 실제로는 제어입력과 상태변수 제약조건이 있는 다변수 선형 시스템의 제어에 사용되는 경우가 많다. MPC에 사용되는 선형 동적 모델과 제약조건은 다음과 같다.
\[ \begin{align} & \mathbf{x}_{t+1}=A \mathbf{x}_t+B \mathbf{u}_t \tag{3} \\ \\ & \mathbf{y}_t=C \mathbf{x}_t \\ \\ & \min_{\mathbf{u}_{t \ : \ t+N-1}} J = \mathbf{x}_{t+N}^T Q_f \mathbf{x}_{t+N} + \sum_{i=0}^{N-1} \mathbf{x}_{t+i}^T Q \mathbf{x}_{t+i}+ \mathbf{u}_{t+i}^T R \mathbf{u}_{t+i} \tag{4} \\ \\ & \mathbf{u}_{min} \le \mathbf{u}_t \le \mathbf{u}_{max} \tag{5} \\ \\ & \mathbf{y}_{min} \le \mathbf{y}_t \le \mathbf{y}_{max} \end{align} \]
여기서 시스템의 동적 모델 (3)은 물리 법칙에 의해서 유도되는게 대부분이지만, 산업 현장에서 사용되는 MPC는 데이터를 기반으로 식별(identification)된 시스템 모델이나 신경망으로 구현된 모델을 사용하기도 한다. 최근에는 딥러닝과 강화학습을 MPC와 결합시킨 연구가 진행되고 있으며 일부 좋은 결과를 보여주고 있기도 하다.
식 (4)로 주어지는 목적함수는 기존의 LQ (linear quadratic) 최적제어에서 사용되는 상태 및 입력변수에 관한 2차함수이다. 식 (5)는 입력과 출력 또는 상태변수에 관한 제약조건으로서 부등식은 입출력 벡터의 성분(element)별로 적용된다.
MPC의 제어 목적은 상태변수 또는 출력의 미래 동작을 최적화하기 위해 미래 제어입력의 시퀀스를 계산하는 것이다. 최적화는 예측구간(prediction horizon)이라는 제한된 일정 시간 구간내에서 수행된다. 여기서 MPC가 기존 최적제어와 다른 점은 고정된 일정 시간 구간이 아닌 이동 시간 구간 (receding horizon)이라는 새로운 개념을 도입했다는 데 있다.
MPC의 기본 절차는 다음과 같다. 우선 현재 시간 \(t\) 에서 상태변수 \(\mathbf{x}_t\) 를 측정한 후 예측구간 \([t,\ t+N]\) 에 대한 오픈-루프 최적화 문제를 풀어서 제어 시퀀스 \(\mathbf{u}_{t \ : \ t+N-1}^*=(\mathbf{u}_t^*, \mathbf{u}_{t+1}^*, ... , \mathbf{u}_{t+N-1}^*)\) 를 계산한다. 그리고 계산된 제어 시퀀스의 첫 번째 값 \(\mathbf{u}_t^*\) 만 시스템에 적용한다. 그런 다음 예측구간을 한 스텝 이동시킨 후 다시 시간 \(t+1\) 에서 상태변수 \(\mathbf{x}_{t+1}\) 를 측정한 후 예측구간 \([t+1, \ t+N+1]\) 에 대한 오픈-루프 최적화 문제를 풀어서 제어 시퀀스 \(\mathbf{u}_{t+1 \ : \ t+N}^*= (\mathbf{u}_{t+1}^*, \mathbf{u}_{t+2}^*, ... , \mathbf{u}_{t+N}^*)\) 를 계산한 후 첫 번째 값 \(\mathbf{u}_{t+1}^*\) 를 시스템에 적용한다. 다시 후속 시간 스텝에서 동일한 절차가 반복되며 첫번째 최적제어가 적용된다.
여기서 오픈-루프 제어 시퀀스를 일정 성능 예측구간 \(N\) 에서 목적함수 \(J\) 를 최소화하도록 일정 제어 시간 구간 \(N_c\) 에서 최적화시킬 수도 있다. 이때 제어 구간 \(N_c\) 는 일반적으로 성능 예측구간 \(N\) 보다 작거나 같으며 제어는 \(N_c\) 와 \(N\) 사이에서 일정하게 유지된다.
MPC의 장점은 다음과 같다. 우선 MPC는 고유한 특성으로 인해 피드백 제어 구조를 갖는다. 그리고 매 시간 스텝마다 최적화를 수행하는 고성능 제어 법칙으로서 안정성이 보장되며 우수한 추종(tracking) 성능을 갖고 비선형 시스템으로 쉽게 확장시킬 수 있다. 무엇보다도 MPC의 큰 장점은 제어기 설계단계에서 시스템에 가해지는 제한조건을 명시적으로 다룰 수 있다는 것을 들 수 있다.
반면에 MPC는 매 시간 스텝마다 최적화를 온라인에서 수행해야 하므로 상당한 계산량과 컴퓨팅 리소스가 요구된다. 따라서 과거에는 화학 공정 제어와 같은 느린 시스템에서만 사용할 수 있었다. 하지만 최근에는 컴퓨팅 성능과 최적화 알고리즘의 급속한 발전 덕분에 빠른 동역학을 갖는 시스템에도 MPC가 점차 적용 가능해지고 있다.
알고리즘 면에서 고속의 MPC를 구현하기 위한 방안으로는 각 상태변수에 대한 최적화 결과를 미리 계산하여 룩업 테이블(lookup table) 형태로 저장하고 온라인에서 테이블을 검색하여 꺼내 쓰는 explicit MPC 알고리즘과, 최적화 문제의 계산량을 대폭 줄여서 온라인상에서도 고속의 MPC 계산을 가능하게 한 fast MPC 알고리즘이 개발되어 있다.
식 (3), (4), (5)로 주어지는 동적 최적화 문제는 QP(quadratic program) 문제 ( https://pasus.tistory.com/27 )로 변환한 후 정적 최적화(static optimization) 기법을 적용하여 푸는 것이 일반적이다. 다음에는 최적화 문제 변환 과정에 대해서 알아보기로 한다.
'유도항법제어 > 최적제어' 카테고리의 다른 글
[MPC] MPC를 위한 두가지 QP 모델 - 2 (0) | 2022.12.03 |
---|---|
[MPC] MPC를 위한 두가지 QP 모델 - 1 (0) | 2022.11.30 |
[PSOC-7] 유사 스펙트럴 방법 예제 (0) | 2022.04.24 |
[PSOC-6] 유사 스펙트럴 방법 (Pseudospectral Method) (0) | 2022.04.23 |
[PSOC-5] 가우시안 쿼드래처 (Gaussian Quadrature) (0) | 2021.12.18 |
댓글