两种方法仿真的比较

本文探讨了Shur补法和投影奇异系统在仿真中的应用,包括Shur补一般系统、奇异系统和投影定理奇异系统。通过实例比较,发现两者在性能和稳定性上有差异,并且在某些情况下,求解的控制器增益差别显著。作者尝试了有记忆输出反馈和状态反馈,以寻找更好的解决方案。目前,Shur补奇异系统的可行性尚未明确。
摘要由CSDN通过智能技术生成

Shur补无疑是简单好用的方法,但是投影定理有例程,更炫酷。

非奇异描述方式当然更好,但是奇异可以减少耦合项。

现在我只掌握了Shur补的一般系统仿真,奇异和投影都用不好。

综上,一共有三种:

1、Shur补一般系统(常见,已可);

2、Shur补奇异系统(这一种我不确定是否可行,我认为可行,但是没有见过);

3、投影定理奇异系统(王老师用,有王老师程序)。

王老师最简程序(通过王老师的程序修剪得到的),先放上

clear all;           % This The convex optimization algorithm is solved by invoking the solver MOSEK through YALMIP.
yalmip('clear');
[A,B,E,C,D,F,rule,b_min,b_max,v_max]=exp_sys; % system matrices of Type-2 Fuzzy systems

mu_1=[1;1;1;1];   % stablity

[~,n_d]=size(B{1});
[~,n_f]=size(E{1});
n_r=1;
[n_y,n_x]=size(C{1});
 
H1=[mu_1(1)*eye(n_x);mu_1(2)*eye(n_x);mu_1(3)*eye(n_x);mu_1(4)*eye(n_x)];
 
P=sdpvar(2*n_x,2*n_x);

G1=sdpvar(n_x,n_x,'full');

for s=1:1:rule   
    X{s}=sdpvar(4*n_x,n_x,'full'); 
    barAF{s}=sdpvar(n_x,n_x,'full');
    barBF{s}=sdpvar(n_x,n_y,'full');
end

for s=1:1:rule
    for k=1:1:rule
        Xi_1{s}{k}=[zeros(2*n_x,2*n_x) P;P zeros(2*n_x,2*n_x)]...
        +[-X{k} -H1*G1 X{k}*A{s}+H1*barBF{k}*C{k} H1*barAF{k}]...
        +[-X{k} -H1*G1 X{k}*A{s}+H1*barBF{k}*C{k} H1*barAF{k}]';
    end
end

LMI_S= [lmi(P>=0):'P'];  
 
for s=1:1:rule
    for k=1:1:rule
     LMI_S=LMI_S+[lmi(Xi_1{s}{k}<=0):'LMI_S'];   
    end
end
 
options = sdpsettings('solver','mosek','shift','0.00');  
solution = optimize(LMI_S, [],options)
check(LMI_S)

这个程序也存在一些问题,主要是H_\infty性能指标太小,而且求出来的余量是正的(王老师说这样是不对的,但是他自己的求出来也是这样)……应该是对的程序。这是我的目标程序。

Shur补定理的程序(只考虑H_\infty的输出反馈) 

clear all;yalmip('clear');

A=[0.1 0.4;0.8 0.9];B=[1;1];C=[1 0];D1=[1;0];CZ=[1 0];D2=[0];

n_x=2;
n_d=1;
theta=6.0490e-2;
gamma_2=sdpvar(1,1,'full');
P=sdpvar(n_x,n_x);
Y=sdpvar(n_d,n_d);
G=sdpvar(n_d,n_x);

Q=[-P              zeros(n_x,n_d)    (P*A+B*G)'   CZ' ;
    zeros(n_d,n_x) -gamma_2*eye(n_d) (P*D1)'      D2' ;
    (P*A+B*G)      (P*D1)            -P          zeros(n_x,n_d);
    CZ             D2                zeros(n_d,n_x) -eye(n_d) ];

Theta=[-theta*eye(n_d) (P*B-B*Y)';
    (P*B-B*Y) -eye(n_x)];

LMI_S= [lmi(gamma_2>=0):'gamma_2'];
LMI_S= LMI_S+[lmi(P>=0):'P'];
LMI_S= LMI_S+[lmi(Q<=0):'Q'];  
LMI_S= LMI_S+[lmi(Theta<=0):'Theta']; 

 
options = sdpsettings('solver','mosek','shift','0.00');  
solution = optimize(LMI_S, gamma_2,options)
check(LMI_S)

gamma_2= sqrt(value(gamma_2))

这个求出来一切正常。

我要把这个用投影奇异系统写出来。

投影奇异系统程序

% This The convex optimization algorithm is solved by invoking the solver MOSEK through YALMIP.
clear all;yalmip('clear');

A=[0.1 0.4;-0.8 0.9];B=[1;1];C1=[1 0];D1=[0.1;0];C2=[0.1 0.2];D2=[0];

[~,n_u]=size(B);
[n_y,n_x]=size(C1);
n_d=1;n_z=1;

mu_1=[1;1]; 
H0=[eye(n_x) zeros(n_x,n_u);zeros(n_u,n_x) zeros(n_u,n_u)];
H1=[zeros(n_x,n_u);mu_1(1)*eye(n_u);zeros(n_d,n_u);zeros(n_x,n_u);mu_1(2)*eye(n_u);zeros(n_d,n_u)];

gamma2=sdpvar(1,1,'full');
P=sdpvar(n_x+n_u,n_x+n_u);
X11=sdpvar(2*(n_x+n_u+n_d),n_x,'full'); 
G=sdpvar(n_u,n_u,'full');
X2=sdpvar(2*(n_x+n_u+n_d),n_z,'full');
GK=sdpvar(n_u,n_y,'full');

Psi_d=[P                     zeros(n_x+n_u,n_d);
       zeros(n_d,n_x+n_u)    eye(n_d,n_d)];    
Sigma_d=mdiag(Psi_d,-H0'*P*H0,-gamma2*eye(n_d));

Xi=Sigma_d...
    +[-X11 -H1*G -X2 [X11*A+H1*GK*C1+X2*C2 X11*B-H1*G] X11*D1+X2*D2]...
    +[-X11 -H1*G -X2 [X11*A+H1*GK*C1+X2*C2 X11*B-H1*G] X11*D1+X2*D2]';

LMI_S= [lmi(gamma2>=0):'gamma_d']; 
LMI_S= LMI_S+[lmi(P>=0):'P'];  
LMI_S=LMI_S+[lmi(Xi<=0):'LMI_S'];
 
options = sdpsettings('solver','mosek','shift','0.00');  
solution 
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值