• 大小: 4KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-06-19
  • 语言: Matlab
  • 标签:

资源简介

自己编写的GPC程序,已经运行通过,有需要的朋友可以参考一下。注:自适应预测控制

资源截图

代码片段和文件信息

clear 
%disp(‘单变量系统的测控制算法‘);
%disp(‘广义预测控制算法的初始植‘);
n=4;%input(‘预测长度n=‘);
m=3;%input(‘控制长度m=‘);
t0=0.5;%input(‘控制加权=‘);
a=0.4;%input(‘柔化系数a=‘);
p=0.98;
A=[1;-1.5;0.7];B=[1;1.5];A1=[2.5-2.20.7];B1=[1.5];
%参数初始化
T=50;
na=length(A)-1;
nb=length(B)-1;
A2=zeros(na+11);
A2(11)=1;
B2=zeros(nb+11);
Q0=zeros(na+nb+11);
for l=1:1:na+nb+1
    if(l     Q0(l1)=A(l+11);
    end
   if (l>na)   
   Q0(l1)=B(l-na1);
   end
end
Q1=zeros(na+nb+11);
Q2=zeros(na+nb+11);
P1=(1e+5)*eye(na+nb+1);
P2=(1e+5)*eye(na+nb+1);
uu=zeros(n1);
yy=zeros(n1);
y1=zeros(na+11);
u1=zeros(nb1);
G=zeros(nm);
u=zeros(m1);
t=zeros(T1);
t(11)=1;
t(21)=2;
uuu=zeros(T1);
yyy=zeros(T1);
uuu(11)=0;
uuu(21)=0;
yyy(11)=0;
yyy(21)=0;
yyr=zeros(T1);
yyr(11)=1.5;
yyr(21)=1.5;
yd=zeros(n1);
 dy=zeros(na1);
 ddu=zeros(nb+11);
%求F,H,G,E,
% 开始循环
for ij=3:T
     t(ij1)=ij;
for s=1:1:na
    if(ij-s-1>0)
        dy(s1)=-(yyy(ij-s1)-yyy(ij-s-11));
    end
end
for s1=1:1:nb+1
    if(ij-t-1>0)
        ddu(s11)=uuu(ij-s11)-uuu(ij-s1-11);
    end
end
%DDU=ddu
X=[dy;ddu];
ddy=X‘*Q0;
ss=ddy-X‘*Q1;
Q2=Q1+(P1*X*ss)/(p+(X‘*P1*X));
P2=(P1-(P1*X*X‘*P1)/(p+(X‘*P1*X)))/p;
Q1=Q2;
%q2=Q2
P1=P2;
for f=2:1:na+1
    A2(f1)=Q1(f-11);
end
for f1=1:1:nb+1
    B2(f11)=Q1(f1+na1);
end
if(nb==1)
    B1=B2(21);
end
if(nb>1)
    for k=1:1:nb
    B1(1k)=B2(k+11);
    end
end
%b1=B1
for m1=1:1:na
A1(1m1)=A2(m11)-A2(m1+11);
end
A1(1na+1)=A2(na+11);
%a1=A1
F1=zeros(1na+1);
F2=zeros(1na+1);
H1=zeros(1nb);
H2=zeros(1nb);
e=1;
E=e;
g=E(11)*B(11);
G1=g;
for i=1:na+1
    F1(1i)=A1(1i);
end
if (nb==1)
    H1(11)=B1(11);
end
if (nb>1)
    for j=1:nb
    H1(1j)=B1(1j);
    end
end
F=F1;
H=H1;
for k

评论

共有 条评论