You are on page 1of 43

UNIVERSIDADE ESTADUAL PAULISTA

JLIO DE MESQUITA FILHO

Ilha Solteira

Campus de Ilha Solteira - SP

Resolvendo LMIs com o MATLAB:


Curso de Yalmip
com solvers LMILab e SeDuMi

Autores:
Emerson R. P. da Silva

e.ravazzi@bol.com.br

Luiz Francisco S. Buzachero

luiz.buzachero@yahoo.com.br

Ilha Solteira - SP
Maio / 2011

Sumrio

1 Introduo

1.1

Pr-requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.2

Definio dos pacotes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.3

Objetivo do curso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2 Instalao

3 Introduo ao Yalmip

Exemplo 3.0.1: Controle de nvel de tanques . . . . . . . . . . . . . . . . . . . . .

3.1

Estabilidade segundo Lyapunov . . . . . . . . . . . . . . . . . . . . . . . .

11

3.2

Realimentao dos estados . . . . . . . . . . . . . . . . . . . . . . . . . . .

13

Exemplo 3.2.1: Sistema de suspenso ativa para assento de carro . . . . . . . . . .

15

3.3

Projeto timo H2 usando LMIs . . . . . . . . . . . . . . . . . . . . . . . .

17

3.4

Projeto timo H usando LMIs . . . . . . . . . . . . . . . . . . . . . . . .

19

4 Controle Robusto

22

4.1

Realimentao dos estados para sistemas incertos . . . . . . . . . . . . . . .

22

4.2

Custo garantido H2 usando LMIs . . . . . . . . . . . . . . . . . . . . . . .

28

4.3

Custo garantido H usando LMIs . . . . . . . . . . . . . . . . . . . . . . .

35

Referncias Bibliogrficas

42

Introduo

1.1

Pr-requisitos

Noes bsicas de LMIs.


Noes bsicas de informtica.
- Estrutura de arquivos e pastas.
- Compactao de arquivos.
Noes bsicas do MATLAB.

1.2

Definio dos pacotes

Yalmip: Esse pacote (toolbox) permite que problemas envolvendo programao matemtica sejam representados de maneira mais natural no MATLAB. Ele pode ser usado em diversas
situaes. Por exemplo: em problemas de programao linear, programao inteira e mista,
problemas de programao semi-definida e em desigualdades matriciais bilineares. Uma das
grandes vantagens desse pacote que ele apresenta suporte para vrios solvers (resolvedores).
Por exemplo, esse pacote pode resolver LMIs com o LMILab (solver do LMI control toolbox)
ou com o Sedumi. Uma lista completa com todos os solvers que esse pacote suporta pode ser
encontrada no arquivo yalmip.htm que est dentro da pasta yalmip.
LMILab: O LMIlab o solver de LMIs padro do Matlab. Este solver diferentemente do
Sedumi resolve apenas LMIs, assim, para os alunos que esto iniciando o estudos de LMIs
prefervel utilizar este solver a princpio atravs da opo opts=sdpsettings(solver,lmilab)
que ser detalhada mais a frente. O LMILab vem com o pacote Robust Control Toolbox do
MATLAB 2009.

1.3 Objetivo do curso

Sedumi: Esse pacote um solver para problemas de programao semi-definida. Nesse trabalho ele ser usado exclusivamente para a soluo de LMIs. Atualmente os dois solvers mais
usados na literatura especializada so o LMILab e o Sedumi. E o Yalmip funciona mais rpido com o Sedumi. Da a motivao para usar esse pacote. O LMILab possui um algoritmo
baseado no mtodo de pontos interiores, e a sua complexidade dada por: K 3 L. J o Sedumi
usa uma tcnica de otimizao sobre cones homogneos duais, e a sua complexidade dada
por: K 2 L2,5 + L3,5 , sendo K o nmero de variveis escalares e L o nmero de linhas usadas nas
LMIs. Assim, dependendo do problema um solver ser mais rpido que o outro. Atualmente
comum encontrar na literatura especializada, trabalhos em que o autor compara as solues
obtidas por esses dois solvers.

1.3

Objetivo do curso

Esse texto apresenta os comandos bsicos do pacote Yalmip, necessrios para a soluo de
LMIs no MATLAB.

Instalao

O CD de instalao do MATLAB no vem com esses pacotes. Dessa forma eles precisam
ser instalados manualmente. Os pacotes podem ser baixados pela internet nas seguintes URLs:
Sedumi 1.1R3 (verifique a verso compatvel com seu MATLAB)
http://sedumi.ie.lehigh.edu/
Yalmip
http://users.isy.liu.se/johanl/yalmip/
Depois do download o usurio ter baixado dois arquivos compactados (ZIP ou RAR). Use
um descompactador e extraia o contedo dos arquivos em uma pasta.

A extrao do arquivo vai criar as pastas yalmip e SeDuMi_1_1.

2 Instalao

Os arquivos necessrios para a instalao dos pacotes j esto prontos, agora s falta mapear
essas pastas no MATLAB.
SUGESTO: Para evitar ficar com arquivos espalhados pelo computador, interessante
mover as pastas yalmip e SeDuMi_1_1 para dentro da pasta toolbox do MATLAB.

2 Instalao

Para fazer o mapeamento (ou instalao) dos pacotes no MATLAB deve-se ir em: Menu
Files Set Path...

Ao clicar nessa opo abre-se a seguinte janela:

Aperte no boto Add with Subfolders e navegue at o local onde est a pasta yalmip,
selecione-a e aperte o boto OK.

2 Instalao

Observao 2.1. Se o usurio seguiu a sugesto da pg. 5, ento a pasta yalmip est dentro
da pasta toolbox do MATLAB.
Repita esse procedimento com a pasta SeDuMi_1_1. No final do procedimento o MATLAB ter adicionado o contedo dessas pastas no MATLAB search path.
Agora aperte no boto SAVE e depois CLOSE.
Para testar se os pacotes foram instalados corretamente basta o usurio digitar yalmiptest
na linha de comando do MATLAB

Se os pacotes foram instalados corretamente o yalmip far um teste completo para verificar quais solvers esto disponveis no MATLAB. ATENO, se o sedumi foi instalado corretamente, ento o resultado do yalmip ser igual ao da figura abaixo:

2 Instalao

Uma vez que os pacotes foram instalados, ento agora vamos comear a ilustrar o uso do
yalmip para a soluo de LMIs no MATLAB.

Introduo ao Yalmip

Exemplo 3.0.1: Controle de nvel de tanques

O sistema que se pretende controlar um sistema didtico de controle de nvel produzido


pela Quanser Innovate Educate. Trata-se de dois tanques acoplados em cascata, conforme
mostrado na figura (3.1).

Figura 3.1: Sistema didtico de controle de nvel.


A bomba envia a gua verticalmente para os tanques atravs dos orifcios de sadas 1 e 2.
A bomba alimenta o tanque 1, que, por sua vez, alimenta o tanque 2. O problema de controle
est em atuar na tenso da bomba afim de manter o nvel de gua do tanque 2 em 15cm (ponto

3 Introduo ao Yalmip

10

de operao onde o sistema foi linearizado). Os dois tanques so geometricamente iguais, ou


seja, possuem o mesmo formato e as mesmas dimenses: rea da seo transversal, altura e
orifcio de sada.

Figura 3.2: Esquematico do controle de nvel.


Tem-se assim que o modelo em espao de estados do sistema dado por:
" #
" . # a1 q g
0
L1
L1
A
2L
= a 1 q g10 a q g
.
1
2
L2
L2
A2
2L10 A2
2L20

(3.1)

Onde os parmetros do sistema so dados na tabela abaixo.


Tabela 3.1: Parmetos do sistema
Descrio

Parametro

Valor

rea da base do tanque 1 (cm2 )

A1

15,518

rea da base do tanque 2 (cm2 )

A2

15,518

rea do orifcio de sada do tanque 1 (cm2 )

a1

0,178

rea do orifcio de sada do tanque 2 (cm2 )

a2

0,178

Nvel inicial do tanque 1 (cm)

L10

15

Nvel inicial do tanque 2 (cm)

L20

15

Constante da bomba (cm3 /sV )

km

4,6

Aceletrao da gravidade (cm/s2 )

981

3.1 Estabilidade segundo Lyapunov

3.1

11

Estabilidade segundo Lyapunov

Primeiramente vamos comear com o critrio de estabilidade segundo Lyapunov. Para tanto
considere um sistema linear autnomo dado por:
.

x(t) = Ax(t).

(3.2)

Da teoria de estabilidade de Lyapunov, sabe-se que o sistema (3.2) assintoticamente estvel se e somente se, existir uma matriz simtrica P satisfazendo as seguintes LMIs:
A P + PA < 0

(3.3)

P>0

(3.4)

Agora ns vamos apresentar alguns comandos do pacote yalmip, necessrios para a soluo
de LMIs do sistema apresentado acima. Substituindo os parmetros da tabela (3.1) na equao
(3.1), teremos:
". #
L1
.

L2

"

#" #
L1

0, 0656

0, 0656

0, 0656

L2

(3.5)

Este sistema necessita de uma entrada de controle para o seu funcionamento. Assim, vamos
analisar apenas se a natureza do mesmo estvel ou instvel.
A verificao de estabilidade do sistema (3.1) realizada no MATLAB da seguinte maneira:
Programa 1: Estabilidade segundo Lyapunov
1)A = [-0.0656 0; 0.0656 -0.0656];
2)P = sdpvar(2,2);
3)Restr = set(P > 0) + set(A*P+P*A < 0);
4)opts=sdpsettings(solver,lmilab);
5)solvesdp(Restr,[],opt);
6)[r,d] = checkset(Restr);
7) if sum(r < 0) == 0
8)

disp(Sistema estvel)

9)

P_feasible = double(P);

10) else
11)

disp(Sistema instvel)

12) end

3.1 Estabilidade segundo Lyapunov

12

Nesse caso a nica varivel do problema a matriz P, que dever ser encontrada pelo
solver. Para definir uma varivel no yalmip usa-se o comando sdpvar (linha 2). Assim teremos
os seguintes argumentos para o comando sdpvar(n,m,field,type).
n = no de linhas da matriz;
m = no de colunas da matriz;
field = real,complex, diz se a matriz varivel real ou se assume nmeros complexos;
type = symmetric,full,hermitian,toeplitz,hankel, skew,diz se a matriz varivel simtrica, completa, ...
Observe na linha 2) do programa que os argumentos field e type foram omitidos. Na verdade esses argumentos so muito pouco usados. Por exemplo, se a matriz varivel quadrada,
ento o yalmip entende que sdpvar(2,2) equivalente : sdpvar(2,2,real,symmetric) . A
linha 3) mostra como devemos armazenar as restries do problema. Todas as restries (LMIs)
do problema devem ser escritas dentro do comando set() e armazenadas dentro de uma varivel,
nesse caso Restr. Essa varivel usada na linha 5) para resolver as LMIs. A funo solvesdp da
linha 5) o comando que diz para o yalmip resolver as LMIs. O solvesdp usado para resolver
qualquer problema de otimizao. Assim teremos os seguintes argumentos para o comando:
sol = solvesdp(Restr,obj,opts).
sol = estrutura contendo as principais informaes sobre o processo de resoluo das LMIs.
Por exemplo, a estrutura mostra se o solver teve algum problema numrico durante os clculos,
se o solver encontrou uma soluo factvel, tempo gasto pelo yalmip para montar as LMIs e
tempo gasto pelo solver para resolv-las.
Restr = Essa varivel contm as LMIs do problema (veja linha 3).
obj = Essa varivel representa a funo objetivo do problema.
Por default o yalmip entende que a varivel obj uma funo de minimizao, quando existir a
necessidade maximizao, o usurio dever multiplicar a varivel obj pelo sinal negativo (-obj)
. Esse argumento tambm pode ser vazio ([ ]) , veja por exemplo na linha 4) do Programa 1,
como ns queramos apenas uma soluo factvel, ento a varivel obj vazia (obj=[ ]) .
opts = essa varivel contm uma estrutura do tipo sdpsettings .

3.2 Realimentao dos estados

13

Com ela podemos alterar o solver usado pelo solvesdp , para resolver o problema. Esse parmetro discutido com mais detalhes mais a frente. A prinpio o aluno dever setar o solver LMIlab
atravs da opo opts=sdpsettings(solver,lmilab) na linha 4), que soluciona apenas LMIs
evitando assim gerar resultados quando houver erro de programao.
Ao longo do texto a funo solvesdp discutida com mais detalhes! A funo checkset
(linha 6) obtm os resduos das restries do problema de otimizao Primal e Dual. Esses
detalhes podem ser ignorados pelo usurio agora no incio, sendo necessrio apenas saber como
verificar se a soluo obtida pelo solvesdp realmente satisfaz as restries LMI.
Isso feito na linha 7) com o lao if. A funo double da linha 9) converte a estrutura P
(matriz varivel do yalmip) em uma matriz numrica.
Resolvendo o Programa 1 no MATLAB se obtm os seguintes valores:
#
"
1, 2013 0, 0491
P=
, sendo os autovalores de P: 1, 1470 e 1, 2456.
0, 0491 1, 1912
Observe que os autovalores matriz P so positivos, logo a matriz definida positiva, alm
disso, os autovalores da matriz A P + PA so negativos (0, 2448 e 0, 0755). Ento, existe
uma matriz P satisfazendo as condies de Lyapunov (3.3) e (3.4) e, portanto o sistema (3.5)
assintoticamente estvel.
Um detalhe importante a ser mencionado, que nem sempre a resposta obtida pelo solvesdp
satisfatria e por isso a funo checkset tem sempre que ser usada para verificar as restries
LMI.
Deste ponto em diante usaremos o yalmip para resolver diversos problemas de teoria de
controle. Sempre que algum recurso novo for usado, ele ser devidamente comentado.

3.2

Realimentao dos estados

Considere o sistema dinmico


.

x(t) = Ax(t) + Bu(t).

(3.6)

sendo x(t) R os estados do sistema, A Rnn e B Rnm matrizes conhecidas e u(t) Rm


a entrada de controle. O projeto de controladores com realimentao de estados consiste em
encontrar uma matriz K Rmn tal que ao realimentar o sistema (3.6) com a entrada u(t) =

3.2 Realimentao dos estados

14

Kx(t), o sistema em malha fechada


.

x(t) = (A BK)x(t),

(3.7)

torna-se assintoticamente estvel.


O controlador K que garante a estabilidade assinttica de (3.7) pode ser encontrado com a
soluo das LMIs
AX + XA BG G B < 0

(3.8)

X >0

(3.9)

sendo que o controlador K desejado dado por K = GX 1 .


Consideremos agora uma entrada de controle no sistema de controle de nvel apresentado
anteriormente.

"

.
L1
.
L2

g
a1
A1
2L10
q
g
a1
A2
2L10

a2
A2

0
q

g
2L20

"

L1
L2

"

Km
A1

Substituindo os parmetros da tabela (3.1) na equao (3.1), teremos:


" . # "
#"
# "
#
L1
0.0656
0
L1
0.2075
=
+
u
.
L2
0.0656 0.0656
L2
0

(3.10)

(3.11)

Os autovalores desse sistema so: 0, 0656 e 0, 0656, logo o sistema estvel. O nosso
objetivo projetar um controlador K considerando como entrada de controle a tenso aplicada
na bomba, de modo que o sistema (3.11) tenha o desempenho adequado.
Programa 2: Projeto da realimentao dos estados
13) A = [-0.0656 0; 0.0656 -0.0656];
14) B = [0.2075; 0];
15) X = sdpvar(2,2);
16) G = sdpvar(1,2);
17) Restr = set(X > 0) + set(A*X+X*A-B*G-G*B < 0);
18)opts=sdpsettings(solver,lmilab);
19) solvesdp(Restr,[],opt);
20) [r,d] = checkset(Restr);

3.2 Realimentao dos estados

15

21) if sum(r < 0) == 0


22)

disp(O sistema pode ser controlado)

23)

X = double(X);

24)

G = double(G);

25)

K = G*inv(X)

26)

Autovalor = eig(A-B*K)

27) else
28)

disp(O sistema NO pode ser controlado)

29) end
Observe as linhas 15) e 16), como j foi comentado antes, quando a matriz quadrada o
yalmip automaticamente entende que a matriz simtrica, na linha 15) o comando equivalente
:
X = sdpvar(2,2,real,symmetric) ;
J na linha 16) a matriz possui o nmero de linhas diferente do nmero de colunas, dessa
forma o comando equivalente :
G = sdpvar(1,2,real,full);
Um ponto importante a ser mencionado que o parmetro field ainda no foi usado, e
provavelmente nunca ser. Quando o parmetro field omitido o spdvar entende que a varivel
real. Essa definio j o suficiente para resolver a maioria dos problemas envolvendo o
projeto de LMIs.
Resolvendo o Programa 2 no MATLAB obtm-se os seguintes valores:
X=

"

1, 2415

#
0, 0690

,
0, 0690 1, 3795
i
h
G = 2, 5991 0, 4361 ,
h
i
K = GX 1 = 2, 1169 0, 4220 .
Sendo os autovalores da matrix A BK: 0, 4914 e 0, 0791.

Exemplo 3.2.1: Sistema de suspenso ativa para assento de carro

No modelo para suspenso ativa de assento de carro da Figura (3.3) Mc a massa do carro
e ms a massa do assento juntamente com a massa do motorista. O sistema de amortecimento

3.2 Realimentao dos estados

16

do carro composto pela mola km e pelo amortecedor b1 . O sistema de suspenso ativa composto pela mola k2 e pelo amortecedor b2 . Este modelo foi retirado de trabalhos j publicados
(ASSUNO; FARIA; TEIXEIRA, 2008; PASCOAL; ASSUNO; TEIXEIRA, 2009) e foi
utilizado para comparao entre os mtodos de projeto com otimizao.
O problema consiste em atenuar as vibraes indesejveis que possam ocorrer no assento
do motorista devido a pistas de rodagem irregulares. Dessa forma, pode-se aumentar o amortecimento da vibrao da massa atravs do projeto de um controlador que atue sobre u1 (t) e
u2 (t).
x2 (t)
ms

Motorista + Assento
u2 (t)

k2

b2

Sistema de suspenso ativa do assento

x1 (t)
Mc
Carro

u1 (t)
km

b1
Sistema de suspenso ativa do carro
Pneu

Figura 3.3: Sistema com suspenso ativa de assento de carro.


.

Os estados x1 (t) e x2 (t) esto disponveis para realimentao. Sendo x3 (t) = x1 (t) e x4 (t) =
.

x2 (t), o sistema cujas sadas so y1 (t) = x1 (t) e y2 (t) = x2 (t) tm a representao em espao de

3.3 Projeto timo H2 usando LMIs

17

estados descrita em (3.12) (ASSUNO; FARIA; TEIXEIRA, 2008).

.
0
x(t) = k
2
ms
k2
Mc

y(t) =

"

k2
ms
km k2
Mc #

mb2s

b2
ms
b1 b2
Mc

1 0 0 0
0 1 0 0

b2
Mc

x(t)

x(t) + 1

ms

0
0
u(t) + w(t)
0
0

Mc

1
Mc

(3.12)

3.3

Projeto timo H2 usando LMIs

At o momento nenhum problema envolvendo otimizao foi usado. Contudo muito


comum problemas de otimizao em LMIs. Por exemplo, considere o sistema dinmico dado
por:
(.
x = Ax + B1 w + B2 u

(3.13)

y = Cx

Sendo w uma entrada exgena (rudo) no sistema. O nosso objetivo projetar um controlador L Rmn tal que o rudo w tenha a menor influncia possvel no comportamento dinmico
do sistema (3.13) realimentado com a entrada u = Lx. Esse projeto pode ser feito minimizando a norma H2 entre a entrada w e a sada y. Que equivalente ao seguinte problema de
otimizao:

min
s.a.

"

B1

B1

> 0,

"
#
AX + XA B2Y Y B2 XC
CX

(3.14)
< 0,

> Tr(Z).

Especificando em (3.12) Mc = 1500 kg para a massa do carro e ms = 100 kg para a massa


do assento (20 kg) somada massa do motorista, que se supe de 70 kg. Adotaram-se os

3.3 Projeto timo H2 usando LMIs

18

parmetros restantes como km = 4 104 N/m, b1 = 4 103 Ns/m, k2 = 5 103 N/m e b2 =


5 102 Ns/m. Desta forma as matrizes que representam o sistema so descritas abaixo:

0
0
1

0
0
0

A=
50
50
5

3, 3333 30 0, 3333

B1 =

26, 66

0
0

0
0
1

, B2 =
0, 01
0
5

0, 0007 0, 0007
3
0

e C=

"

1 0 0 0
0 1 0 0

Esse problema pode ser resolvido no MATLAB com o seguinte cdigo:


Programa 3: Minimizando a norma H2
30) A = [0 0 1 0; 0 0 0 1; -50 50 -5 5; 3,3333 -30 0,3333 -3];
31) B1 = [0; 0; ]; 26.66];
32) B2 = [0 0; 0 0; 0.01 0; -0.0007 0.0007];
33) C = [1 0 0 0; 0 1 0 0];
34) n= size(A,1);
35) m1=size(B1,2);
36) m2=size(B2,2);
37) mC=size(C,1);
38) IdC = eye(mC);
39) rho = sdpvar(1);
40) X = sdpvar(n,n);
41) Z = sdpvar(m1,m1);
42) Y = sdpvar(m2,n);
43) Restr = set(rho >= trace(Z)) + set([Z B1;B1 X]>0) + ...
set([A*X+X*A-B2*Y-Y*B2 X*C;C*X -IdC]<0);
44) sol = solvesdp(Restr,rho);
45) [p,d]=checkset(Restr);
46) if sum(p < 0) == 0
47)
48)
49)

disp(O sistema pode ser controlado)


X = double(X)
Y = double(Y)

3.4 Projeto timo H usando LMIs

50)

L = Y*inv(X)

41)

Autovalor_AN = eig(A-B2*L)

19

52) else
53)

disp(O sistema NO pode ser controlado)

54) end
Nesse programa comeamos a usar comandos para automatizar o processo da criao das
LMIs. Os comandos das linhas 34) 37) so usados para armazenar o nmero de linhas (ou
colunas) das matrizes A, B1 , B2 e C. Esse tipo de operao interessante porque permite que as
LMIs sejam facilmente reaproveitadas para a soluo de outros exemplos numricos. A linha
38) cria uma matriz identidade de dimenso 3x3 (nmero de linhas da matriz C) que ser usada
na LMI da linha 43.2). A grande novidade nesse programa que ele representa um problema de
otimizao. Para resolver um problema desse tipo, basta carregar a funo objetivo no segundo
argumento do comando solvesdp (linha 44). O trao de uma matriz pode ser calculado com o
comando trace . Como foi mencionado anteriormente, o solvesdp entende que para minimizar
o escalar , se fosse um problema de maximizao, ento teramos que multiplicar a funo
objetivo pelo sinal negativo. Dessa forma, o comando da linha 44) seria reescrito como: max =
solvesd p(Restr, ). O yalmip NO consegue calcular a dimenso de matrizes escalares em
LMIs, por exemplo, se na linha 43.2) colocssemos -1 ao invs de IdC = eye(3) , o programa
iria gerar um erro de dimensionamento. Esse detalhe muito importante, j que o pacote LMI
control toolbox faz isso automaticamente. Ao implementar LMIs no yalmip deve-se ter muita
ateno no dimensionamento das matrizes escalares (identidades ou matrizes nulas). A partir
desse ponto no exibiremos as solues encontradas pelo MATLAB. O leitor poder ver os
resultados executando os respectivos arquivos do MATLAB que acompanham o material.

3.4

Projeto timo H usando LMIs

Da mesma forma como realizou-se o projeto timo H2 , podemor realizar o projeto timo
H . Considere o sistema dinmico dado por (3.13). Sendo w uma entrada exgena (rudo) no
sistema. O nosso objetivo projetar um controlador L Rmn tal que seja atenuada a influencia
do rudo w na sada do sistema (3.13) realimentado com a entrada u = Lx. Esse projeto pode
ser feito minimizando o a norma H entre a entrada w e a sada y. Que equivalente ao seguinte
problema de otimizao:

3.4 Projeto timo H usando LMIs

20

min

B Y Y B XC +Y D

AX
+
XA
B

2
1
2

< 0,

CX
+
DY
I
0

I
B
0

X > 0.

Dadas as matrizes

1
2 1
1
1

0
3
0
0
2

,
B
=
A1 =

1 0 2 3 1 1

2 1 2 1
0

0 0
0

1
0 0

,
B
=
2

0
0 0

0 1
0

1
0
1
0

.
eC=
0
0
0
0

0 0 0 0
1

Esse problema pode ser resolvido no MATLAB com o seguinte cdigo:


Programa 4: Minimizando a norma H

55) A = [0 0 1 0; 0 0 0 1; -50 50 -5 5; 3.3333 -30 0.3333 -3];


56) B1 = [0; 0; 0; 26.66];
57) B2 = [0 0; 0 0; 0.01 0; -0.0007 0.0007];
58) C = [1 0 0 0; 0 1 0 0];
59) n= size(A,1);
60) m1=size(B1,2);
61) m2=size(B2,2);
62) mC=size(C,1);
63) D = zeros(mC,m2);
64) IdC = eye(mC);
65) IdB = eye(m1);
66) mu = sdpvar(1);
67) X = sdpvar(n,n);
68) Y = sdpvar(m2,n);
69) Restr = set(X > 0) +...
set([A*X+X*A-B2*Y-Y*B2
C*X+D*Y
B1
70) sol = solvesdp(Restr,mu)
71) [p,d]=checkset(Restr);

X*C+Y*D
-IdC

(3.15)

B1;
zeros(mC,m1);

zeros(m1,mC) -mu*IdB]<0);

3.4 Projeto timo H usando LMIs

21

72) if sum(p < 0) == 0


73)

disp(O sistema pode ser controlado)

74)

X = double(X)

75)

Y = double(Y)

76)

L = Y*inv(X)

77)

Autovalor_AN = eig(A-B2*L)

78) else
79)

disp(O sistema NO pode ser controlado)

80) end
Nesta aplicao houve a necessidade de se criar uma matriz de transmisso direta nula
(D = 0) de ordem adequada para a composio da LMI. Isto pode ser visto na linha 63) em que
o nmero de linhas igual ao da matriz C e o mero de colunas igual ao da matriz B2 .
A linha 64) cria uma matriz identidade de dimenso 3x3 (nmero de linhas da matriz C)
que ser usada na LMI da linha 69.2), e a linha 65) cria uma matriz identidade de dimenso 2x2
(nmero de culunas da matriz B1) que ser usada tambm na LMI da linha 69.3). A novidade
nesse programa que ele utiliza matrizes nulas para ajuste de dimensionameto da LMI. Note
que na LMI (3.4), existem blocos de zeros nas posies (2,3) e (3,2) da LMI, assim, a dimenso
dests blocos devem se adequar a suas respectivas posies: zeros(mC,m1) na posio (2,3) e
zeros(m1, mC) na posio (3,2), conforme linha linha 69.2) e 69.3).

22

Controle Robusto

4.1

Realimentao dos estados para sistemas incertos

Considere o sistema incerto:


.

x(t) = A( )x(t) + B( )u(t)

(4.1)

Sabe-se que uma condio suficiente para que seja garantida a estabilidade do sistema incerto (4.1) a existncia de matrizes X = X nn e G mn , tais que
A j X B j G + XAj G Bj < 0

(4.2)

X >0

(4.3)

com j = 1, ..., r.
Quando as LMIs (4.2) e (4.3) so factveis, uma matriz de realimentao de estados que
estabiliza o sistema pode ser dada por
K = GX 1

(4.4)

Como exemplo inicial de sistema incerto, considere o sistema de controle de nvel de tanques apresentado no Exemplo 3.0.1.
Para este sistema teremos dois parmetros incertos. O primeiro ser a constante km da
bomba podendo variar entre entre 30% e +10% de seu valor. O segundo parmetro incerto
ser a rea do orifcio de sada do sistema de tanques a2 , podendo variar entre seu valor total de
rea e uma queda de 20% desta rea, simulando um acumulo de resduos neste orifcio, o que
uma situao real para sistemas tanques.

4.1 Realimentao dos estados para sistemas incertos

23

Construir-se- portanto um politopos com 4 vrtices:


Vrtice 1 (30% de km e 20% de a2 ):

A1 =

g
a1
A1
2L10
q
g
a1
A2
2L10

0
q

a2 0,2a2
A2

g
2L20

"

Km 0,3Km
A1

"

Km +0,1Km
A1

e B1 =

Vrtice 2 (+10% de km e 20% de a2 ):

A2 =

g
a1
A1
2L10
q
g
a1
A2
2L10

0
q

a2 0,2a2
A2

g
2L20

e B2 =

Vrtice 3 (30% de km e valor total de a2 ):

A3 =

g
a1
A1
2L10
q
g
a1
A2
2L10

a2
A2

0
q

g
2L20

"

Km 0,3Km
A1

"

Km +0,1Km
A1

e B3 =

Vrtice 4 (+10% de km e valor total de a2 ):

A4 =

g
a1
A1
2L10
q
g
a1
A2
2L10

a2
A2

0
q

g
2L20

e B4 =

Substituindo os valores da tabela 3.1 nos vrtices do politopo teremos:


Vrtice 1:
A1 =

"

0, 0656

0, 0656

0, 0525

A1 =

"

0, 0656

0, 0656

0, 0525

A1 =

"

0, 0656

0, 0656

0, 0656

A1 =

"

0, 0656

0, 0656

0, 0656

e B1 =

"

0, 2075

e B1 =

"

0, 3261

e B1 =

"

0, 2075

e B1 =

"

0, 3261

Vrtice 2:
#

Vrtice 3:
#

Vrtice 4:
#

4.1 Realimentao dos estados para sistemas incertos

24

Programa 5: Projeto da realimentao dos estados para sistemas incertos


% Calcula um controlador por realimentaao de estados sujeito a taxa de
% decaimento usando o seguinte problema:
%

min beta

s.a AiX + XAi + BiG + GBi + 2gammaX < 0

%
%

X > 0

%
% As LMIs so programadas com o YALMIP

e podem ser resolvidas por qualquer

% resolvedor de LMIs compatvel com o YALMIP (SeDuM o padro).


%
% entradas : A1 a A4

-> matrizes dinmicas do sistema (vrtices).

B2 a B4

-> matrizes de entrada do sistema (vrtices).

-> matriz de sada do sistema.

%
% sadas : saida.V

-> nmero de variveis escalares.

saida.L

-> number de linhas de LMIs.

saida.X

-> varivel soluao C (se existir).

saida.K

-> controlador (se existir).

saida.norma

-> norma do controlador (inf. se for infactvel)

%
%Modelo do sistema incerto em espao de estados para o Tanque Quanser:
Area1=15.518;

%cm2

Area2=15.518;

%cm2

a1=0.178;

%cm2

a2=0.178;

%cm2

a21=a2-0.2*a2;

%parmetro incerto -20%

L10=15;

%cm

L20=15;

%cm

Km=4.6;

%cm3/sV

Km1=Km-0.3*Km;

%parmetro incerto -30%

Km2=Km+0.1*Km;

%parmetro incerto +10%

g=981;

%cm/s2

%O sistema possui duas incertezas, assim teremos quatro vrtices

4.1 Realimentao dos estados para sistemas incertos

25

% para o politopo de incertezas:


A1=[-(a1/Area1)*sqrt(g/(2*L10))
(a1/Area2)*sqrt(g/(2*L10))

0;
-(a2/Area2)*sqrt(g/(2*L20))];

B1=[(Km1/Area1); 0];
A2=[-(a1/Area1)*sqrt(g/(2*L10))
(a1/Area2)*sqrt(g/(2*L10))

0;
-(a21/Area2)*sqrt(g/(2*L20))];

B2=[(Km1/Area1); 0];
A3=[-(a1/Area1)*sqrt(g/(2*L10))
(a1/Area2)*sqrt(g/(2*L10))

0;
-(a2/Area2)*sqrt(g/(2*L20))];

B3=[(Km2/Area1); 0];
A4=[-(a1/Area1)*sqrt(g/(2*L10))
(a1/Area2)*sqrt(g/(2*L10))

0;
-(a21/Area2)*sqrt(g/(2*L20))];

B4=[(Km2/Area1); 0];
C=[0 1];
% Determina as dimenses do problema.
ordem

= size(A1,1);

entradas_c = size(B1,2);
% Inicializa a varivel que armazenar as LMIs do problema.
LMIs = set([]);
% Cria as variveis do problema.
X = sdpvar(ordem,ordem,symmetric);
G = sdpvar(entradas_c,ordem,full);
% Entra com as LMIs do problema
LMIs = set(A1*X + X*A1+ B1*G + G*B1

< 0) + ...

set(A2*X + X*A2+ B2*G + G*B2

< 0) + ...

set(A3*X + X*A3+ B3*G + G*B3

< 0) + ...

set(A4*X + X*A4+ B4*G + G*B4

< 0) + ...

4.1 Realimentao dos estados para sistemas incertos

26

set(X > 0);


% Determina o nmero de linhas de LMIs
saida.L = 0;
for i=1:size(LMIs,1)
saida.L = saida.L + size(LMIs{i},1);
end
% Determina o nmero de variveis escalares.
saida.V = size(getvariables(LMIs),2);
% Configurando o Solver.
%opts=sdpsettings(solver,sedumi);

% 2 tipos de solver para escolher

opts=sdpsettings(solver,lmilab);
% Finalmente, o problema de otimizao resolvido.
solucao = solvesdp(LMIs,[],opts);
% Acessa o menor resduo primal.
p=min(checkset(LMIs));
saida.delta = p;
saida.norma = inf;
% Capturando a soluo (se existir).
if p > -1e-7
saida.X

= double(X);

saida.K = double(G)*inv(saida.X);
saida.norma = norm(saida.K);
end
%Simulao para uma incerteza fixa (a21=-0.1*a2)
Area1=15.518;

%cm2

Area2=15.518;

%cm2

a1=0.178;

%cm2

a2=0.178;

%cm2

4.1 Realimentao dos estados para sistemas incertos

a21=a2-0.1*a2;

%parmetro incerto -20%

L10=15;

%cm

L20=15;

%cm

Km=4.6;

%cm3/sV

Km1=Km-0.3*Km;

%parmetro incerto -30%

Km2=Km+0.1*Km;

%parmetro incerto +10%

g=981;

%cm/s2

%O sistema continua com uma incertezas, assim teremos 2 vrtices


% para o politopo de incertezas:
Af=[-(a1/Area1)*sqrt(g/(2*L10))
(a1/Area2)*sqrt(g/(2*L10))

0;
-(a21/Area2)*sqrt(g/(2*L20))];

Bf=[(Km1/Area1); 0];
Aq=[-(a1/Area1)*sqrt(g/(2*L10))
(a1/Area2)*sqrt(g/(2*L10))

0;
-(a21/Area2)*sqrt(g/(2*L20))];

Bq=[(Km2/Area1); 0];
C=[0 1];
%Resposta condio inicial X0=[0.1 0.3] parmetro incerto Km -30%
AA1=[Af+Bf*saida.K];
BB1=Bf;
CC1=C;
DD1=[0];
X0=[1 2];
t=0:0.01:60;
[p,q]=size(t);
u=zeros(1,q);
[y,x]=lsim(AA1,BB1,CC1,DD1,u,t,X0);
y11=[0 1]*x;
%Resposta condio inicial X0=[0.1 0.3] parmetro incerto Km +10%
AA2=[Aq+Bq*saida.K];
BB2=Bq;
CC2=C;

27

4.2 Custo garantido H2 usando LMIs

28

DD2=[0];
X0=[1 2];
t=0:0.01:60;
[p,q]=size(t);
u=zeros(1,q);
[y,x]=lsim(AA2,BB2,CC2,DD2,u,t,X0);
y21=[0 1]*x;
% Plotando as respostas
subplot(2,1,1); plot(t,y11); hold on; grid
ylabel(estado x2 e Km -30%)
xlabel(t(s))
subplot(2,1,2); plot(t,y21); hold on; grid
ylabel(estado x2 e Km +10%)
xlabel(t(s))
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Este programa j est bem estruturado e comentado. A novidade aqui a plotagem para
uma certa condio inicial de dois pontos de operao dentro do politopo de incertezas, ou seja,
um ponto com os parmetros incertos fixos em 30% de Km e 20% de a2 e o outro ponto com
os parmetros incertos fixos em +10% de Km e 20% de a2 . A resposta do sistema acaba sendo
um pouco lenta, podendo este problema ser resolvido com a insero de taxa de decaimento no
projeto do sistema.

4.2

Custo garantido H2 usando LMIs

Podemos estender a anlise realizada anteriormente para sistemas incertos, encontrando o


custo garantido H2 , ou seja, garantiremos que todos os vrtices do politopo de incertezas tero
a norma H2 menor que este custo garantido.
Considere o sistema incerto:
(.
x = A( )x + B1 ( )w + B2 ( )u
y = Cx

(4.5)

Sabe-se que uma condio suficiente para o custo gatantido H2 do sistema incerto (4.5) a

4.2 Custo garantido H2 usando LMIs

29

existncia de matrizes X = X nn , Y mn e Z m1 , tais que

min

"
#

Z
B

1j

s.a.
> 0,

B1 j X
"
#

A
X
+
XA

B
Y
Y
XC

j
j
2j
2j

< 0,

CX
I

> Tr(Z).

(4.6)

com j = 1, ..., r.

Quando as LMIs (4.2) so factveis, uma matriz de realimentao de estados que estabiliza
o sistema pode ser dada por
L = Y X 1

(4.7)

Pode-se tomar como exemplo de sistema incerto o sistema para suspenso ativa para assento de carro apresentado no Exemplo 3.2.1, especificando Mc = 1500 kg para a massa do
carro e 70 ms 120 kg para a massa do assento (20 kg) somada massa do motorista, que
se supe variar de 50 a 100 kg. Desta forma ms ser um parmetro incerto para o problema.
Adotaram-se os parmetros restantes como km = 4 104 N/m, b1 = 4 103 Ns/m, k2 = 5 103
N/m e b2 = 5 102 Ns/m. Constituir-se-, portanto, um politopo possuindo dois vrtices com
um parmetro incerto apenas nas matrizes A e B2 , ou seja, a matriz B1 permanece inalterada
para todos os vrtices. Os vrtices so descritos abaixo:
Vrtice 1 (ms = 70 kg e b2 = 5 102 Ns/m):

0
0
1
0

A1 =
e B21 =
71, 43 71, 43 7, 14 7, 14
0, 0143

3, 33

30

0, 33

0
0
0

0, 0007 0, 0007

Vrtice 2 (ms = 120 kg e b2 = 5 102 Ns/m):

0
0
0
0
1

e
B
=
A2 =

22
0, 0083
41, 67 41, 67 4, 17 4, 17

3, 33

30

0, 33

0
0
0

0, 0007 0, 0007

4.2 Custo garantido H2 usando LMIs

30

Programa 6: Custo gatantido H2


% Calcula um controlador H-2 robust por realimentaao de estados

para um

% sistema linear com incerteza politpica usando o seguinte problema de


% otimizao:
%

min Tr(rho)

s.a [AiW+WAi+B2iZ+ZB2i

[CW+DZ

WC+ZD]
-I

] < 0,

%
%

[X

B1]

[B1

] > 0,

%
%

rho > trace(X),

% As LMIs so programadas usando o YALMIP

e podem ser resolvidas

% por qualquer resolvedor de LMIs compatvel com o YALMIP (SeDuM o padro).


%
% entradas : Ai

-> matriz dinmica do sistema (vrtice).

B1

-> matriz da entrada de rudo do sistema.

B2i -> matriz da entrada de controle do sistema (vrtice).

-> vrtices da matriz de sada do sistema.

D2

-> vrtices da matriz de transmisso direta do controle na sada.

norma -> limitante da norma a ser testado.

%
% sadas : saida.norma

-> valor da norma (infinito se for infactvel)

saida.V

-> nmero de variveis escalares.

saida.L

-> number de linhas de LMIs.

saida.W

-> varivel soluao W (se existir).

saida.K

-> controlador (se existir).

%
%Modelo do sistema incerto em espao de estados para a Suspenso Ativa:
Mc=1500;
ms=[70 120];
k1=40000;
k2=5000;
b1=4000;
b2=500;

4.2 Custo garantido H2 usando LMIs

31

gamma=26.66;
for i=1:2
A{i}=[0
0
-k2/ms(i)
k2/Mc

0;

1;

k2/ms(i)
(-k1-k2)/Mc

-b2/ms(i)
b2/Mc

b2/ms(i);
( -b1-b2)/Mc];

B2{i}=[0 0; 0 0; 1/ms(i) 0; -1/Mc 1/Mc];


end
B1=[0; 0; 0; gamma];
C=[1 0 0 0; 0 1 0 0];
D2=zeros(2);

% com realimentao dos estados

% Determina as dimenses do problema.


ordem

= size(A{1},1);

vertices = size(A,2);
entradas_c = size(B2{1},2);
entradas_r = size(B1,2);
saidas

= size(C,1);

% Inicializa a varivel que armazenar as LMIs do problema.


LMIs = set([]);
% Cria as variveis do problema.
W = sdpvar(ordem,ordem,symmetric);
Z = sdpvar(entradas_c,ordem,full);
X = sdpvar(entradas_r,entradas_r,symmetric);
if nargin <= 5
rho = sdpvar(1);
obj = rho;
else
rho = norma*norma;
obj = [];
end

4.2 Custo garantido H2 usando LMIs

32

% Entra com as LMIs do problema.


for i=1:vertices
T11 = A{i}*W+W*A{i}+B2{i}*Z+Z*B2{i};
T12 = W*C+Z*D2;
T22 = -eye(saidas);
LMIs = LMIs + set([T11 T12;T12 T22]

< 0);

T11 = X;
T12 = B1;
T22 = W;
LMIs = LMIs + set([T11 T12; T12 T22]

> 0);

end
LMIs = LMIs + set(W > 0) + set(rho >= trace(X));
% Determina o nmero de linhas de LMIs
saida.L = 0;
for i=1:size(LMIs,1)
saida.L = saida.L + size(LMIs{i},1);
end
% Determina o nmero de variveis escalares.
saida.V = size(getvariables(LMIs),2);
% Configurando o Solver.
%opts=sdpsettings(solver,sedumi);

% 2 tipos de solver para escolher

opts=sdpsettings(solver,lmilab);
% Finalmente, o problema de otimizao resolvido.
solucao = solvesdp(LMIs,obj,opts);
% Acessa o menor resduo primal.
p=min(checkset(LMIs));
saida.delta = p;

4.2 Custo garantido H2 usando LMIs

33

saida.norma = inf;
% Capturando a soluo (se existir).
if p > -1e-7
saida.W

= double(W);

saida.norma = sqrt(double(rho));
saida.K = double(Z)*inv(saida.W);
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
A novidade neste programa apenas a criao de matrizes celulares (A{i} por exemplo)
que se torna muito til quando comea a crescer muito o nmero de incertezas, podendo ocorrer erros tanto para a montagem dos vrtices como para a declarao das LMIs, sendo assim
recomendado o uso desta estrutura.
Para este programa pode-se encontrar o mximo valor atingido pelo diagrama de valores
singulares (funo sigma da MATLAB), verificando assim a eficincia do projeto. Assim, foi
criado o seguinte programa:
%%%%%%%%%%%%%%%%% RESPOSTA EM FREQUNCIA %%%%%%%%%%%%%%%%%%%%%%
hold on
% SYS1=ss(A{1},B1,C,0);
% sigma(SYS1);
SYS2=ss(A{2},B1,C,0);
% sigma(SYS2,g--);
% SYS3=SS((A{1}+B2{1}*saida.K),B1,C,0);
% sigma(SYS3);
SYS4=SS((A{2}+B2{2}*saida.K),B1,C,0);
sigma(SYS2,SYS4,g--);
grid;
hold off
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

4.2 Custo garantido H2 usando LMIs

34

Aplicando a funo sigma para o vrtice A2 (pior caso) tanto para o sistema sem realimentao dos estados, como para o sistema realimentado obteremos o grfico a seguir:

Singular Values
20

A2 s/ realimentao
A2 realimentado
System: Vrtice A2 sem realimentao
Frequency (rad/sec): 4.57
Singular Value (dB): 11.5

20

System: Vrtice A2 realimentado


Frequency (rad/sec): 137
Singular Value (dB): 43.8

Singular Values (dB)

40

60

80

100

120

140
1
10

10

10

10

10

10

Frequency (rad/sec)

Figura 4.1: Resposta em frequncia para o sistema sem realimentao e com realimentao do
controlador robusto H2 .

Analisando a resposta impulsiva do sistema atravs do seguinte programa:


%%%%%%%%%%%%%%%%% RESPOSTA IMPULSIVA %%%%%%%%%%%%%%%%%%%%%%%
% SYS1=ss(A{1},B1,C,0);
SYS2=ss(A{2},B1,C,0);
Impulse(SYS2)
hold on
% SYS3=SS((A{1}+B2{1}*saida.K),B1,C,0);
SYS4=ss((A{2}+B2{2}*saida.K),B1,C,0);
Impulse(SYS4)
title(Resposta impulsiva do sistema com e sem realimentao)
grid on
hold off
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

4.3 Custo garantido H usando LMIs

35

Obtm-se a seguinte resposta:

Resposta impulsiva do sistema com e sem realimentao


6

A2 s/ realimentao
A2 realimentado

5
4

To: Out(1)

3
2
1
0
1
2

Amplitude

3
4
4

A2 s/ realimentao
A2 realimentado
3

To: Out(2)

3
Time (sec)

Figura 4.2: Resposta em impulsiva para o sistema sem realimentao e com realimentao do
controlador robusto H2 .

Verifica-se a eficincia da realimentao do sistema, em que a resposta impulsiva torna-se


bem atenuada na sada do sistema.

4.3

Custo garantido H usando LMIs

Da mesma forma como foi feito para o custo garantido H2 , podemos estender a anlise
realizada anteriormente para sistemas incertos, encontrando o custo garantido H , ou seja,
garantiremos que todos os vrtices do politopo de incertezas tero a norma H menor que este
custo garantido.
Considere o sistema incerto dado em (4.5), sabe-se que uma condio suficiente para o
custo gatantido H deste sistema incerto a existncia de matrizes X = X nn e Y mn

4.3 Custo garantido H usando LMIs

36

tais que

com j = 1, ..., r.

min

B
+Y D B

A
X
+
XA

B
Y
Y
XC

j
2j
1j
2j
j

< 0,
CX
+
DY
I
0

B1 j
0
I

X > 0.

(4.8)

Quando as LMIs (4.3) so factveis, uma matriz de realimentao de estados que estabiliza
o sistema pode ser dada por
L = Y X 1

(4.9)

Pode-se tomar como exemplo de sistema incerto o sistema para suspenso ativa para assento
de carro apresentado no Exemplo 3.2.1, especificando os mesmos parmetros apresentados para
o exemplo H2 , constituir-se-, portanto, um politopo possuindo dois vrtices com um parmetro
incerto apenas nas matrizes A e B2 , ou seja, a matriz B1 permanece inalterada para todos os
vrtices. Os vrtices so os mesmos descritos anteriormente.
Programa 7: Custo gatantido H
% Calcula um controlador H-infinito por realimentaao de estados

usando o

% seguinte problema de otimizao:


%

min mu

s.a [A1W + WA1 + B21Z + ZB21

WC+ZD

[CW + DZ

- I

[B1

[A2W + WA2 + B22Z + ZB22

WC+ZD

[CW + DZ

[B1

B1

] < 0,

- muI ]

%
- I
0

B1

] < 0,

- muI ]

%
%

W > 0

%
% As LMIs so programadas com o YALMIP

e podem ser resolvidas por qualquer

% resolvedor de LMIs compatvel com o YALMIP (SeDuM o padro).


%
% entradas : A1

-> matriz dinmica do sistema (primeiro vrtice).

4.3 Custo garantido H usando LMIs

37

A2

-> matriz dinmica do sistema (segundo vrtice).

B1

-> matriz da entrada de rudo do sistema.

B21 -> matriz da entrada de controle do sistema (primeiro vrtice).

B22 -> matriz da entrada de controle do sistema (segundo vrtice).

-> matriz de sada do sistema.

-> matriz de transmisso direta do controle na sada.

norma -> limitante da norma a ser testado.

%
% sadas : saida.norma

-> valor da norma (infinito se for infactvel)

saida.V

-> nmero de variveis escalares.

saida.L

-> number de linhas de LMIs.

saida.W

-> varivel soluao W (se existir).

saida.K

-> controlador (se existir).

%Modelo do sistema incerto em espao de estados para a Suspenso Ativa:


Mc=1500;
ms=[70 120];
k1=40000;
k2=5000;
b1=4000;
b2=500;
gamma=26.66;
for i=1:2
A{i}=[0
0
-k2/ms(i)
k2/Mc

0;

1;

k2/ms(i)
(-k1-k2)/Mc

-b2/ms(i)
b2/Mc

b2/ms(i);
( -b1-b2)/Mc];

B2{i}=[0 0; 0 0; 1/ms(i) 0; -1/Mc 1/Mc];


end
B1=[0; 0; 0; gamma];
C=[1 0 0 0; 0 1 0 0];
Dc=[0 0; 0 0];

% com realimentao dos estados

% Determina as dimenses do problema.


ordem

= size(A{1},1);

vertices

= size(A,2);

entradas_c = size(B2{1},2);

4.3 Custo garantido H usando LMIs

38

entradas_r = size(B1,2);
saidas

= size(C,1);

% Inicializa a varivel que armazenar as LMIs do problema.


LMIs = set([]);
% Cria as variveis do problema.
W = sdpvar(ordem,ordem,symmetric);
Z = sdpvar(entradas_c,ordem,full);
if nargin <= 7
mu = sdpvar(1);
obj = mu;
else
mu = norma*norma;
obj = [];
end
% Entra com as LMIs do problema.
for i=1:vertices
T111= A{i}*W + W*A{i} + B2{i}*Z + Z*B2{i};
T112 = W*C + Z*Dc;
T113 = B1;
T122 = -eye(saidas);
T123 = zeros(saidas,entradas_r);
T133 = -mu*eye(entradas_r);
LMIs = LMIs + set([T111 T112 T113; T112 T122 T123; T113 T123 T133] < 0);
end
LMIs = LMIs + set(W > 0);
% Determina o nmero de linhas de LMIs
saida.L = 0;
for i=1:size(LMIs,1)
saida.L = saida.L + size(LMIs{i},1);

4.3 Custo garantido H usando LMIs

39

end
% Determina o nmero de variveis escalares.
saida.V = size(getvariables(LMIs),2);
% Configurando o Solver.
%opts=sdpsettings(solver,sedumi);

% 2 tipos de solver para escolher

opts=sdpsettings(solver,lmilab);
% Finalmente, o problema de otimizao resolvido.
solucao = solvesdp(LMIs,obj,opts);
% Acessa o menor resduo primal.
p=min(checkset(LMIs));
saida.delta = p;
saida.norma = inf;
% Capturando a soluo (se existir).
if p > -1e-7
saida.W

= double(W);

saida.norma = sqrt(double(mu));
saida.K = double(Z)*inv(saida.W);
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Pode-se para este programa encontrar tambm o mximo valor atingido pelo diagrama de
valores singulares (funo sigma da MATLAB), verificando assim a eficincia do projeto com
os mesmos comandos anteriormente apresentados.
Aplicando a funo sigma para o vrtice A2 (pior caso) tanto para o sistema sem realimentao dos estados, como para o sistema realimentado obteremos o grfico a seguir:

4.3 Custo garantido H usando LMIs

40

Singular Values
20

A2 s/ realimentao
A2 realimentado
System: Vrtice A2 sem realimentao
Frequency (rad/sec): 4.52
Singular Value (dB): 11.5

20

Singular Values (dB)

40

System: Vrtice A2 realimentado


Frequency (rad/sec): 488
Singular Value (dB): 51.4

60

80

100

120

140
1
10

10

10

10

10

10

Frequency (rad/sec)

Figura 4.3: Resposta em frequncia para o sistema sem realimentao e com realimentao do
controlador robusto H .
Analisando a resposta ao degrau de amplitude 0,1m do sistema atravs do seguinte programa:
%%%%%%%%%%%%%%%%% RESPOSTA AO DEGRAU %%%%%%%%%%%%%%%%%%%%%%%
t=0:0.01:10;
SYS2=ss(A{2},B1,C,0);
step(SYS2)
hold on
SYS4=SS((A{2}+B2{2}*saida.K),B1,C,0);
step(SYS4)
title(Resposta ao degrau de amplitude 0.1m)
grid on
hold off
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

4.3 Custo garantido H usando LMIs

41

Obtm-se a seguinte resposta:

Resposta ao degrau de amplitude 0.1m


2

A2 s/ realimentao
A2 realimentado

To: Out(1)

1.5

0.5

Amplitude

0.5
1.5

A2 s/ realimentao
A2 realimentado

To: Out(2)

0.5

3
Time (sec)

Figura 4.4: Resposta ao degrau para o sistema sem realimentao e com realimentao do
controlador robusto H .
Pode-se verificar que o sistema agora rejeita a influencia do degrau que praticamente se
torna imperceptvel ao assento do motorista (primeira sada analisada) e ao distrbio sentido
pelo carro (segunda sada analisada).

42

Referncias Bibliogrficas
ASSUNO, E.; FARIA, F. A.; TEIXEIRA, M. C. M. Controle robusto de sistemas lineares
sujeitos falhas estruturais usando realimentao derivativa. In: PROCEEDINGS OF THE
BRAZILIAN CONFERENCE ON DYNAMICS, CONTROL AND APPLICATIONS, 7., 2008,
Presidente Prudente. Proceedings of the... Presidente Prudente: [s.n.], 2008. 6p.
PASCOAL, R. M.; ASSUNO, E.; TEIXEIRA, M. C. M. Restrio da taxa de decaimento
e otimizao no projeto de controladores robustos para sistemas sujeitos a falhas. Brazilian
Conference On Dynamics, Control And Applications, n. 8, 2009.