다음과 같은 선형 시스템이 있다.
\[ \dot{\mathbf{x}}=A(t) \mathbf{x}+B(t) \mathbf{u} \tag{1} \]
이 시스템의 초기 시간 \(t_0\) 와 초기 상태변수 \(\mathbf{x}(t_0)\) 는 주어졌다고 가정한다. 또한 최종 시간 \(t_f\) 도 주어졌다고 가정한다. 하지만 최종 상태변수에 관한 제약조건이 없다고 가정한다.
이 시스템의 목적함수도 다음과 같이 고정된 시간 구간 \([t_0, \ t_f]\) 에서 이차함수로 주어졌다고 하자.
\[ J=\frac{1}{2} \mathbf{x}^T (t_f ) S_f \mathbf{x}(t_f )+ \frac{1}{2} \int_{t_0}^{t_f} \left( \mathbf{x}^T Q(t) \mathbf{x}+ \mathbf{u}^T R(t) \mathbf{u} \right) \ dt \tag{2} \]
여기서 \(S_f \ge 0\), \(Q(t) \ge 0\), \(R(t) \gt 0\) 이다. 이와 같은 최적제어 문제는 목적함수를 최소화하면서 시스템의 최종 상태변수가 정해지지 않고 계산되도록 요구하는 것이므로 최종자유상태 LQR (free-final-state linear quadratic regulator) 문제라고 한다.
이 문제를 풀기 위해 먼저 해밀토니안 (Hamiltonian) 함수를 정의한다.
\[ \mathcal{H}= \frac{1}{2} \left( \mathbf{x}^T Q \mathbf{x}+ \mathbf{u}^T R\mathbf{u} \right)+ \lambda^T (A\mathbf{x}+B \mathbf{u}) \tag{3} \]
여기서 \(\lambda\) 는 라그랑지 곱수이다.
최적제어의 필요조건을 정리한 표에 의하면 다음과 같이 상태변수와 코스테이트(costate) 미분 방정식을 얻을 수 있다.
\[ \begin{align} \dot{\mathbf{x}} &= \frac{\partial \mathcal{H}}{\partial \lambda}=A \mathbf{x}+B \mathbf{u} \tag{4} \\ \\ -\dot{\lambda} &= \frac{\partial \mathcal{H}}{\partial \mathbf{x}}=Q\mathbf{x}+A^T \lambda \tag{5} \end{align} \]
상태변수와 코스테이트 미분 방정식을 풀기 위해서는 경계조건이 필요하다. 여기서는 초기 시간과 초기 상태변수, 그리고 최종 시간이 정해졌으므로 \(dt_0=0, \ d\mathbf{x}(t_0 )=0, \ dt_f=0\) 이 된다. 따라서 표의 경계조건에 의하면,
\[ S_f \mathbf{x}(t_f )- \lambda(t_f )=0 \tag{6} \]
을 얻을 수 있다. 정정조건 (stationary condition)은 다음과 같다.
\[ 0= \frac{\partial \mathcal{H}}{ \partial \mathbf{u}}=B^T \lambda+R \mathbf{u} \tag{7} \]
식 (7)에 의하면 최적제어 입력은 다음과 같이 계산할 수 있다.
\[ \mathbf{u}(t)=-R^{-1} B^T \lambda (t) \tag{8} \]
식 (8)을 (4)에 대입하면 식 (5)와 함께 다음과 같이 2개의 결합 미분 방정식을 얻을 수 있다.
\[ \begin{bmatrix} \dot{\mathbf{x}} \\ \dot{\lambda} \end{bmatrix}=\begin{bmatrix} A & -BR^{-1} B^T \\ -Q & -A^T \end{bmatrix} \begin{bmatrix} \mathbf{x} \\ \lambda \end{bmatrix} \tag{9} \]
식 (9)를 해밀토니안 시스템이라고 한다. 식 (9)에 의하면 해밀토니안 시스템은 초기값 \(\mathbf{x}(t_0)\) 와 최종값 \(\lambda(t_f )\) 주어진 2점 경계값 문제 (two-point boundary value problem)이다.
이제, 자유최종상태 LQR 문제를 풀어보자.
식 (6)은 최종 시간 \(t_f\) 에서만 적용되지만, 모든 시간 구간 \([t_0, \ t_f]\) 에서도 적용된다고 가정한다. 즉,
\[ \lambda (t)= S(t) \mathbf{x}(t) \tag{10} \]
만약 식 (10)을 만족하는 \(S(t)\) 를 구할 수 있다면 이러한 가정은 유효할 것이다. 식 (10)을 미분하고 식 (5)와 비교하면 다음과 같다.
\[ \begin{align} \dot{\lambda} &= \dot{S} \mathbf{x}+ S \dot{\mathbf{x}} \tag{11} \\ \\ &=-Q \mathbf{x}-A^T \lambda \end{align} \]
식 (4)와 (8)을 식 (11)에 대입하고 정리하면 다음과 같다.
\[ \begin{align} -\dot{S} \mathbf{x} &= S(A\mathbf{x}+B \mathbf{u})+Q \mathbf{x}+A^T \lambda \tag{12} \\ \\ &= \left( SA-SBR^{-1} B^T S+Q+A^T S \right) \mathbf{x} \end{align} \]
위 식은 모든 \(\mathbf{x}\) 에 대해서 성립해야 하므로, 다음 미분 방정식을 얻을 수 있다.
\[ \begin{align} -\dot{S} = SA+A^T S-SBR^{-1} B^T S+Q, \ \ \ \ \ t \le t_f, \ \ \ \ \ S(t_f )=S_f \tag{13} \end{align} \]
식 (13)은 시간적으로 역방향(backward)으로 풀 수 있는 식이다. 식 (6)을 통해서 식 (10)을 유추해 냈으므로 시간 \(t=t_f\) 일 때 \(S(t)\) 의 경계값은 최종 상태변수의 가중값 행렬인 \(S_f\) 가 된다. 따라서 식 (15)에 의해서 식 (10)이 타당한 가정임을 알 수 있다. 식 (13)을 리카티 방정식(Riccati equation)이라고 한다.
\(S_f\) 을 이용해서 시간적으로 역순으로 모든 시간에서 \(S(t)\) 를 계산하면 식 (8)로 다음과 같이 최적제어를 계산할 수 있다.
\[ \begin{align} \mathbf{u}(t)=-R^{-1} B^T \lambda (t)=-R^{-1} B^T S(t) \mathbf{x}(t) \tag{14} \end{align} \]
여기서 LQ 게인 \(K(t)\) 를 다음과 같이 정의하면,
\[ \begin{align} K(t)=-R^{-1} B^T S(t) \tag{15} \end{align} \]
최적제어는 다음과 같이 상태변수 피드백 제어의 형태가 된다.
\[ \begin{align} \mathbf{u}(t)=K(t) \mathbf{x}(t) \tag{16} \end{align} \]
LQ 게인은 상태변수에 비례하는 제어입력을 산출하는 비례 제어의 이득값이다. 행렬 \(A, \ B, \ Q, \ R\) 이 상수행렬이더라도 LQ 게인은 시간의 함수라는데 주의해야 한다.
최적제어를 시스템에 적용하면 다음과 같이 폐회로(closed-loop) 시스템을 얻을 수 있다.
\[ \begin{align} \dot{\mathbf{x}} = (A+BK) \mathbf{x} \tag{17} \end{align} \]
식 (15)에 의하면 LQ 게인은 상태변수의 궤적과 무관하게 계산할 수 있다. 따라서 최적제어인 식 (16)을 시스템에 직접 적용하기 전에 미리 LQ 게인을 계산해서 저장해 놓을 수 있다. 그런 후 순차적으로 LQ 게인을 꺼내서 식 (17)로 최적 궤적을 계산할 수 있다.
리카티 방정식 (13)은 LQ 게인 \(K(t)\) 를 이용하여 표현할 수도 있다.
\[ \begin{align} -\dot{S}=SA+A^T S-K^T RK+Q, \ \ \ \ \ t \le t_f \tag{18} \end{align} \]
또한 식 (17)의 폐회로 시스템 행렬로 표현할 수도 있다.
\[ \begin{align} -\dot{S}=S(A+BK)+(A+BK)^T S+K^T RK +Q, \ \ \ \ \ t \le t_f \tag{19} \end{align} \]
정리하면 다음과 같다.
\[ \begin{align} & \mbox{시스템 모델: } \\ \\ & \ \ \ \ \ \dot{\mathbf{x}} =A(t) \mathbf{x}+B(t) \mathbf{u} \\ \\ & \mbox{목적함수: } \\ \\ & \ \ \ \ \ J= \frac{1}{2} \mathbf{x}^T (t_f ) S_f \mathbf{x}(t_f )+ \frac{1}{2} \int_{t_0}^{t_f} \left( \mathbf{x}^T Q(t) \mathbf{x}+ \mathbf{u}^T R(t) \mathbf{u} \right) \ dt, \ \ \ S_f \ge 0, \ Q \ge 0, \ R \gt 0 \\ \\ & \mbox{최적제어:} \\ \\ & \ \ \ -\dot{S}=SA+A^T S-SBR^{-1} B^T S+Q, \ \ \ \ \ t \le t_f, \ \ S(t_f )=S_f \\ \\ & \ \ \ \ \ K(t)=- R^{-1} B^T S(t) \\ \\ & \ \ \ \ \ \mathbf{u}(t)=K(t) \mathbf{x}(t) \end{align} \]
'유도항법제어 > 최적제어' 카테고리의 다른 글
[Continuous-Time] 경로 제약조건이 있는 최적제어 문제 (0) | 2024.05.07 |
---|---|
[Continuous-Time] 무한구간 (Infinite-horizon) LQR (0) | 2023.12.21 |
[PSOC-12] 예제 : 램버트 문제 (Lambert’s problem) (0) | 2023.09.23 |
[PSOC-11] 가우스 유사 스펙트럴 (GPM) 기반 최적제어 (0) | 2023.07.20 |
[PSOC-10] 라다우 유사 스펙트럴 (RPM) 기반 최적제어 (0) | 2023.07.18 |
댓글