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

📄 explitmpc.m

📁 本程序是显式模型预测控制算法
💻 M
字号:
clear all;
format long;
for t=1:2000
    y(t)=(1+tanh((t-1000)/2000*pi*1.5))/2;
end
A1=[0.2730 0.0660 0.3021 -0.5012;0.2717 0.4416 0.5602 -0.7123;0.3051 -0.7865 0.7651 0.3121;0.7962 -0.1452 0.5231 -0.9345];
A2=[0.2093 -0.1981 -0.2394 0.5671;0.2717 0.4598 0.5602 1.3782;-0.4700 0.6700 -0.8600 -1.2400;0.3456 -0.6312 -1.4594 1.8936];
B1=[0.2300;0.2601;0.1213;1.3452];
B2=B1;
Q=1;R=0.1;
X=[-0.3964;0.4377;-1.0905;1.1137];
yy=[X];
for k=1:19
    A=y(k*100)*A1+(1-y(k*100))*A2;
    B=B1;
    
   setlmis([]);
   gama=lmivar(1,[1 1]);
   u=lmivar(1,[1 1]);
   Q1=lmivar(1,[4 1]);
   Y=lmivar(2,[1 4]);
%S=lmivar(1,[2 0;2 1]);

%%% 1st lmi%%%%
   lmiterm([-1 1 1 0],1);
   lmiterm([-1 1 2 -u],1,B');
   lmiterm([-1 1 2 0],X'*A');
   lmiterm([-1 1 3 0],X'*Q^(0.5));
   lmiterm([-1 1 4 -u],1,R^(0.5));
   
   lmiterm([-1 2 1 u],B,1);
   lmiterm([-1 2 1 0],A*X);
   lmiterm([-1 2 2 Q1],1,1);
   
   lmiterm([-1 3 1 0],Q^(0.5)*X);
   lmiterm([-1 3 3 gama],1,1);
   
   
   lmiterm([-1 4 1 u],R^(0.5),1)
   lmiterm([-1 4 4 gama],1,1);
% %%% 2st lmi%%%%%
   lmiterm([-2 1 1 Q1],1,1);
   lmiterm([-2 1 2 -Y],1,B1');
   lmiterm([-2 1 2 Q1],1,A1');
   lmiterm([-2 1 3 Q1],1,Q^(0.5));
   lmiterm([-2 1 4 -Y],1,R^(0.5));
   
   lmiterm([-2 2 1 Y],B1,1);
   lmiterm([-2 2 1 Q1],A1,1);
   lmiterm([-2 2 2 Q1],1,1);
   
   lmiterm([-2 3 1 Q1],Q^(0.5),1);
   lmiterm([-2 3 3 gama],1,1);
   
   lmiterm([-2 4 1 Y],R^(0.5),1);
   lmiterm([-2 4 4 gama],1,1);
% %%% 3st lmi%%%%%
   lmiterm([-2 1 1 Q1],1,1);
   lmiterm([-2 1 2 -Y],1,B2');
   lmiterm([-2 1 2 Q1],1,A2');
   lmiterm([-2 1 3 Q1],1,Q^(0.5));
   lmiterm([-2 1 4 -Y],1,R^(0.5));
   
   lmiterm([-2 2 1 Y],B2,1);
   lmiterm([-2 2 1 Q1],A2,1);
   lmiterm([-2 2 2 Q1],1,1);
   
   lmiterm([-2 3 1 Q1],Q^(0.5),1);
   lmiterm([-2 3 3 gama],1,1);
   
   lmiterm([-2 4 1 Y],R^(0.5),1);
   lmiterm([-2 4 4 gama],1,1);
% lmiterm([-3 1 1 S],1,1);
% lmiterm([3 1 1 0],1)
  lmisys=getlmis;
  c=[1;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0];
  options=[1e-5,0,0,0,0];
  [copt(k),xopt]=mincx(lmisys,c,options)
  u(k)=dec2mat(lmisys,xopt,u);
  X=A*X+B*u(k);
  yy=[yy X];
end

⌨️ 快捷键说明

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