LMI Toolbox
LMI Toolbox
• Linear Matrix Inequality
• Desigualdade Matricial Linear
• xi Æ variáveis de decisão, escalares desconhecidos • A0, ... , AN Æ matrizes simétricas
• < 0 Æ significa “definida negativa”: maior autovalor menor que 0
0
...
)
(
x
=
A
0+
x
1A
1+
+
x
NA
N<
A
LMI Toolbox
• Exemplo:
sendo e
x1, x2 e x3 são variáveis de decisão • LMI:
0
<
+ XP
X
P
T⎥
⎦
⎤
⎢
⎣
⎡
−
−
=
2
0
2
1
P
⎥
⎦
⎤
⎢
⎣
⎡
=
3 2 2 1x
x
x
x
X
0
4
0
0
0
4
3
3
0
0
2
2
2
3 2 1⎥
<
⎦
⎤
⎢
⎣
⎡
−
+
⎥
⎦
⎤
⎢
⎣
⎡
−
−
+
⎥
⎦
⎤
⎢
⎣
⎡−
x
x
x
LMI Toolbox
• Dois problemas básicos:
• Solução factível (feasible problem): feasp
• Problema de minimização linear: mincx minimize cTx sujeito a
x é o vetor das variáveis de decisão
0
)
(
x
<
A
0
)
(
x
<
A
LMI Toolbox
• Programa básico:
setlmis([]) : inicia a descrição do sistema de LMIs
>> definição das variáveis e dos termos das LMIs
lmisys = getlmis : finaliza a descrição do sistema de LMIs
>> definição das variáveis de otimização (mincx) >> otimização >> feasp ou mincx
LMI Toolbox
• Exemplo: Dado um sistema
com quatro entradas, quatro saídas e seis estados. • Objetivo: Encontrar D tal que
sendo
B
A
sI
C
s
G
(
)
=
(
−
)
−11
)
(
1<
∞ −D
s
DG
⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ = 5 4 3 2 1 1 0 0 0 0 0 0 0 0 0 0 d d d d d d DLMI Toolbox
• Existe solução se existirem matrizes X ∈ ℜ6x6 e S = DTD
∈ ℜ4x4 tais que: • Matriz S
1
0
0
<
>
<
⎥
⎦
⎤
⎢
⎣
⎡
−
+
+
S
X
S
X
B
XB
SC
C
XA
X
A
T T T ⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ = 4 3 3 2 1 1 0 0 0 0 0 0 0 0 0 0 s s s s s s SLMI Toolbox
• Definição das variáveis: X = lmivar(type,struct)
type: estrutura de X
1 -> simétrica bloco diagonal 2 -> retangular completa
LMI Toolbox
• Definição das variáveis: X = lmivar(type,struct) struct : dados adicionais da estrutura de X
type=1: a i-ésima linha de struct descreve o i-ésimo
bloco diagonal de X
struct(i,1) -> tamanho do bloco struct(i,2) -> tipo do bloco, i.e.,
0 -> blocos escalares, aI 1 -> bloco completo
LMI Toolbox
• Definição das variáveis: X = lmivar(type,struct) struct : dados adicionais da estrutura de X
type = 2: struct = [M,N] se X é uma matriz MxN
type = 3: struct é uma matriz da mesma dimensão de X,
sendo struct(i,j) dado por 0 se X(i,j) = 0
+n se X(i,j) = n-ésima variável de decisão
LMI Toolbox
• Exemplo: • Definição de X: X=lmivar(1,[6 1]) • Definição de S: S=lmivar(1,[2 0;2 1]) ⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ = 4 3 3 2 1 1 0 0 0 0 0 0 0 0 0 0 s s s s s s SLMI Toolbox
• Definição dos termos da LMI: lmiterm(termid,A,B,flag)
termid: vetor de 4 elementos, especifica local do termo e natureza Elemento 1: termid (1) = +n -> left-hand side of the n-th LMI
termid (1) = -n -> right-hand side of the n-th LMI Elementos 2 e 3: termid (2:3) = [0 0] -> fator externo
termid (2:3) = [i j] -> termo pertence ao (i,j) bloco Elemento 4:
termid (4) = 0 -> termo consntante termid (4) = X -> termo variável AXB termid (4) = -X -> termo variável AXTB
LMI Toolbox
• Definição dos termos da LMI: lmiterm(termid,A,B,flag)
A: valor do fator externo, termo constante ou coeficiente à
esquerda dos termos AXB ou AXTB
B: coeficiente à direita dos termos AXB ou AXTB
flag = 's' : forma rápida de especificar o termo AXB+BTXTAT
LMI Toolbox
• Exemplo: • Definição da LMI 1: lmiterm([1 1 1 X],1,A,'s') lmiterm([1 1 1 S],C',C) lmiterm([1 1 2 X],1,B) lmiterm([1 2 2 S],-1,1)0
<
⎥
⎦
⎤
⎢
⎣
⎡
−
+
+
S
X
B
XB
SC
C
XA
X
A
T T TLMI Toolbox
• Exemplo: • Definição da LMI 2: lmiterm([ 2 1 1 X],1,1) • Definição da LMI 3: lmiterm([ 3 1 1 S],1,1) lmiterm([3 1 1 0],1)0
>
X
1
<
S
LMI Toolbox
• Solução factível (feasible problem):
[tmin,xfeas] = feasp(lmisys,options,target)
tmin: valor resultante do problema de minização
correspondente
xfeas: valor resultante das variáveis de decisão
options: opções de minimização
LMI Toolbox
• Problema de minimização linear: mincx minimize cTx sujeito a
[copt,xopt] = mincx(lmisys,c,options,xinit,target)
copt: valor de c ótimo
xopt: valor das variáveis de decisão ótimo
xinit: valor inicial de x
0
)
(
x
<
A
LMI Toolbox
• Definição do vetor de otimização c:
[V1,...,Vk] = defcx(lmisys,n,X1,....,Xk)
Retorna os valores V1,...,Vk das variáveis matriciais X1,...,Xk quando a N-ésima variável de decisão é definida como 1 e as demais como 0.
LMI Toolbox
• Exemplo:
• Definição das variáveis:
x0 = [1;1] setlmis([]) X = lmivar(1,[3 0]) P = lmivar(1,[2 1]) ... lmisys = getlmis ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎣ ⎡ = 1 1 1 0 0 0 0 0 0 x x x X ⎥ ⎦ ⎤ ⎢ ⎣ ⎡ = 4 3 3 2 x x x x P 0 0
)
(
X
x
Px
Trace
x
c
T=
+
TLMI Toolbox
• Exemplo:
• Definição do vetor de otimização c:
n = decnbr(lmisys) c = zeros(n,1) for j=1:n, [Xj,Pj] = defcx(lmisys,j,X,P) c(j) = trace(Xj) + x0'*Pj*x0 end 0 0
)
(
X
x
Px
Trace
x
c
T=
+
T ⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ = 1 2 1 3 cLMI Toolbox
• Visualização do resultado:
Xk = dec2mat(LMISYS,xdec,k)
• Xk -> valor da variável matricial k
• xdec -> variáveis de decisão resultante da otimização • k -> índice da variável matricial fornecido por lmivar
LMI Toolbox
• Exemplo: (1) X1 - X2 < 0 (2) X1 + X2 < 2 (3) 0 < X1 < 1 (4) 0 < X2 < 1LMI Toolbox
X1 X2 (2) (1) (4) (3) 2 1 1 2LMI Toolbox
• Exemplo:setlmis([])
%Definição das variaveis X1 = lmivar(1,[1 1]);
X2 = lmivar(1,[1 1]);
%Definição das LMIs LMI1 = newlmi;
lmiterm([LMI1 1 1 X1],1,1); lmiterm([LMI1 1 1 X2],-1,1);
LMI Toolbox
• Exemplo: LMI2 = newlmi; lmiterm([LMI2 1 1 X1],1,1); lmiterm([LMI2 1 1 X2],1,1); lmiterm([LMI2 1 1 0],-2); LMI3 = newlmi; lmiterm([-LMI3 1 1 X1],1,1); LMI4 = newlmi; lmiterm([LMI4 1 1 X1],1,1); lmiterm([LMI4 1 1 0],-1);LMI Toolbox
• Exemplo: LMI5 = newlmi; lmiterm([-LMI5 1 1 X2],1,1); LMI6 = newlmi; lmiterm([LMI6 1 1 X2],1,1); lmiterm([LMI6 1 1 0],-1); LMI = getlmis;LMI Toolbox
• Exemplo: Solução factível[tmin,xfeas]=feasp(LMI);
x1 = dec2mat(LMI,xfeas,X1) x2 = dec2mat(LMI,xfeas,X2)
• Definindo um valor para X2:
LMI=setmvar(LMI,X2,0.5); [tmin,xfeas]=feasp(LMI); x1=dec2mat(LMI,xfeas,X1)