limeng2200 发表于 2006-6-8 21:34

[求助]关于采用MATLAB中LMI工具箱求解矩阵不等式的问题

对于对称矩阵不等式
A11 A12 … A1.n-1 A1.n
* A22 … A2.n-1 A2.n … <0 (1)
* * … -P-1 An-1.n * * … * -Q-1
可以采用锥补线性化方法求解
即在满足
A11 A12 … A1.n-1 A1.n * A22 … A2.n-1 A2.n … <0 (2)
* * … -M An-1.n * * … * -N 〉=0和〉=0 (3)
的条件下使trace(PM+QN)取得最小值
算法为
1) 首先找到满足(2)和(3)中三个矩阵不等式的所有未知矩阵变量的一个可行解(P0,Q0,M0,N0),令迭代次数k=0。
2) 对于矩阵变量(P,Q,M,N),求解如下最小化问题:
Minimize [tr (PKM+MKP+QKN+NKQ)]
Subject to (2),(3)
令求出的最优解为:
(PK+1,QK+1,MK+1,NK+1)
3) 验证所求出的最优解是否满足(1),若满足,则得解。若果不满足,检查k是否达到规定的迭代次数,如果达到,则系统无解;否则,令k=k+1,转到步骤2继续执行程序。
以下是我对一具体问题编的一个程序
clear all
a1=
b1=
c1=
d1=0
=c2d(a1,b1,0.05)
C=c1
D=d1
U=;
setlmis([])
P=lmivar(1,)
Q=lmivar(1,)
R=lmivar(1,)
S=lmivar(1,)
M=lmivar(1,)
N=lmivar(1,)
K=lmivar(2,)
F=lmivar(2,)
lmiterm(,1,1)
lmiterm(,-1,1)
lmiterm(,A)
lmiterm(,B,1)
lmiterm(,-1,C)
lmiterm(,-1,1)
lmiterm(,1,C)
lmiterm(,1,1)
lmiterm(,-1,1)
lmiterm(,B,-1)
lmiterm(,1,C)
lmiterm(,-A)
lmiterm(,-1,1)
lmiterm(,-1,1)
lmiterm(,-1,1)
lmiterm([-2 1 1 P],1,1)
lmiterm([-2 2 1 0],1)
lmiterm([-2 2 2 M],1,1)
lmiterm([-3 1 1 Q],1,1)
lmiterm([-3 2 1 0],1)
lmiterm([-3 2 2 N],1,1)
lmiterm([-4 1 1 P],1,1)
lmiterm([-5 1 1 Q],1,1)
lmiterm([-6 1 1 R],1,1)
lmiterm([-7 1 1 S],1,1)
lmiterm([-8 1 1 M],1,1)
lmiterm([-9 1 1 N],1,1)
lmisys=getlmis;
=feasp(lmisys)
PP=dec2mat(lmisys,xfeasp,P)
QQ=dec2mat(lmisys,xfeasp,Q)
RR=dec2mat(lmisys,xfeasp,R)
SS=dec2mat(lmisys,xfeasp,S)
MM=dec2mat(lmisys,xfeasp,M)
NN=dec2mat(lmisys,xfeasp,N)
KK=dec2mat(lmisys,xfeasp,K)
FF=dec2mat(lmisys,xfeasp,F)
for i=1:100,
n=decnbr(lmisys);
c=zeros(n,1);
for j=1:n,
=defcx(lmisys,j,P,Q,R,S,M,N,K,F);
c(j)=trace(PP*Mj+MM*Pj+QQ*Nj+NN*Qj);
end
options=
=mincx(lmisys,c,options)
PPP=dec2mat(lmisys,xopt,P)
QQQ=dec2mat(lmisys,xopt,Q)
RRR=dec2mat(lmisys,xopt,R)
SSS=dec2mat(lmisys,xopt,S)
MMM=dec2mat(lmisys,xopt,M)
NNN=dec2mat(lmisys,xopt,N)
KKK=dec2mat(lmisys,xopt,K)
FFF=dec2mat(lmisys,xopt,F)
Z=[SSS-PPP , U , U ,U , (A+B*KKK)' , -(FFF*C)' ;
U , -SSS , U ,U , U , (FFF*C)' ;
U , U , RRR-QQQ ,U , -(B*KKK)' , -(A-FFF*C)';
U , U , U ,-RRR, U , U ;
A+B*KKK, U , -B*KKK ,U , -inv(PPP) , U ;
-FFF*C , FFF*C, -(A-FFF*C),U , U , -inv(QQQ)]
Y=eig(Z)
i2=0;
for i1=1:length(Y),
if(Y(i1,1)<0),i2=i2+1;end
end
if(i2==length(Y)),break;end
PP=PPP
QQ=QQQ
RR=RRR
SS=SSS
MM=MMM
NN=NNN
KK=KKK
FF=FFF
end
if(i==100),disp('There is no result');end
不知道LMI工具箱用的正确与否以及按算法编的对不对,请大侠指点,万分感谢。

[ 本帖最后由 lxq 于 2007-4-27 00:27 编辑 ]
页: [1]
查看完整版本: [求助]关于采用MATLAB中LMI工具箱求解矩阵不等式的问题