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

[MPC] MPC를 위한 두가지 QP 모델 - 2

by 깊은대학 2022. 12. 3.

MPC(model predictive control) 문제를 최적화 문제인 QP(quadratic program)문제로 변환할 때 널리 사용되는 일반적인 방법( https://pasus.tistory.com/229 )은 모델이 조밀해져서 문제의 구조가 손실되는 단점이 있다.

 

고속 MPC(fast MPC)에서는 QP 문제로 변환할 시 적절한 변수 재정렬을 사용하여 희소(sparse)구조를 최대로 이용할 수 있도록 특별한 방법으로 변환하며, 최적화 기법을 적용할 시 warm start, fixed iteration, early termination등의 휴리스틱 기법을 이용하여 MPC 계산량을 대폭 줄이는 방법을 사용한다. fast MPC알고리즘은 스탠퍼드의 Boyd 교수와 그 제자의 논문인 'Fast Model Predictive Control Using Online Optimization'에 자세히 설명되어 있다. 여기서는 fast MPC에서 사용된 QP 변환 모델을 유도해 보고자 한다.

MPC는 다음과 같은 제약조건을 갖는 선형 시스템에서

 

(1)xt+1=Axt+Butyt=Cxt(2)     uminut+iumax,   i=0,...,N1     yminyt+iymax,   i=1,...,N

 

매 시간 스텝마다 다음 목적함수가 일정 성능 예측구간 [t, t+N] 에서 최적화되도록 제어입력의 시퀀스 ut:t+N1=(ut,ut+1,...,ut+N1) 를 계산하는 문제다. 여기서 xtRn, utRp 이다.

 

(3)minut:t+N1J=xt+NTQfxt+N+i=0N1xt+iTQxt+i+ut+iTRut+i

 

식 (1)에 의하면 시간 스텝(time step) t 부터 t+N 까지 미래의 상태를 다음과 같이 계산할 수 있다.

 

(4)But+xt+1=AxtAxt+1But+1+xt+2=0Axt+2But+2+xt+3=0          Axt+N1But+N1+xt+N=0

 

식 (2)의 제약조건 수식은 다음과 같이 재구성할 수 있다.

 

(5)[II]ut+i[umaxumin],   i=0,...,N1[CC]xt+i[ymaxymin],   i=1,...,N

 

식 (3)의 목적함수도 다음과 같이 행렬 형식으로 표현할 수 있다.

 

(6)J=xtTQxt+[xt+1xt+2xt+N1xt+N][QQQQf][xt+1xt+2xt+3xt+N]        +[utut+1ut+N2ut+N1][RRRR][utut+1ut+2ut+N1]

 

이제 최적화 변수 z 를 다음과 같이 정의한다.

 

(7)z=[utxt+1ut+1ut+N1xt+N]  RN(n+p)

 

그러면 식 (6)의 목적함수를 다음과 같이 최적화 변수의 2차함수로 바꿀 수 있다.

 

(8)J~=zTHz

 

여기서 xtTQxt 는 최적화 대상이 아니기 때문에 제외하였으며,

 

H=[RQRQRQf]  RN(n+p)×N(n+p)

 

이다. 식 (5)의 제약조건도 다음과 같이 최적화 변수의 부등식으로 바꿀 수 있다.

 

(9)Pzh

 

여기서

 

P=[ICCICC]  R2N(n+p)×N(n+p),   h=[umaxxmaxxmaxuminxminxmin]

 

이다.

 

 

시스템 방정식 (4)는 다음과 같이 최적화 변수의 등식으로 바꿀 수 있다.

 

(10)Dz=b

 

여기서

 

D=[BI000000ABI00ABII00ABI]  RNn×N(n+p),b=[Axt0000]  RNn

 

이다. 식 (8)-(10)에 의하면 식 (1)-(3)의 MPC 최적화 문제는 다음과 같이 QP 최적화 문제로 변환된다.

 

(11)minzJ~=zTHzsubject to   Pzh,    Dz=b

 

위 최적화 문제의 해는 xt 값에 대한 z=(ut,xt+1,ut+1,...,xt+N) 으로서 제어입력과 상태변수의 최적 시퀀스이다.

 

 

식 (11)의 QP 문제의 행렬과 벡터의 구조를 보면 널리 사용되는 일반적인 방법과는 달리 MPC 모델의 구조가 훼손되지 않았고 희소(sparse)행렬임을 알 수 있다. 따라서 범용 QP 솔버 대신 이를 최대로 이용할 수 있는 특화된 QP 솔버를 만들 수 있다.