⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 snogcca01.m

📁 线性矩阵不等式求解程序
💻 M
字号:
%uncertain process
A=[0 1;0 -0.1];
B=[0;0.1];
G=[1,0;0,1];
Ea=[0.1,0.1;0.1,0.1];
Eb=[0.1;0.1];

%performance idex
R=[0.5,0;0,0.5];
S=1;

%maxmum time delay
eta=0.5;

%sample period
h=0.2;

%constants for M2 and M3
rho2=0.2;
rho3=0.2;

%
phi0=[exp(1);0]

%
s=sym('s');
theta=sym('theta');
U0=int(int([exp(s+1) 0]'*[exp(s+1) 0],s,theta,0),theta,-0.5,0);
U=[sqrt(1/4*exp(1)) 0;0 0];%?

%matrix variables
setlmis([]);
P=lmivar(1,[2,1]);%denotes P^~
Q=lmivar(1,[2,1]);%denotes Q^~
X=lmivar(2,[2,2]);
Z=lmivar(2,[1,2]);
T1=lmivar(2,[2,2]);%denotes N1^~
T2=lmivar(2,[2,2]);%denotes N2^~
T3=lmivar(2,[2,2]);%denotes N3^~
epsilon=lmivar(1,[1,0]);
alpha=lmivar(1,[1,0]);
Y=lmivar(1,[2,1]);
H11=lmivar(1,[2,1]);%denotes H11^~
H12=lmivar(2,[2,2]);%denotes H12^~
H13=lmivar(2,[2,2]);%denotes H13^~
H22=lmivar(1,[2,1]);%denotes H22^~
H23=lmivar(2,[2,2]);%denotes H23^~
H33=lmivar(1,[2,1]);%denotes H33^~

%1st LMI
linearmi1=newlmi;
lmiterm([linearmi1 1 1 H11],eta,1);
lmiterm([linearmi1 1 1 T1],1,1,'s');
lmiterm([linearmi1 1 1 X],-1,A','s');

lmiterm([linearmi1 2 1 -H12],eta,1);
lmiterm([linearmi1 2 1 T2],1,1);
lmiterm([linearmi1 2 1 -T1],-1,1);
lmiterm([linearmi1 2 1 -X],-rho2*A,1);
lmiterm([linearmi1 2 1 -Z],-1,B');

lmiterm([linearmi1 2 2 H22],eta,1);
lmiterm([linearmi1 2 2 T2],1,1,'s');
lmiterm([linearmi1 2 2 Z],-rho2*B,1,'s');

lmiterm([linearmi1 3 1 -H13],eta,1);
lmiterm([linearmi1 3 1 P],1,1);
lmiterm([linearmi1 3 1 T3],1,1);
lmiterm([linearmi1 3 1 -X],-A',rho3);
lmiterm([linearmi1 3 1 X],1,1);

lmiterm([linearmi1 3 2 -H23],eta,1);
lmiterm([linearmi1 3 2 T3],-1,1);
lmiterm([linearmi1 3 2 Z],-B,rho3);
lmiterm([linearmi1 3 2 X],rho2,1);

lmiterm([linearmi1 3 3 H33],eta,1);
lmiterm([linearmi1 3 3 Q],eta,1);
lmiterm([linearmi1 3 3 X],rho3,1,'s');

lmiterm([linearmi1 4 1 epsilon],1,G');
lmiterm([linearmi1 4 2 epsilon],rho2,G');
lmiterm([linearmi1 4 3 epsilon],rho3,G');
lmiterm([linearmi1 4 4 epsilon],-1,1);

lmiterm([linearmi1 5 1 -X],Ea,1);
lmiterm([linearmi1 5 2 Z],Eb,1);
lmiterm([linearmi1 5 5 epsilon],-1,1);

lmiterm([linearmi1 6 1 -X],1,1);
lmiterm([linearmi1 6 6 0],-inv(R));

lmiterm([linearmi1 7 2 Z],1,1);
lmiterm([linearmi1 7 7 0],-inv(S));

%2nd LMI
linearmiP=newlmi;
lmiterm([-linearmiP 1 1 P],1,1);

%3rd LMI
linearmiQ=newlmi;
lmiterm([-linearmiQ 1 1 Q],1,1);

%4th LMI
linearmiw=newlmi;
lmiterm([-linearmiw 1 1 epsilon],1,1);

%inequality of Park
linearmiPark=newlmi;
lmiterm([-linearmiPark 1 1 H11],1,1);
lmiterm([-linearmiPark 2 1 -H12],1,1);
lmiterm([-linearmiPark 2 2 H22],1,1);
lmiterm([-linearmiPark 3 1 -H13],1,1);
lmiterm([-linearmiPark 3 2 -H23],1,1);
lmiterm([-linearmiPark 3 3 H33],1,1);
lmiterm([-linearmiPark 4 1 -T1],1,1);
lmiterm([-linearmiPark 4 2 -T2],1,1);
lmiterm([-linearmiPark 4 3 -T3],1,1);
lmiterm([-linearmiPark 4 4 Q],1,1);

%5th LMI
linearmialpha=newlmi;
lmiterm([linearmialpha 1 1 alpha],-1,1);
lmiterm([linearmialpha 2 1 -P],1,phi0);
lmiterm([linearmialpha 2 2 -P],-1,1);

%6th LMI
linearmiY=newlmi;
lmiterm([linearmiY 1 1 Y],-1,1);
lmiterm([linearmiY 2 1 -Q],1,U);
lmiterm([linearmiY 2 2 -Q],-1,1);

%lmis
lmisys=getlmis;

%vectify the feasibility of the lmis
[tmin,xfeas]=feasp(lmisys)

%for feasible control law
XFEAS=dec2mat(lmisys,xfeas,X);
ZFEAS=dec2mat(lmisys,xfeas,Z);
KFEAS=ZFEAS*inv(XFEAS');

%for cost index

s=sym('s');
theta=sym('theta');
PFEAS=dec2mat(lmisys,xfeas,P);
QFEAS=dec2mat(lmisys,xfeas,Q);
JFEAS1=[exp(1) 0]*PFEAS*[exp(1) 0]';
JFEAS2=int(int([exp(s+1) 0]*QFEAS*[exp(s+1) 0]',s,theta,0),theta,-0.5,0);
JFEAS=JFEAS1+JFEAS2;

%solve the optimal problem
n = decnbr(lmisys);
c = zeros(n,1);
for j=1:n,
[Yj,alphaj] = defcx(lmisys,j,Y,alpha)
c(j) = trace(Yj) + alphaj %?
end
[copt,xopt]=mincx(lmisys,c)

%for control law
XOPT=dec2mat(lmisys,xopt,X);
ZOPT=dec2mat(lmisys,xopt,Z);
KOPT=ZOPT*inv(XOPT');

%for optimal guaranteed cost
ALPHAOPT=dec2mat(lmisys,xopt,alpha);
YOPT=dec2mat(lmisys,xopt,Y);
JOPT=ALPHAOPT+trace(YOPT);

JOPT=c'*xopt;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -