Conceitos Básicos
Linear Matri Inequality Desigualdade Matricial Linear A( ) = A + A +... + N AN < i variáveis de decisão, escalares desconhecidos A,..., A N matrizes simétricas < significa definida negativa : maior autovalor menor que
Eemplo: sendo e, 2 e 3 são variáveis de decisão LMI: + XP < X P T = 2 2 P = 3 2 2 X 4 4 3 3 2 2 2 3 2 < + +
Dois problemas básicos: Solução factível (feasible problem): feasp A( ) < Problema de minimização linear: minc minimize c T sujeito a A( ) < é o vetor das variáveis de decisão
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 (minc) >> otimização >> feasp ou minc
Eemplo: Dado um sistema com quatro entradas, quatro saídas e seis estados. Objetivo: Encontrar D tal que sendo B A si C s G ) ( ) ( = ) ( < D s DG = 5 4 3 2 d d d d d d D
Eiste solução se eistirem matrizes X R 66 e S = D T D R 44 tais que: Matriz S < > < + + S X S X B XB SC C XA X A T T T = 4 3 3 2 s s s s s s S
Definição das variáveis: X = lmivar(type,struct) type: estrutura de X -> simétrica bloco diagonal 2 -> retangular completa 3 -> outra
Definição das variáveis: X = lmivar(type,struct) struct : dados adicionais da estrutura de X type=: a i-ésima linha de struct descreve o i-ésimo bloco diagonal de X struct(i,) -> tamanho do bloco struct(i,2) -> tipo do bloco, i.e., -> blocos escalares, ai -> bloco completo - -> bloco de zeros
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 MN type = 3: struct é uma matriz da mesma dimensão de X, sendo struct(i,j) dado por se X(i,j) = +n se X(i,j) = n-ésima variável de decisão -n se X(i,j) = (-)* n-ésima variável de decisão
Eemplo: Definição de X: X=lmivar(,[6 ]) Definição de S: S=lmivar(,[2 ;2 ]) = 4 3 3 2 s s s s s s S
Definição dos termos da LMI: lmiterm(termid,a,b,flag) termid: vetor de 4 elementos, especifica local do termo e natureza Elemento : termid () = +n -> left-hand side of the n-th LMI termid () = -n -> right-hand side of the n-th LMI Elementos 2 e 3: termid (2:3) = [ ] -> fator eterno termid (2:3) = [i j] -> termo pertence ao (i,j) bloco Elemento 4: termid (4) = -> termo consntante termid (4) = X -> termo variável AXB termid (4) = -X -> termo variável AX T B
Definição dos termos da LMI: lmiterm(termid,a,b,flag) A: valor do fator eterno, termo constante ou coeficiente à esquerda dos termos AXB ou AX T B B: coeficiente à direita dos termos AXB ou AX T B flag = 's' : forma rápida de especificar o termo AXB+B T X T A T em um bloco diagonal
Eemplo: Definição da LMI : lmiterm([ X],,A,'s') lmiterm([ S],C',C) lmiterm([ 2 X],,B) lmiterm([ 2 2 S],-,) A T X + XA + C B T X T SC XB S <
Eemplo: Definição da LMI 2: lmiterm([ 2 X],,) X > Definição da LMI 3: lmiterm([ 3 S],,) lmiterm([3 ],) S <
Solução factível (feasible problem): [tmin,feas] = feasp(lmisys,options,target) tmin: valor resultante do problema de minização correspondente feas: valor resultante das variáveis de decisão options: opções de minimização target: valor desejado de tmin
Problema de minimização linear: minc minimize c T sujeito a A( ) < [copt,opt] = minc(lmisys,c,options,init,target) copt: valor de c ótimo opt: valor das variáveis de decisão ótimo init: valor inicial de
Definição do vetor de otimização c: [V,...,Vk] = defc(lmisys,n,x,...,xk) Retorna os valores V,...,Vk das variáveis matriciais X,...,Xk quando a N-ésima variável de decisão é definida como e as demais como.
Eemplo: Definição das variáveis: = [;] setlmis([]) X = lmivar(,[3 ]) P = lmivar(,[2 ])... lmisys = getlmis = X = 4 3 3 2 P ) ( P X Trace c T T + =
Eemplo: c T = Trace( X ) + P T Definição do vetor de otimização c: n = decnbr(lmisys) c = zeros(n,) for j=:n, [Xj,Pj] = defc(lmisys,j,x,p) c(j) = trace(xj) + '*Pj* end c = 3 2
Visualização do resultado: Xk = dec2mat(lmisys,dec,k) Xk -> valor da variável matricial k dec -> variáveis de decisão resultante da otimização k -> índice da variável matricial fornecido por lmivar
Eemplo: () X - X2 < (2) X + X2 < 2 (3) < X < (4) < X2 <
X2 () 2 (3) (4) 2 X (2)
Eemplo: LMI Toolbo setlmis([]) %Definição das variaveis X = lmivar(,[ ]); X2 = lmivar(,[ ]); %Definição das LMIs LMI = newlmi; lmiterm([lmi X],,); lmiterm([lmi X2],-,);
Eemplo: LMI Toolbo LMI2 = newlmi; lmiterm([lmi2 X],,); lmiterm([lmi2 X2],,); lmiterm([lmi2 ],-2); LMI3 = newlmi; lmiterm([-lmi3 X],,); LMI4 = newlmi; lmiterm([lmi4 X],,); lmiterm([lmi4 ],-);
Eemplo: LMI Toolbo LMI5 = newlmi; lmiterm([-lmi5 X2],,); LMI6 = newlmi; lmiterm([lmi6 X2],,); lmiterm([lmi6 ],-); LMI = getlmis;
Eemplo: Solução factível [tmin,feas]=feasp(lmi); = dec2mat(lmi,feas,x) 2 = dec2mat(lmi,feas,x2) Definindo um valor para X2: LMI=setmvar(LMI,X2,.5); [tmin,feas]=feasp(lmi); =dec2mat(lmi,feas,x)
Eemplo: Minimização de c T c =[; ]; [copt,opt]=minc(lmi,c); =dec2mat(lmi, opt,x) 2=dec2mat(LMI, opt,x2)