다음과 같이 선형 시스템이 있다.
\[ \dot{\mathbf{x}}=A \mathbf{x}+B \mathbf{u} \tag{1} \]
이 시스템의 초기 시간 \(t_0\) 와 초기 상태변수 \(\mathbf{x}(t_0)\) 는 주어졌다고 가정한다. 또한 최종 시간 \(t_f\) 와 최종 상태변수 \(\mathbf{x}(t_f)\) 도 미리 원하는 값 \(\mathbf{x}_f\) 로 설정되었다고 가정한다.
따라서 \(dt_0=0\), \(d\mathbf{x}(t_0 )=0\), \(dt_f=0\), \(d\mathbf{x}(t_f )=0\) 이 되기 때문에 최적제어의 필요조건을 정리한 표에 의하면 경계조건은 자동으로 만족된다.
이 시스템의 비용함수도 다음과 같이 고정된 시간 구간 \([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 \mathbf{x}+ \mathbf{u}^T R \mathbf{u} \right) \ dt \tag{2} \]
최종 상태변수가 고정됐기 때문에 비용함수에 포함되어 있는 최종 상태변수 함수 \(\mathbf{x}^T (t_f ) S_f \mathbf{x}(t_f )\) 는 중복이므로 \(S_f=0\) 으로 놓는다. 또한 해석적인 해를 얻기 위하여 \(Q=0\) 으로 한다. 그러면, 비용함수는 다음과 같이 간단하게 된다.
\[ J=\frac{1}{2} \int_{t_0}^{t_f} \mathbf{u}^T R \mathbf{u} \ dt \tag{3} \]
이와 같은 설정으로 얻어지는 최적제어 문제를 고정최종상태 LQR(fixed-final-state linear quadratic regulator) 문제라고 한다.
이 문제를 풀기 위해 먼저 해밀토니안(Hamiltonian) 함수를 정의한다.
\[ \mathcal{H}= \frac{1}{2} \mathbf{u}^T R \mathbf{u} + \lambda^T \left(A \mathbf{x}+B \mathbf{u} \right) \tag{4} \]
그러면 다음과 같이 상태변수와 코스테이트(costate) 미분 방정식을 얻을 수 있다.
\[ \begin{align} \dot{\mathbf{x}} &= \frac{\partial \mathcal{H}}{\partial \lambda} = A \mathbf{x}+B \mathbf{u} \tag{5} \\ \\ - \dot{\lambda} &= \frac{\partial \mathcal{H}}{\partial \mathbf{x}}=A^T \lambda \end{align} \]
코스테이트 미분 방정식은 상태변수와 독립이므로 다음과 같이 쉽게 해를 구할 수 있다.
\[ \lambda (t)=e^{A^T (t_f-t) } \lambda (t_f) \tag{6} \]
정정조건(stationary condition)은 다음과 같다.
\[ 0=\frac{\partial \mathcal{H}}{\partial \mathbf{u}}=B^T \lambda+R \mathbf{u} \tag{7} \]
따라서 최적제어는 식 (7)과 (6)으로부터 다음과 같이 계산할 수 있다.
\[ \begin{align} \mathbf{u}(t) &= -R^{-1} B^T \lambda (t) \tag{8} \\ \\ &= -R^{-1} B^T e^{A^T (t_f-t) } \lambda (t_f) \end{align} \]
식 (8)을 식 (1)에 대입하면 상태변수 미문 방정식은 다음과 같이 된다.
\[ \dot{\mathbf{x}} = A\mathbf{x}-BR^{-1} B^T e^{A^T (t_f-t) } \lambda (t_f) \tag{9} \]
위 식을 풀면 \(\mathbf{x}(t)\) 를 다음과 같이 계산할 수 있다.
\[ \mathbf{x}(t)=e^{A(t-t_0) } \mathbf{x}(t_0 )- \int_{t_0}^{t} e^{A(t-\tau)} BR^{-1} B^T e^{A^T (t_f-\tau) } \ d \tau \lambda (t_f) \tag{10} \]
위 식에 의하면 \(t=t_f\) 에서 \(\mathbf{x}(t_f )\) 를 다음과 같이 구할 수 있다.
\[ \mathbf{x}(t_f)=e^{A(t_f-t_0) } \mathbf{x}(t_0 )- \int_{t_0}^{t_f} e^{A(t_f-\tau)} BR^{-1} B^T e^{A^T (t_f-\tau) } \ d \tau \lambda (t_f) \tag{11} \]
이 값이 \(\mathbf{x}(t_f )= \mathbf{x}_f\) 가 되도록 \(\lambda(t_f) \) 를 계산해야 한다.
여기서 \(G(t)\) 를 다음과 같이 정의하면,
\[ G(t)=\int_{t}^{t_f} e^{A(t_f-\tau)} BR^{-1} B^T e^{A^T (t_f-\tau) } \ d \tau \tag{12} \]
\(\lambda (t_f)\) 를 다음과 같이 계산할 수 있다.
\[ \lambda (t_f )= -G^{-1} (t_0 ) \left( \mathbf{x}_f-e^{A(t_f-t_0 )} \mathbf{x}(t_0 ) \right) \tag{13} \]
마지막으로 식 (13)을 식 (8)에 대입하면 최적제어는
\[ \mathbf{u}(t)= R^{-1} B^T e^{A^T (t_f-t) } G^{-1} (t_0 ) \left( \mathbf{x}_f-e^{A(t_f-t_0 )} \mathbf{x}(t_0 ) \right) \tag{14} \]
이 된다. 이 최적제어는 현재의 상태변수와 무관하고 상태변수의 초기값과 최종값 \(\mathbf{x}_f\) 에만 영향을 받으므로 오픈루프(open-loop) 제어이다. 따라서 만약 어떤 이유로 시스템이 교란(perturbed)된다면 최종값에 도달하지 못할 수도 있다.
이제 최적제어가 초기 상태변수 \(\mathbf{x}(t_0 )\) 대신에 현재의 상태변수 \(\mathbf{x}(t)\) 의 함수가 되도록 식을 조금 변형해 보자.
식 (11)은 시간 \(t_0\) 에서 상태변수 \(\mathbf{x}(t_0 )\) 가 주어졌을 때 \(\mathbf{x}(t_f )\) 를 계산하는 식이다. 이 식은 임의의 시간 \(t_0 \le t_f\) 에서 상태변수 \(\mathbf{x}(t_0 )\) 가 주어졌을 때에도 모두 성립하는 식이기 때문에, 시간 \(t \le t_f\) 에서 상태변수 \(\mathbf{x}(t)\) 가 주어졌을 때에도 성립해야 한다.
\[ \mathbf{x}(t_f)=e^{A(t_f-t) } \mathbf{x}(t )- \int_{t}^{t_f} e^{A(t_f-\tau)} BR^{-1} B^T e^{A^T (t_f-\tau) } \ d \tau \lambda (t_f) \tag{15} \]
따라서 식 (13)은 다음과 같이 수정된다.
\[ \lambda (t_f )= -G^{-1} (t ) \left( \mathbf{x}_f-e^{A(t_f-t )} \mathbf{x}(t ) \right) \tag{16} \]
최적제어도 식 (17)과 같이 수정되므로 최적제어는 이제 최종 상태변수와 함께 현재의 상태변수 \(\mathbf{x}(t)\) 의 피드백 제어가 된다.
\[ \mathbf{u}(t)= R^{-1} B^T e^{A^T (t_f-t) } G^{-1} (t ) \left( \mathbf{x}_f-e^{A(t_f-t )} \mathbf{x}(t ) \right) \tag{17} \]
최적제어 (17)은 최종 상태가 제약된 LQR(final-state-constrained linear quadratic regulator) 최적제어의 일반적인 해를 통해서도 구할 수 있다. 앞선 포스팅(https://pasus.tistory.com/257)에서 유도해 본 일반적인 문제에서 \(S_f=0\), \(Q=0\), \(C=I\) 로 두면 간략화된 최적제어 문제와 일치한다. 이 조건에서 최적제어 문제의 해는 다음과 같이 된다.
\[ \begin{align} & \dot{V}=-A^T V, \ \ \ t \le t_f, \ \ \ V(t_f )=I \tag{18} \\ \\ & \dot{P}=V^T BR^{-1} B^T V, \ \ \ t \le t_f, \ \ \ P(t_f )=0 \tag{19} \\ \\ & \mathbf{u}(t)=-R^{-1} B^T V(t) P^{-1} (t) \left( \mathbf{x}_f-V^T (t) \mathbf{x}(t) \right) \tag{20} \end{align} \]
식 (19)에서 \(V(t)\) 를 풀면 다음과 같다.
\[ V(t)=e^{A^T (t_f-t)}, \ \ \ t \le t_f \tag{21} \]
식 (21)을 식 (19)에 대입하면 다음과 같이 된다.
\[ \dot{P}= e^{A(t_f-t)} BR^{-1} B^T e^{A^T (t_f-t)} \tag{22} \]
이 식을 풀면 \(P(t)\) 는 다음과 같다.
\[ P(t)= - \int_t^{t_f} e^{A(t_f-\tau)} BR^{-1} B^T e^{A^T (t_f-\tau) } \ d \tau \tag{23} \]
이제 식 (23)을 식 (12)와 비교해 보면, \(G(t)=-P(t)\) 가 됨을 알 수 있다. 따라서 최적제어 식 (20)은 식 (17)과 일치함을 확인할 수 있다.
'유도항법제어 > 최적제어' 카테고리의 다른 글
[Continuous-Time] LQR 예제 : 비례항법유도 법칙 (0) | 2023.04.23 |
---|---|
[Continuous-Time] LQR 예제 : 타격각 제어 (0) | 2023.04.22 |
[Continuous-Time] 최종상태제약 (Final-state-constrained) LQR (0) | 2023.04.08 |
[Continuous-Time] 최적제어 예제 (0) | 2022.12.14 |
[Continuous-Time] 최적제어 문제 (0) | 2022.12.13 |
댓글