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

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

by 깊은대학 2022. 11. 30.

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) 를 계산하는 문제다.

 

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

 

실제 제어입력으로는 제어입력의 시퀀스에서 첫 번째 항인 ut 만을 사용한다.

 

위와 같은 동적 최적화 문제를 QP (quadratic program)문제로 변환한 후 정적 최적화 기법을 적용하여 푸는 것이 일반적인 MPC 알고리즘이다.

여기서는 QP 문제로 변환할 때 사용되는 두가지 방법에 대해서 알아보고자 한다.

먼저 가장 많이 사용되는 범용적 방법에 대해서 설명한다. 식 (1)에 의하면 시간 스텝(time step) t 부터 t+N 까지 미래의 상태를 다음과 같이 계산할 수 있다.

 

(4)xt+1=Axt+Butxt+2=Axt+1+But+1=A2xt+ABut+But+1     xt+N=ANxt+AN1But++ABut+N2+But+N1

 

식 (4)를 행렬 형식으로 바꾸면 다음과 같이 된다.

 

(5)[xt+1xt+2xt+3xt+N]=[AA2A3AN]xt+[B000ABB00A2BABB0AN1BAN2BABB][utut+1ut+2ut+N1]

 

또는 다음과 같이 표현할 수 있다.

 

(6)xt+1  t+N=Φxt+Γut  t+N1

 

여기서

 

xt+1  t+N=[xt+1xt+2xt+3xt+N],   ut  t+N1=[utut+1ut+2ut+N1],Φ=[AA2A3AN],   Γ=[B000ABB00A2BABB0AN1BAN2BABB]

 

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

 

(7)J=xt+NTQfxt+N+i=0N1xt+iTQxt+i+ut+iTRut+i=xtTQxt+[xt+1xt+2xt+N][QQQf][xt+1xt+2xt+N]         +[utut+1ut+N1][RRR][utut+1ut+N1]=xtTQxt+xt+1  t+NTQ¯xt+1  t+N+ut  t+N1TR¯ut  t+N1

 

여기서

 

Q¯=[QQQf],   R¯=[RRR]

 

이다. 식 (6)을 (7)에 대입하면 식 (7)은 다음과 같이 된다.

 

(8)J=xtTQxt+(Φxt+Γut  t+N1)TQ¯(Φxt+Γut  t+N1)          +ut  t+N1TR¯ut  t+N1=xtT(Q+ΦTQ¯Φ)xt+2xtTΦTQ¯Γut  t+N1          +ut  t+N1T(R¯+ΓTQ¯Γ)ut  t+N1=xtTYxt+2xtTFTut  t+N1+ut  t+N1THut  t+N1

 

여기서

 

Y=Q+ΦTQ¯Φ,   F=ΓTQ¯Φ,   H=R¯+ΓTQ¯Γ

 

이다. 식 (8)은 xt 의 값이 주어진다는 가정하에 최적화 변수가 ut  t+N1 인 2차 함수이다.

 

 

한편 식 (2)의 제약조건도 ut  t+N1 의 함수로 표현하기 위해서 수식을 다음과 같이 재 구성한다.

 

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

 

식 (9)를 시간 스텝별로 한 개의 식으로 표현하면 다음과 같이 된다.

 

(10)[II]ut+i[umaxumin],   i=0[00CC]xt+i+[II00]ut+i[umaxuminymaxymin],   i=1,...,N1[CC]xt+i[ymaxymin],   i=N

 

식 (10)에 있는 모든 시간스텝의 제약조건을 한데 묶으면 다음과 같다.

 

(11)[00M100MN][xt+1xt+N]+[E000EN100][utut+N1][b0b1bN]

 

또는

 

(12)M¯xt+1  t+N+E¯ut  t+N1b¯

 

이다. 여기서

 

Mi=[00CC],   Ei=[II00],   bi=[umaxuminymaxymin],   i=1,...,N1E0=[II],   b0=[umaxumin],   MN=[CC],   bN=[ymaxymin],M¯=[00M100MN],   E¯=[E000EN100],   b¯=[b0b1bN]

 

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

 

(13)M¯(Φxt+Γut  t+N1)+E¯ut  t+N1b¯

 

위 식은 다음과 같이 쓸 수 있다.

 

(14)(M¯Γ+E¯)ut  t+N1b¯M¯Φxt

 

정리하면 식 (1), (2), (3)으로 주어지는 MPC의 동적 최적화 문제는 다음과 같이 QP 최적화 문제로 변환된다.

 

(15)minut : t+N1J=xtTYxt+2xtTFTut  t+N1+ut  t+N1THut  t+N1subject to   (M¯Γ+E¯)ut  t+N1b¯M¯Φxt

 

여기서 xt 는 측정할 수 있다고 가정한다. 위 식에서 목적함수의 첫번째 항은 최적화 변수의 함수가 아니므로 최종적으로 다음과 같은 QP 문제를 유도할 수 있다.

 

(16)minut : t+N1J~=2xtTFTut  t+N1+ut  t+N1THut  t+N1subject to   (M¯Γ+E¯)ut  t+N1b¯M¯Φxt

 

QP 솔버는 여러가지가 있지만 만약 Matlab을 사용하여 풀려면 함수 'quadprog' 를 사용하면 된다.

 

범용 솔버를 사용하여 QP문제를 풀 경우 시간이 많이 소요되기 때문에 MPC는 전통적으로 샘플 시간이 초 또는 분 단위로 측정되는 느린 역학을 가진 시스템으로 적용이 제한되었다. 반응 속도가 빠른 시스템에 MPC를 구현하는 한 가지 방안으로 모든 상태변수에 대해서 제어값을 미리 오프라인해서 계산한 다음 제어값을 룩업 테이블(lookup table)의 형태로 온라인으로 구현하는 방법이 있다. 이것이 explicit MPC 또는 리얼타임 MPC의 아이디어이다.

이 방법의 단점은 테이블의 항목 수가 예측구간, 상태 및 입력변수의 차원에 따라 기하급수적으로 증가할 수 있어서 테이블을 조회하는 시간 역시 기하급수적으로 증가한다는 데 있다. 하지만 룩업 테이블 대신에 최근 발전하고 있는 인공 신경망 기술을 이용하여 테이블을 피팅한다면 고속으로 제어입력을 계산해 낼 수 있을 것으로 생각된다.