資源簡介
文件里有DMC算法的源程序,在matlab中可以完美的運行,文件格式為m文件。
代碼片段和文件信息
clc
clear
%DMC預測控制在加熱系統溫度控制中的應用仿真程序
startvalue=0;%系統初始輸出值
x1=startvalue;????????
x2=0;
c=3;%階躍值
pipestartvalue=0;%管溫初始值
step=250;%仿真長度
P=80;%預測時域長度賦值
M=2;%控制時域長度賦值
Q=eye(P);%構造預測輸出誤差加權陣
for?i=1:1:15
Q(ii)=0;
end%預測輸出誤差加權陣.對應純滯后長度的權值取0
S=zeros(P);%構造移位矩陣
for?i=1:1:P
if?iS(ii+1)=1;
end
if?i==P
S(PP)=1;
end
end
Rl=eye(M);%構造控制增量加權矩陣R
R=0.1*Rl;
HT=linspace(11P);
H=HT;%構造誤差校正向量
for?i=2:1:P
H(i)=0.9;
end
d1=linspace(00M);%構造向量d
d1(1)=1;
d=d1;
%給階躍響應序列al賦值
a1=[2.122.22.192.182.172.162.152.192.202.112.22.132.142.152.162.172.182.192.202.112.122.132.142.152.162.172.182.192.202.112.122.132.142.152.162.172.182.192.202.112.122.132.142.152.162.172.182.192.202.112.122.132.142.152.162.172.182.192.202.112.122.132.142.152.162.172.182.192.202.112.122.132.142.152.162.172.182.192.202.112.122.132.142.152.162.172.182.192.20];
a1=a1*1;
%計算AT
for?i=1:1:P
for?j=1:1:M
if?j<=i
A(ij)=a1(i-j+1);
end
if?j>i&j<=M
A(ij)=0;
end;
if?i>=M
A(ij)=a1(i-j+1);
end
end
end
AT=A‘;
%計算DT
DT=d*inv(AT*Q*A+R)*AT*Q;%計算得到行向量DT(1xP,1x80)
a=a1(1:P);%計算a列向量(80x1Pxl)
qul=linspace(00P);
qul(1)=1;%構建取1向量
for?i=1:1:step
Uk(i)=0;%初始化Uk,用來記錄控制量
Yk1(i)=0;%初始化Ykl,用來記錄實際仿真輸出值
t(i)=i;%計時
評論
共有 條評論