You are on page 1of 26

1

MODEL PREDICTIVE CONTROL (MPC)

np horizonte de predição
m horizonte de controle m ≤ np
2

Estrutura de todos os algoritmos de controle


preditivo

•Leitura das entradas e saídas da planta


•Atualização da trajetória da saída com medidas da
planta e última ação de controle aplicada (usamos o
modelo do processo)
•Cálculo de uma sequência de ações de controle
(entrada) futuras que minimizem uma função do erro
da saída prevista (incluindo o efeito dessas ações)
•Implementação no processo real apenas da primeira
ação de controle
•Espera do próximo instante de amostragem
4

Respostas ao Degrau e Impulso

si , i = 1, 2, ! , N
coeficiente da resposta ao degrau unitário, no instante iT
N tempo de estabilização
hi , i = 1, 2, ! , N : resposta ao impulso
h1 = s1 , h2 = s2 − s1 , h3 = s3 − s2 , !
s1 = h1 , s2 = h2 + h1 , s3 = h3 + h2 + h1 , !
5

DMC – Dynamic Matrix Control

Predição da saída em k+1


N
yˆk +1 = ∑ hi uk +1− i (1)
i =1
para o instante k:
N
yˆk = ∑ hi uk − i (2)
i =1
N
(1)-(2) (
yˆk +1 − yˆk = ∑ hi uk +1− i − uk − i )
i =1
∆uk = uk − uk −1
N
yˆk +1 = yˆk + ∑ hi ∆uk +1− i (3)
i =1
Correção de yˆk +1 com o erro de ŷ no instante k:

ykc+1 = yˆk +1 + ( yk − yˆk )


yk valor real medido
yˆk predição da saída no instante k
c
yk +1 predição corrigida no instante k+1
6

d
Valor desejado para yˆk + 1 → yk + 1 .

No DMC ykd+ 1 = yksp

A equação (3) é válida também para qualquer instante k+j


N
yˆk + j = yˆk + j − 1 + ∑ hi ∆uk + j − i j = 1, 2, ..., np (4)
i =1

Assumindo que o erro é o mesmo para qualquer j.


ykc + j − yˆk + j = ykc + j − 1 − yˆk + j −1

e ykc = yk
N
ykc + j = ykc + j − 1 + ∑ hi ∆uk + j − i
i =1
para j = 1:
N
ykc + 1 = ykc + ∑ hi ∆uk +1− i
i =1

ykc + 1 = yk + h1∆uk + h2 ∆uk − 1 + h3∆uk − 2 + ! + hN ∆uk + 1− N


(5)
N
Vamos definir φ1 = ∑ hi ∆uk +1− i
i =2

(5) → ykc + 1 = yk + h1∆uk + φ1 (6)


φ1 é conhecido, pois só depende das ações de controle passadas.
7

Analogamente
j = 2:
N
ykc + 2 = ykc + 1 + ∑ hi ∆uk +2− i
i =1

ykc + 2 = ykc +1 + h1∆uk + 1 + h2 ∆uk + h3∆uk −1 + ! + hN ∆uk + 2− N


(7)
Definindo:
N
φ2 = ∑ hi ∆uk + 2− i
i =3
(7) fica
ykc + 2 = ykc + 1 + h1∆uk + 1 + h2 ∆uk + φ2 (8)
φ2 só depende das ações de controle passadas.
c
Substituindo yk +1 de (6), (8) fica

ykc + 2 = yk + ( h1 + h2 ) ∆uk + h1∆uk + 1 + φ1 + φ2

Para j = 3
ykc + 3 = yk + ( h1 + h2 + h3 ) ∆uk + ( h1 + h2 ) ∆uk + 1 + h1∆uk + 2 +
+ φ1 + φ2 + φ3
(9)
Daí, definimos:
N i i
φn = ∑ hi ∆uk + n − i Pi = ∑ φn si = ∑ h j
i = n +1 n =1 j =1
8

(6), (8), (9), … podem ser escritas


ykc +1 = yk + s1∆uk + P1

ykc + 2 = yk + s2∆uk + s1∆uk +1 + P2

ykc + 3 = yk + s3∆uk + s2∆uk +1 + s1∆uk + 2 + P3


" "
ykc + j = yk + s j ∆uk + s j −1∆uk +1 + ! + s1∆uk + j −1 + Pj

 ykc + 1 
   s1 0 0 ! 0 0   ∆uk   yk + P1 
 ykc + 2   s2 s1 0 ! 0 0   ∆uk + 1   yk + P2 
  = " " # # " "   
" 
 "    " +
  
 ykc + np −1   snp −1 snp − 2 ! ! s1 0   ∆uk + np − 2   yk + Pnp −1 
   snp snp −1 ! ! s2 s1   ∆uk + np −1   yk + Pnp 
 yk + np  
c    

(10)
ou
yc = S ∆u + yk + P
onde
yc valores previstos de y
S matriz dinâmica
∆ u ações de controle no instante k (será calculado)
P predições decorrentes das ações passadas
9

sp
Subtraindo yk de ambos os membros de (10):

 ysp − ykc+ 1 
 ksp   s1 0 0 ! 0 0   ∆uk   ek − P1 
 yk − yk + 2 
c  s2 s1 0 ! 0 0   ∆uk + 1   ek − P2 
   
 " =− " " " # " "  " +
  " 
    
 yksp − ykc+np −1   snp − 1 snp − 2 ! ! s1 0   ∆uk + np − 2   ek − Pnp −1 
 sp   snp snp − 1 ! !
 s2 s1   ∆uk + np −1   ek − Pnp 
 yk − yk + np 
c  

(11)
onde
sp
ek = yk − yk
em notação vetorial
e = − S ∆u + e´
e - vetor de erros entre os valores previstos e o valor desejado.
e’ - vetor de erros sem nenhuma ação de controle futura (malha
aberta).
11

Apenas os m primeiros elementos de ∆u (m<np) são diferentes de 0. A equação (11) fica:


 ysp − ykc +1 
 k   s1 0 ! 0 0 ! 0   ∆uk   ek − P1 
 yk − yk + 2 
sp c
 s2 s1 ! 0 0 ! 0   ∆uk +1   ek − P2 
   " " # " " # "     
 "   "
   
 yksp − ykc + m  = −  sm sm−1 ! s1 ! ! 0   ∆u e − Pm 
k + m −1  +  k
 sp c  s sm ! s2 s1 ! 0   0  ek − Pm +1 
 yk − yk + m+1   m+1    
 "   " " # " " # "  "   
 sp c   snp snp −1 ! snp −m snp −m−1 ! s1   0   ek − Pnp 
 yk − yk + np 
(12)
( e )np x 1 = − ( S )np x m ( ∆u )m x 1 + ( e´ )np x 1 (13)

o controlador calcula a saída em m instantes futuros, do instante atual k (uk) até k+m-1 ( uk + m − 1 ).
13

O MPC minimiza:
J = eT e = [ − S ∆u + e´] [ − S ∆u + e´]
T

isto é:
∂J
min J ⇒ = 0 ⇒ ST S ∆u − ST e´= 0
∂∆u

( )
T −1 T
∆u = S S S e´ (14)

explicitando as dimensões dos vetores e matrizes:




( )
∆um x 1 =  ST
m x np
( S )np x m  −1( ST )
 m x np
e´np x1

apenas a ação do instante k será implementada. Em k+1, repetimos


todo o processo, fazendo este instante assumir a posição k e
calculando tudo novamente: “Moving horizon”

Parâmetros de sintonia considerados até agora:


N - horizonte de convolução ou de estabilização
np - horizonte de predição ou otimização
m - horizonte de controle
Para atenuar as ações do controlador
J = eT e + ∆uT R ∆u (15)
R Fator de supressão (outro parâmetro de sintonia).
Daí:
∂J
( )
−1 T
= 0 ⇒ ∆u = S T S + R S e´ (16)
∂∆u

que é a expressão usual para o DMC sem restrições.


14

DMC MULTIVARIÁVEL

Sistema com nu manipuladas (entradas) e ny controladas (saídas).

Predição das saídas em função dos valores passados das entradas:


N nu
yˆ j ,k = ∑∑ h j , l , iul , k − i (17)
i =1 l =1
N horizonte de convolução
yˆ j ,k predição da saída j no instante k
h j ,l ,i resposta da saída j no instante i para um pulso na entrada l
ul ,k −i valor da entrada l no instante k-i
15

Na forma vetorial:
N
yˆk = ∑ H iuk − i (18)
i =1
onde
T
yˆk =  yˆ1,k yˆ2,k ! yˆny ,k 
T
uk −i = u 1,k −i u2,k −i ! unu ,k −i 
 h1,1, i h1,2, i ! h1, nu , i 
h h2,2, i ! h2, nu , i 
Hi =  2,1, i !
 " " # " 
 hny ,1, i hny ,2, i ! hny , nu , i 

Analogamente ao caso SISO, para o instante k+1 :


N
(
yˆk +1 − yˆk = ∑ Hi uk +1− i − uk − i )
i =1
Definindo
∆uk = uk − uk −1
N
yˆk +1 = yˆk + ∑ Hi ∆uk +1− i (19)
i =1
16

Correção da predição com a medida da saída


ykc +1 = yˆk +1 + ( yk − yˆk )
onde yk vetor das saídas reais no instante k
yˆk vetor das predições das saídas no instante k

ykc +1 vetor de predições corrigidas em k+1


valores desejados para as saídas
T
d
yk +1 = yk
sp
onde yksp =  y1,spk sp 
y2,spk ! yny
 ,k 

Predição em um instante qualquer no futuro:


N
yˆk + j = yˆk + j −1 + ∑ Hi ∆uk + j − i j = 1, 2, ..., np
i =1
Assumindo que o erro na predição é o mesmo para todos os
instantes futuros:

(
ykc + j = yˆk + j + ykc+ j −1 − yˆk + j −1 )
N
ykc + j = ykc+ j −1 + ( yˆk + j − yˆk + j −1 ) = ykc + j −1 + ∑ Hi ∆uk + j − i
i =1
c
yk = yk
pode ser escrita para qualquer instante no futuro, gerando os
valores das predições corrigidas para as ny saídas
17

 ykc + 1 
   S1 0 ! 0   yk + P1 
 yk + 2 
c
 S2 S1 ! 0   ∆uk   yk + P2 
   " " #   ∆uk +1   " 
 "  =     + 
 ykc + m   Sm Sm−1 ! S1  "  k
y + Pm
 
   " " ! "   ∆uk + m −1 ( nu.m) x1  " 
" 
 
 Snp Snp −1 ! Snp − m +1  y + P 
 k np 
 yk + np 
c ( ny.np ) x ( nu.m ) ( ny.np ) x1
 ( ny.np ) x1

(20)
onde
k i N
Sk = ∑ Hl , Pi = ∑ φn , φn = ∑ H j ∆uk + n− j
l =1 n =1 j = n +1
Forma vetorial
yc = S ∆u + yk + P (21)

ysp − yc = − S ∆u + ( ysp − yk − P)
e = − S ∆u + e ' (22)
18

Função objetivo que queremos minimizar:


J = eT e + ∆uT R∆u
∂J
( )
−1 T
= 0 ⇒ ∆u = ST S + R S e´
∂∆u

A matriz R de pesos das entradas tem a forma :


R = diag [ r1 r2 ! rnu r1 r2 ! rnu ! r1 ! rnu ]
ri é o peso da entrada i.

O vetor das ações de controle é dado por:


∆u =  ∆u1,k ∆u2,k ! ∆unu ,k ∆u1,k +1 ! ∆unu ,k +1 !
! ∆u1,k + m−1 ! ∆unu ,k + m−1 
onde só implementamos a primeira ação de controle de cada
variável manipulada.

Existem variáveis controladas que são mais importantes que outras


⇒ Vetor de pesos (ou importância) das saídas:
T
w =  w1 w2 ! wny 
Erros ponderados
We = −WS ∆u + We´
onde W = diag ( w w ! w )
Função objetivo
J = eT W T We + ∆uT R∆u (23)
∂J
( )
T T −1 T T
= 0 ⇒ ∆u = S W WS + R S W We´
∂∆u
19

O algoritmo QDMC

QDMC usa a mesma equação de predição da saída do DMC

e = − S ∆u + e ' (22)

e a mesma função objetivo:

1 1
J = eT W T We + ∆uT R∆u (23)
2 2

Substituindo (22) em (23):

1  1 T
J=

( − S ∆u + e´)T
W
T
W ( − S ∆ u + e´ ) ∆u R∆u
+
2 2
1
( ) 1
J =  ∆uT STW TWS + R ∆u  − e´T W T WS ∆u + e´T W TWe´
2  2
20

Problema de otimização do controlador

1 T
min J = ∆u H ∆u + cT ∆u
∆u 2
onde
H = S W WS + R
T T

cT = −e´T W TWS

Restrições:

1- Nos incrementos das manipuladas:

−∆umax ≤ ∆u ≤ ∆umax

1a) ∆u ≤ ∆umax
[ Im.nu ] ∆u ≤ ∆umax

1b) ∆u ≥ −∆umax
[ − Im.nu ] ∆u ≤ ∆umax

1a) e 1b) podem ser resumidas em

 Im.nu   ∆umax 
 − Im.nu  ∆u ≤  ∆umax 
21

2- Nos valores das manipuladas

umin ≤ u ≤ umax
Como
 uk   Inu 0 ! 0  ∆uk  uk −1 
 uk +1   Inu Inu ! 0  ∆uk +1  uk −1 
u= = "  " + " 
 "   " # "     
uk + m−1   Inu Inu ! Inu   ∆uk + m−1  uk −1 

u = N ∆u + uk −1

2a) u ≤ umax eqüivale a N ∆u ≤ umax − uk −1


2b) u ≥ umin eqüivale a − N ∆u ≤ uk −1 − umin

N  umax − uk −1 
2a e 2b:  − N  ∆u ≤  uk −1 − umin 
22

3- Nos valores das controladas

ymin ≤ y ≤ ymax

Para tentar forçar essa restrição, podemos usar

yc = S ∆u + yk + P
Assim impomos:

3a) y ≤ ymax
c

que fica: S ∆u ≤ ymax − yk − P

3b) y ≥ ymin
c

que fica: − S ∆u ≤ yk + P − ymin

Portanto

S   ymax − yk − P 
 − S  ∆u ≤  yk + P − ymin 
23

EXERCÍCIO

Para analisar o comportamento do QDMC, vamos considerar o


sistema:

 4.05 e −25 s 1.77 e −25 s 


 y1 ( s )   50 s + 1 
60 s + 1   u1 ( s ) 
 y (s)  =   
 2   5.39 e −15 s 5.72 e −15 s  u2 ( s ) 
 
 50 s + 1 60 s + 1 

para um período de amostragem T=5min, o horizonte de


estabilização N do sistema está em torno de 70.

Respostas ao degrau
24

Resposta ao Impulso

Vamos comparar o comportamento do sistema para várias


sintonias:
Caso np m W R
1 10 1 [1 1] [0 0]
2 40 1 [1 1] [0 0]
3 40 10 [1 1] [0 0]
4 40 10 [1 1] [10 10]
5 10 1 [1 10] [0 0]

RESTRIÇÕES:
umax=[85 120]'; umin=[70 105]'; Max. e Min. das entradas
dumax=[10 10]'; Variação máxima nas manipuladas
ymax=[230 330]'; ymin=[205 300]'; Max. e Min. das controladas
Valores iniciais u0=[75 110]'; y0=[210 305]';
Set-points ysp=[223 319]'
25

Caso I

Caso II
26

Caso III

Caso IV
27

Caso V

Aumentando np para 70.


28

Caso II com ∆umax = [0.1 0.1]

Caso II
29

Caso anterior com umax=[85 120]' → umax=[77 120]'

O valor final de y é [219.3917 319.9589]

You might also like