간단한 최적제어 문제를 풀어보고자 한다. 최적제어 문제는 최종시간이 설정된(fixed) 값으로 주어지는지 아닌지, 그리고 최종 상태변수가 설정된 값으로 주어지는지 아닌지에 따라 다양하게 분류할 수 있다. 대개의 경우 초기시간과 상태변수 초기값은 설정된 값으로 주어진다.
먼저 최종시간과 최종 상태변수가 모두 주어진 경우다. 연속시간 비선형 시스템의 최적제어의 필요조건을 정리한 다음 표에 의하면, 이 경우 경계조건은 자동으로 만족된다.
일정한 속력 \(V\) 로 움직이는 비행체가 있다. 제어 목적은 비행체가 출발지에서 출발하여 비행 시간 \(t_f\) 가 경과한 후 목적지에 최소의 에너지를 사용하여 도착시키는 것이다. 그림에 비행체와 목적지, 출발지간의 기하하적인 관계가 나와 있다.
비행체의 운동 방정식은 다음과 같다.
\[ \begin{align} & \dot{x}= V \cos \theta \tag{1} \\ \\ & \dot{y} =V \sin \theta \\ \\ & \dot{\theta} = \frac{a}{V} \end{align} \]
여기서 \(a\) 는 비행체의 가속도로서 제어변수, \(\theta\) 는 \(x\) 축과 비행체의 속도벡터 사이의 각으로서 비행 방향각을 나타낸다.
\(\theta\) 가 매우 작다고 가정한다면 위 식은 다음과 같이 선형화할 수 있다.
\[ \begin{align} & \dot{x}\approx V \tag{2} \\ \\ & \dot{y} \approx V \theta \\ \\ & \dot{\theta} = \frac{a}{V} \end{align} \]
위 식에서 첫번째 식은 자명한 식이므로 최적제어 문제의 시스템 동역학 식에서 제외하도록 한다. 목적함수와 구속조건은 다음과 같다.
\[ \begin{align} & J=\frac{1}{2} \int_0^{t_f} a^2 (t) \ dt \tag{3} \\ \\ & \ \ y(0)=0, \ \theta (0)= \theta_0 \\ & \ \ y(t_f )=0, \ \theta (t_f )= \theta_f \end{align} \]
최적제어 문제의 기호에 맞게 초기 및 최종 상태변수 제약조건을 다시 써보자.
\[ \begin{align} & \psi_1=y(0)=0 \tag{4} \\ \\ & \psi_2= \theta (0)- \theta_0=0 \\ \\ & \psi_3=y(t_f )=0 \\ \\ & \psi_4= \theta (t_f )-\theta_f=0 \end{align} \]
해밀토니안(Hamiltonian) 함수는 다음과 같이 정의된다.
\[ H= \frac{1}{2} a^2+ \lambda_1 V \theta + \lambda_2 \frac{a}{V} \tag{5} \]
그러면 코스테이트 방정식과 정정조건(stationary condition)을 다음과 같이 얻을 수 있다.
\[ \begin{align} -\dot{\lambda}_1 &= \frac{\partial H}{\partial y} =0 \tag{6} \\ \\ - \dot{\lambda}_2 &= \frac{\partial H}{\partial \theta}= \lambda_1 V \\ \\ 0 &= \frac{\partial H}{\partial a} = a+ \frac{\lambda_2}{V} \end{align} \]
위 식으로부터 코스테이트와 최적 제어변수를 계산하면 다음과 같다.
\[ \begin{align} \lambda_1 &= c_1 \tag{7} \\ \\ \lambda_2 &= -c_1 Vt + c_2 \\ \\ a &=- \frac{\lambda_2}{V}=c_1 t- \frac{c_2}{V} \end{align} \]
여기서 \(c_1, \ c_2\) 는 미지의 상수이다. 위 식을 시스템 운동 방정식에 대입하면 상태변수를 다음과 같이 계산할 수 있다.
\[ \begin{align} \dot{\theta} &= \frac{a}{V} = \frac{c_1}{V} t-\frac{c_2}{V^2} \tag{8} \\ \\ & \to \theta (t) = \frac{c_1}{2V} t^2- \frac{c_2}{V^2} t+ c_3 \\ \\ \dot{y} &= V \theta = \frac{c_1}{2} t^2- \frac{c_2}{V} t+ c_3 V \tag{9} \\ \\ & \to y(t)= \frac{c_1}{6} t^3- \frac{c_2}{2V} t^2+ c_3 Vt+c_4 \end{align} \]
이제 미지수 \(c_1, \ c_2, \ c_3, \ c_4\) 를 구하면 된다.
식 (4)의 제약조건 식을 이용하면 4개의 미지수를 구할 수 있다.
\[ \begin{align} y(0) &= 0=c_4 \tag{10} \\ \\ \theta (0) &= \theta_0= c_3 \\ \\ y(t_f ) &= 0 = \frac{c_1}{6} t_f^3- \frac{c_2}{2V} t_f^2+ \theta_0 Vt_f \\ \\ \theta (t_f ) &= \theta_f= \frac{c_1}{2V} t_f^2- \frac{c_2}{V^2} t_f+ \theta_0 \end{align} \]
\(c_1, \ c_2\) 는 다음과 같이 계산된다.
\[ \begin{align} c_1 &= \frac{6V ( \theta_0+ \theta_f )}{t_f^2} \tag{11} \\ \\ c_2 &= \frac{2V^2 (2 \theta_0+ \theta_f )}{t_f} \end{align} \]
따라서 최적 가속도 명령은 다음과 같다.
\[ \begin{align} a^* (t) &= c_1 t-\frac{c_2}{V} \tag{12} \\ \\ &= \frac{6V(\theta_0+ \theta_f )}{t_f^2 } t - \frac{2V( 2 \theta_0+ \theta_f )}{t_f} \end{align} \]
식 (8)과 (9)에 의해 최적 경로는 다음과 같이 계산된다.
\[ \begin{align} y^* (t) &= \frac{V(\theta_0 + \theta_f )}{t_f^2 } t^3- \frac{V(2 \theta_0+\theta_f )}{t_f} t^2+ \theta_0 Vt \tag{13} \\ \\ \theta^* (t) &= \frac{3( \theta_0+\theta_f )}{t_f^2 } t^2- \frac{2( 2 \theta_0+ \theta_f )}{t_f} t+ \theta_0 \end{align} \]
최적 목적함수 값은 다음과 같다.
\[ \begin{align} J^* (\theta_0, \theta_f) &= \frac{1}{2} \int_0^{t_f} a^{*2} (t) \ dt \tag{14} \\ \\ &= \frac{2V^2}{t_f} (\theta_0^2+\theta_0 \theta_f + \theta_f^2) \end{align} \]
이번에는 최종 상태변수의 일부만 주어진 경우 최적제어를 구해보자. 위 예제에서 최종시간에서 \(y(t_f )\) 은 주어지지만 \(\theta(t_f)\) 에 관한 제약조건은 없다면 어떻게 될까.
식 (3)을 수정한다.
\[ \begin{align} & J=\frac{1}{2} \int_0^{t_f} a^2 (t) \ dt \tag{15} \\ \\ & \ \ y(0)=0, \ \theta (0)= \theta_0 \\ & \ \ y(t_f )=0 \end{align} \]
초기 및 최종 상태변수 제약조건도 다음과 같이 수정된다.
\[ \begin{align} & \psi_1=y(0)=0 \tag{16} \\ \\ & \psi_2= \theta (0)- \theta_0=0 \\ \\ & \psi_3=y(t_f )=0 \end{align} \]
해밀토니안 함수는 식 (5)와 동일하다.
\[ H= \frac{1}{2} a^2+ \lambda_1 V \theta + \lambda_2 \frac{a}{V} \tag{17} \]
따라서 코스테이트 방정식과 정정조건(stationary condition)도 동일하다.
\[ \begin{align} -\dot{\lambda}_1 &= \frac{\partial H}{\partial y} =0 \tag{18} \\ \\ - \dot{\lambda}_2 &= \frac{\partial H}{\partial \theta}= \lambda_1 V \\ \\ 0 &= \frac{\partial H}{\partial a} = a+ \frac{\lambda_2}{V} \end{align} \]
코스테이트와 최적 제어변수도 같다.
\[ \begin{align} \lambda_1 &= c_1 \tag{19} \\ \\ \lambda_2 &= -c_1 Vt + c_2 \\ \\ a &=- \frac{\lambda_2}{V}=c_1 t- \frac{c_2}{V} \end{align} \]
시스템 운동 방정식에 대입하여 계산한 상태변수도 식 (8), (9)와 동일하다.
\[ \begin{align} y(t) &= \frac{c_1}{6} t^3- \frac{c_2}{2V} t^2+ c_3 Vt+c_4 \tag{20} \\ \\ \theta (t) &= \frac{c_1}{2V} t^2- \frac{c_2}{V^2} t+ c_3 \end{align} \]
여기서 \(c_1, \ c_2, \ c_3, \ c_4\) 는 미지의 상수이다. 이 미지수를 계산하려면 식 4개가 필요하다. 하지만 식 (4)와 달리 식 (16)으로 주어지는 제약조건은 3개로서 1개가 부족하다.
최종시간 \(t=t_f\) 에서의 경계조건에 의하면 \(y(t_f )\) 는 정해지고 \(\theta (t_f )\) 는 계산해야 하므로, \(dt_f=0, \ dy(t_f )=0, \ d \theta (t_f ) \ne 0\) 이다. 따라서 표에 있는 경계조건 식에 의하면
\[ \begin{align} & \left( \left( \frac{\partial \psi}{\partial \mathbf{x}} \right)^T \nu - \lambda \right) _{t_f}^T d \mathbf{x}(t_f )=0 \tag{21} \\ \\ & - \lambda_2 (t_f ) \ d \theta (t_f )=0 \ \ \to \ \ \lambda_2 (t_f)=0 \end{align} \]
가 된다. 따라서 미지수를 풀 수 있는 식이 하나가 더 추가되었다.
일단 식 (16)의 초기 제약을 식 (20)에 대입하면 상태변수 초기값을 위 식에 대입하면 다음과 같이 2개의 미지수를 계산할 수 있다.
\[ \begin{align} y(0) &=0 =c_4 \tag{22} \\ \\ \theta(0) &= \theta_0=c_3 \end{align} \]
식 (21)과 (19)로부터 미지수 \(c_2\) 는 다음과 같이 계산된다.
\[ \begin{align} & \lambda_2 (t_f )=0=-c_1 Vt_f+c_2 \tag{23} \\ \\ & \ \ \to c_2=c_1 Vt_f \end{align} \]
식 (16)의 최종 제약 식에 의하면
\[ \begin{align} y(t_f ) &= 0= \frac{c_1}{6} t_f^3- \frac{c_2}{2V} t_f^2+ \theta_0 Vt_f \tag{24} \\ \\ &= -\frac{c_1}{3} t_f^3+ \theta_0 Vt_f \\ \\ \to \ \ & c_1= \frac{3 \theta_0 V}{t_f^2 } \end{align} \]
이 되고, 이를 식 (23)에 대입하면
\[ c_2= \frac{3 \theta_0 V^2}{t_f} \tag{25} \]
가 된다. 따라서 최적 가속도 명령은 다음과 같다.
\[ \begin{align} a^* (t) &= c_1 t- \frac{c_2}{V} \tag{26} \\ \\ &= \frac{3 \theta_0 V}{t_f^2} t- \frac{3 \theta_0 V}{t_f} \end{align} \]
최적 경로는 다음과 같다.
\[ \begin{align} y^* (t) &= \frac{\theta_0 V}{2t_f^2 } t^3- \frac{3 \theta_0 V}{2t_f } t^2+ \theta_0 Vt \tag{27} \\ \\ \theta^* (t) &= \frac{3 \theta_0}{2t_f^2 } t^2- \frac{3 \theta_0}{t_f} t+ \theta_0 \end{align} \]
최종 시간에서 최적 비행 방향각은 다음과 같다.
\[ \theta^* (t_f) = - \frac{\theta_0}{2} \tag{28} \]
이 값은 초기시간과 최종시간에서 비행각이 \(\theta_0\) 와 \(\theta_f\) 로 설정되었을 때 계산된 최적 목적함수 값인 식 (14)에서 \(J^* (\theta_0, \theta_f)\) 에서 \(\theta_f\) 에 대한 최소값을 구한 것과 같다. 즉,
\[ \begin{align} & \frac{\partial J^* (\theta_0, \theta_f )}{\partial \theta_f}=0= \theta_0+2 \theta_f \\ \\ & \ \ \to \ \ \theta_f=- \frac{\theta_0}{2} \end{align} \]
최적 목적함수 값은 다음과 같다.
\[ \begin{align} J^* (\theta_0) &= \frac{1}{2} \int_0^{t_f} a^{*2} (t) \ dt \tag{29} \\ \\ &= \frac{3 \theta_0^2 V^2 }{2t_f} \end{align} \]
'유도항법제어 > 최적제어' 카테고리의 다른 글
[Continuous-Time] 고정최종상태 (Fixed-final-state) LQR (0) | 2023.04.13 |
---|---|
[Continuous-Time] 최종상태제약 (Final-state-constrained) LQR (0) | 2023.04.08 |
[Continuous-Time] 최적제어 문제 (0) | 2022.12.13 |
[MPC] MPC를 위한 두가지 QP 모델 - 2 (0) | 2022.12.03 |
[MPC] MPC를 위한 두가지 QP 모델 - 1 (0) | 2022.11.30 |
댓글