본문 바로가기
유도항법제어/최적제어

[Discrete-Time] LQR 문제

by 세인트워터멜론 2020. 10. 31.

비선형 시스템에 대해서 매우 일반적인 성능지수를 적용한 최적제어 문제에 대한 해를 유도해 보았다 (https://pasus.tistory.com/35). 그러나 이러한 셋팅으로는 명시적인 제어법칙(control law)을 유도해 내기가 어렵다.

LQR은 선형 시스템에 대해서 2차 함수로 주어진 성능지수를 이용한 최적제어 문제에서 도출되었으며 명시적인 제어법칙을 가지고 있는 제어기이다. LQR은 linear quadratic regulator의 약자로서 시스템이 선형(linear)이며 성능지수가 2차함수(quadratic)라는 의미이다. regulator는 시스템의 상태를 0 (또는 set point로 불리는 고정된 목표 상태변수)으로 만드는 제어기를 뜻한다.

LQR은 PID 제어기와 함께 실제 응용 문제에서 많이 사용되는 제어기이며, 모델기반(model-based) 강화학습에서도 응용되는 제어기이다.

 

 

그러면 LQR 문제를 수식으로 세워보자. 제어 대상 시스템은 선형으로서 다음과 같이 주어진다.

 

\[ \mathbf{x}_{t+1} = F_t \mathbf{x}_t+ G_t \mathbf{u}_t \tag{1} \]

 

여기서 \( \mathbf{x}_t \in R^n \)는 상태변수고, \( \mathbf{u}_t \in R^m \)은 제어변수다. 이 시스템이 최소화해야 할 성능지수는 다음과 같이 2차함수로 주어진다.

 

\[ J_t = \frac{1}{2} \mathbf{x}_N^T S_N \mathbf{x}_N +\frac{1}{2} \sum_{t=i}^{N-1} \left( \mathbf{x}_t^T Q_t \mathbf{x}_t + \mathbf{u}_t^T R_t \mathbf{u}_t \right) \tag{2} \]

 

여기서 \( [i,N] \)는 관심 시간 구간이며 초기 상태변수 \( \mathbf{x}_i \)주어졌다고 가정한다. \( Q_t, R_t, S_N \)은 대칭 행렬로서 각각 상태변수, 제어변수 및 최종 상태변수에 가해지는 가중치(weighting)를 나타내며 모든 시간스텝에 대해서 \( Q_t \ge 0, S_N \ge 0, R_t \gt 0 \)이다.

LQR문제는 시간 구간 \( [i,N] \)에서 성능지수를 최소화하는 최적 제어입력의 시퀀스 \( \{ \mathbf{u}_i^*, \mathbf{u}_{i+1}^*, \cdots , \mathbf{u}_{N-1}^* \} \)를 계산하는 것이다.

앞서 설명한 일반적인 최적제어 문제의 셋팅과 비교해 보면,

 

\[ \begin{align} & \mathbf{f}_t (\mathbf{x}_t , \mathbf{u}_t ) = F_t \mathbf{x}_t +G_t \mathbf{u}_t \\ \\ & g_t (\mathbf{x}_t , \mathbf{u}_t ) = \frac{1}{2} \left( \mathbf{x}_t^T Q_t \mathbf{x}_t + \mathbf{u}_t^T R_t \mathbf{u}_t \right) \\ \\ & \phi(N, \mathbf{x}_N ) = \frac{1}{2} \mathbf{x}_N^T S_N \mathbf{x}_N \end{align} \]

 

이므로, 최적제어 문제의 해를 이용하여 LQR문제를 풀면 다음과 같다.

 

\[ \begin{align} & \mathbf{x}_{t+1} = \mathbf{f}_t ( \mathbf{x}_t , \mathbf{u}_t )=F_t \mathbf{x}_t + G_t \mathbf{u}_t \tag{3-1} \\ \\ & \mathbf{\lambda}_t = \left( \frac{\partial \mathbf{f}_t}{\partial \mathbf{x}_t } \right) ^T \mathbf{\lambda}_{t+1} + \frac{\partial g_t}{\partial \mathbf{x}_t } = F_t^T \mathbf{\lambda}_{t+1} + Q_t \mathbf{x}_t \tag{3-2} \\ \\ & 0 = \left( \frac{\partial \mathbf{f}_t}{\partial \mathbf{u}_t } \right) ^T \mathbf{\lambda}_{t+1} + \frac{\partial g_t}{\partial \mathbf{u}_t} = G_t^T \mathbf{\lambda}_{t+1} + R_t \mathbf{u}_t \tag{3-3} \\ \\ & 0 = \left( \frac{\partial \phi}{\partial \mathbf{x}_N } -\mathbf{\lambda}_N \right) ^T d \mathbf{x}_N = (S_N \mathbf{x}_N -\mathbf{\lambda}_N )^T d \mathbf{x}_N \tag{3-4} \end{align} \]

 

식 (3-3)에 의하면 최적제어는 다음 식으로 주어진다.

 

\[ \mathbf{u}_t = - R_t^{-1} G_t^T \mathbf{\lambda}_{t+1} \tag{4} \]

 

가정에 의해서 \( R_t \gt 0 \)이므로 \( R_t \)의 역행렬은 존재한다. 식 (4)를 계산하려면 라그랑지 곱수 또는 동반 상태변수(costate)인 \( \mathbf{\lambda}_{t+1} \)를 알아야 한다. 동반 상태변수는 식 (3-2)를 이용해서 풀어야 하는데 최종 동반 상태변수인 \( \mathbf{\lambda}_N \)과 상태변수 \( \mathbf{x}_t \)를 알아야 한다.

한편 최적제어 (4)를 시스템 (3-1)에 인가하면 최적 경로 \( \mathbf{x}_t \)가 다음과 같이 생성된다.

 

\[ \mathbf{x}_{t+1} = F_t \mathbf{x}_t - G_t R_t^{-1} G_t^T \mathbf{\lambda}_{t+1} \tag{5} \]

 

결국 최적제어 문제를 풀기 위해서는 식 (3-2)와 식 (5)를 동시에 풀어야 한다.

 

\[ \begin{align} & \mathbf{\lambda}_t = F_t^T \mathbf{\lambda}_{t+1} + Q_t \mathbf{x}_t \tag{6} \\ \\ & \mathbf{x}_{t+1} = F_t \mathbf{x}_t - G_t R_t^{-1} G_t^T \mathbf{\lambda}_{t+1} \end{align} \]

 

하지만 식 (6)을 풀기는 매우 어렵다. 왜냐하면 동반 상태변수는 최종값 \( \mathbf{\lambda}_N \)을 이용하여 시간적으로 거슬러 올라가면서 풀어야 하고(backward), 상태변수는 초기 상태변수가 \( \mathbf{x}_i \)를 이용하여 시간적으로 정방향(forward)으로 진행하면서 풀어야 하기 때문이다.

초기 상태변수가 \( \mathbf{x}_i \)는 문제에서 주어졌지만 동반 상태변수는 최종값 \( \mathbf{\lambda}_N \)은 어떻게 계산할 수 있을까.

만약 시스템의 최종 상태변수가 정해지지 않고 계산되어야 한다면 \( d \mathbf{x}_N \ne 0 \)이므로 식 (3-4)를 이용할 수 있다. 식 (3-4)에 의하면,

 

\[ \mathbf{\lambda}_N = S_N \mathbf{x}_N \tag{7} \]

 

이다. 식 (7)은 최종 상태변수와 최종 동반 상태변수의 관계식이다.

만약 시스템의 최종 상태변수가 \( \mathbf{x}_N = \mathbf{r}_N \)으로 정해졌다면 \( d \mathbf{x}_N = 0 \)이므로 식 (3-4)는 자동적으로 만족된다.

 

 


최종 상태변수를 계산해야 하는 문제를 자유최종상태(free-final-state) 문제라고 하고, 최종 상태변수가 정해진 문제를 고정최종상태(fixed-final-state) 문제라고 한다. 두 문제를 굳이 구별하는 이유는 두 문제에서 얻어지는 최적제어 법칙이 매우 다르기 때문이다. 자유최종상태 문제에서는 최적제어는 피드백(closed-loop) 제어로 산출되는 반면, 고정최종상태 문제에서는 최적제어가 오픈루프(open-loop) 제어로 산출된다.

 

 

댓글0