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

[Continuous-Time] 무한구간 (Infinite-horizon) LQR

by 세인트 워터멜론 2023. 12. 21.

다음과 같은 선형 시스템과

 

\[ \dot{\mathbf{x}}=A \mathbf{x}+B \mathbf{u} \tag{1} \]

 

시간 구간 \([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} \]

 

목적함수를 최소화하는 최종자유상태 LQR (free-final-state linear quadratic regulator) 문제의 해는 다음과 같이 주어진다 (https://pasus.tistory.com/317).

 

\[ \begin{align} -\dot{S} &=SA+A^T S-SBR^{-1} B^T S+Q, \ \ \ \ \ t \le t_f, \ \ \ S(t_f )=S_f \tag{3} \\ \\ K(t) &= -R^{-1} B^T S(t) \\ \\ \mathbf{u}(t) &= K(t) \mathbf{x}(t) \end{align} \]

 

식 (1)과 (2)에서 시스템 행렬 \(A, \ B\) 및 상태변수와 제어입력 가중값 행렬 \(Q, \ R\) 이 모두 상수(constant) 행렬이더라도 식 (3)의 리카티(Riccati) 방정식의 해 \(S(t)\) 는 여전히 시간의 함수이므로 최적 피드백 게인(feedback gain) 행렬 (LQ 게인) \(K(t)\) 도 시간에 따라 변한다. 시간의 함수인 피드백 게인은 미리 계산해서 저장해 놓고 사용해야 하기 때문에 구현하기가 간단치 않으며 불편한 게 사실이다.

 

 

상수 행렬로 된 피드백 게인 \(K\) 를 얻을 수는 없을까? 즉,

 

\[ \begin{align} \mathbf{u}(t)=K \mathbf{x}(t) \tag{4} \end{align} \]

 

상수 피드백 게인을 구하기 위한 한 방법으로서 목적함수의 시간 구간을 무한대로 확장시켜보자. 초기 시간은 \(t_0=0\) 으로 보고 \(t_f\) 는 \(\infty\) 이므로 다음과 같은 목적함수를 상정한다.

 

\[ \begin{align} J= \frac{1}{2} \int_0^{\infty} \left( \mathbf{x}^T Q \mathbf{x}+ \mathbf{u}^T R \mathbf{u} \right) \ dt \tag{5} \end{align} \]

 

여기서 \(Q \ge 0, \ R \gt 0\) 이다. 이와 같이 목적함수 (5)를 최소화하는 최적제어 문제를 무한구간 LQR(infinite-horizon LQR) 문제라고 한다.

 

 

식 (4)를 식 (1)에 대입하면 다음과 같이 피드백 시스템을 얻을 수 있다.

 

\[ \begin{align} \dot{\mathbf{x}}=(A+BK) \mathbf{x} \tag{6} \end{align} \]

 

또한 식 (4)를 (5)에 대입하면 목적함수는 다음과 같이 된다.

 

\[ \begin{align} J=\frac{1}{2} \int_0^\infty \mathbf{x}^T (Q+K^T RK) \mathbf{x} \ dt \tag{7} \end{align} \]

 

이제 다음 식을 만족하는 상수 반정정 행렬(semi-positive definite matrix) \(S \ge 0\) 가 존재한다고 가정하자.

 

\[ \begin{align} \frac{d}{dt} \left( \mathbf{x}^T S \mathbf{x} \right)=- \mathbf{x}^T (Q+K^T RK) \mathbf{x} \tag{8} \end{align} \]

 

그러면 식 (7)은 다음과 같이 된다.

 

\[ \begin{align} J &= \frac{1}{2} \int_0^\infty -\frac{d}{dt} \left( \mathbf{x}^T S\mathbf{x} \right) \ dt \tag{9} \\ \\ &= \frac{1}{2} \mathbf{x}^T (0)S \mathbf{x}(0)- \frac{1}{2} \lim_{t \to \infty} \mathbf{x}^T (t)S \mathbf{x}(t) \end{align} \]

 

만약 피드백 시스템이 점근적으로 안정(asymptotically stable)하다면 \( \lim_{t \to \infty} \mathbf{x}(t) \to 0\) 이므로 위 식은 다음과 같이 된다.

 

\[ \begin{align} J = \frac{1}{2} \mathbf{x}^T (0)S \mathbf{x}(0) \tag{10} \end{align} \]

 

한편 식 (8)을 전개하면,

 

\[ \begin{align} \frac{d}{dt} \left( \mathbf{x}^T S \mathbf{x} \right) &= \dot{\mathbf{x}}^T S \mathbf{x}+ \mathbf{x}^T S \dot{\mathbf{x}} \tag{11} \\ \\ &= \mathbf{x}^T \left[ (A+BK)^T S+S(A+BK) \right] \mathbf{x} \\ \\ &=- \mathbf{x}^T (Q+K^T RK) \mathbf{x} \end{align} \]

 

이 되는데 위 식은 모든 \(\mathbf{x}\) 에 대해서 성립해야 하므로 다음 식을 만족해야 한다.

 

\[ \begin{align} S(A+BK)+(A+BK)^T S+K^T RK+Q=0 \tag{12} \end{align} \]

 

위 식에서 \(K\) 와 \(Q\) 가 주어지고 \(S\) 를 풀어야 하는 경우, 이를 리야프노프 방정식(Lyapunov equation)이라고 한다.

요약하면, 어떤 상수 피드백 게인 행렬 \(K\) 에 대해 식 (12)를 만족하는 반정정 행렬(semi-positive definite matrix) \(S \ge 0\) 가 존재하고 피드백 시스템이 안정하다면 목적함수 (7)은 식 (10)이 된다.

이제 이 결과를 사용하여 목적함수 \(J\) 를 최소화하는 행렬 \(K\) 를 계산해 보자.

먼저 식 (10)에서 \(X= \mathbf{x}^T(0) \mathbf{x}(0)\) 로 놓는다.

 

\[ \begin{align} J=\frac{1}{2} \mathbf{x}^T (0)S \mathbf{x}(0)= \frac{1}{2} tr(SX) \tag{13} \end{align} \]

 

이제 문제는 시스템의 운동모델 (1)을 만족하면서 식 (5)를 최소화하기 위한 피드백 게인 \(K\) 를 계산하는 문제는 제약조건 (12)를 만족하면서 식 (13)을 최소화하기 위한 \(K\) 를 계산하는 문제로 바뀌었다.

라그랑지 곱수(Lagrange multiplier) 방법을 이용하여 제약조건이 있는 최적화 문제를 제약조건이 없는 최적화 문제로 수정한다.

 

\[ \begin{align} H=\frac{1}{2} tr(SX)+ \frac{1}{2} tr(G \Lambda) \tag{14} \end{align} \]

 

여기서 \(\Lambda\) 는 \(n \times n\) 라그랑지 곱수 행렬이고 \(G=S(A+BK)+(A+BK)^T S+K^T RK+Q\) 이다. 행렬에 관한 미분 관계식 \( \frac{\partial }{\partial B} tr(ABC)=A^T C^T\) 를 이용하여 식 (14)를 미분하면 다음과 같다.

 

\[ \begin{align} 0 &= \frac{\partial H}{\partial \Lambda}=G=S(A+BK)+(A+BK)^T S+K^T RK+Q \tag{15} \\ \\ 0 &=\frac{\partial H}{\partial S} =(A+BK) \Lambda + \Lambda (A+BK)^T+X \\ \\ 0 & =\frac{\partial H}{\partial K}= RK \Lambda+B^T S \Lambda \end{align} \]

 

식 (15)의 세번째 식으로 \(K\) 를 계산할 수 있다.

 

\[ \begin{align} K=-R^{-1} B^T S \tag{16} \end{align} \]

 

식 (16)을 식 (12)에 대입하면 다음과 같이 된다.

 

\[ \begin{align} SA+A^T S-SBR^{-1} S+Q=0 \tag{17} \end{align} \]

 

이제 최종자유상태 LQR (free-final-state linear quadratic regulator) 문제의 해 (3)에서 리카티 방정식과 식 (17)을 비교해보면, 식 (17)은 리카티 방정식의 정정상태(steady-state) 해 \(S(\infty)\) 를 구하는 식이라는 것을 알 수 있다. 그래서 식 (17)을 대수 리카티 방정식(ARE, algebraic Riccati equation)이라고 한다.

이제 문제는 식 (17)을 만족하는 반정정 행렬(semi-positive definite matrix) \(S \ge 0\) 가 존재하는지 여부다. 대수 리카티 방정식의 해 \(S\) 가 반정정 행렬이기 위해서는 특별한 조건이 필요한데, 이에 대해서 증명없이 다음 정리(theorem)를 인용하고자 한다.

정리: \((A,\ B)\) 가 안정화가능(stabilizable)하다면 식 (17)에서 \(S \ge 0\) 인 대수 리카티 방정식의 해가 존재한다.

또 다른 문제는 피드백 게인 (16)을 사용한 피드백 시스템 (6)이 점근적으로 안정 (asymptotically stable)한지 여부다. 이에 대해서도 증명없이 다음 정리를 인용한다.

정리: \((A, \ \sqrt{Q})\) 가 관측가능(observable)하고 \((A, \ B)\) 가 안정화가능(stabilizable)하다면,
   대수 리카티 방정식의 유일한 정정행렬(positive-definite matrix) 해 \(S \gt 0\) 가 존재한다.
   그리고 피드백 시스템 \(\dot{\mathbf{x}}=(A+BK)\mathbf{x}\) 는 점근적으로 안정하다.

최종자유상태 LQR 문제와 무한구간 LQR 문제 사이에는 중요한 차이점이 두가지가 있다.

먼저 최종자유상태 LQR은 안정화가능성(stabilizable) 가정을 필요로 하지 않는다는 점이다. 시스템의 안정화가능성 여부에 상관없이 목적함수를 최소화하는데 최선을 다한다. 하지만 무한구간 LQR 에서는 안정화가능성 가정이 필요하다. 목적함수의 적분 구간이 무한대이므로 적분값이 발산할 가능성이 있기 때문이다.

두번째는 무한구간 LQR은 '정리'에서 제시한 조건만 충족한다면 안정성이 보장된다는 것이다. 물론 \(Q\) 와 \(R\) 이 다르면 행렬 \((A+BK)\) 의 고유값이 달라지지만 이 고유값의 실수부는 항상 \(0\) 보다 작다.

무한구간 LQR의 장점은 피드백 게인 행렬이 상수이기 때문에 구현이 매우 간단하고 피드백 시스템의 안정성이 보장된다는데 있다. 일반적으로 LQR 이라 하면 보통 무한구간 LQR을 일컫는다.

 

 

무한구간 LQR 문제를 정리하면 다음과 같다.

 

\[ \begin{align} & \mbox{시스템 모델:} \\ \\ & \ \ \ \ \ \dot{\mathbf{x}}=A \mathbf{x}+B \mathbf{u} \\ \\ & \mbox{목적함수:} \\ \\ & \ \ \ \ \ J=\frac{1}{2} \int_0^\infty \left( \mathbf{x}^T Q \mathbf{x}+ \mathbf{u}^T R \mathbf{u} \right) \ dt, \ \ \ Q \ge 0, \ \ R \gt 0 \\ \\ & \mbox{조건:} \\ \\ & \ \ \ \ \ (A, \ \sqrt{Q}) \ \mbox{관측가능 (observable),} \ \ \ (A, \ B) \ \mbox{안정화가능(stabilizable)} \\ \\ & \mbox{최적제어: } \\ \\ & \ \ \ \ \ 0=SA+A^T S-SBR^{-1} B^T S+Q \\ \\ & \ \ \ \ \ K=-R^{-1} B^T S \\ \\ & \ \ \ \ \ \mathbf{u}(t)=K \mathbf{x}(t) \end{align} \]

 

댓글