📄 snogcca01.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 + -