• 大小: 892B
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-12
  • 语言: Matlab
  • 标签: DMC  算法  

资源简介

一阶纯滞后的动态控制矩阵算法(DMC)控制,单容水箱控制的matlab程序,程序运行有效。

资源截图

代码片段和文件信息

clc
clear
num=[1];
den=[2 1 1];
numm=[1];
denm=[2 2 1];                                %定义对象和模型的传递函数
n=200;
t1=0:0.5:n/10;
a=1*step(numdent1)‘;
am=1*step(nummdenmt1)‘;                    %分别定义动态矩阵a和am
for i=1:40
    a(i)=a(i+1);
end
for i=1:40
    am(i)=am(i+1);
end
N=40;p=8;
M=3;m=M;
A=zeros(pm);
for i=1:p
    for j=1:m
        if i==j
            A(ij)=am(1);
        else if i>j
                A(ij)=am(1+i-j);
            else A(ij)=0;
            end
        end
    end
end
R=0.9*eye(m);                               
Q=1.0*eye(p);                                                    
H=0.8*ones(p1);                                     %系数矩阵初始附值
A0=zeros(pN-2);
for i=1:p
    for j=1:N-2
        if(i<=j) A0(ij)=am(N-1-j+i);
       else A0(ij)=0;
        end
    end
end
e=zeros(14*N);
y=e;ym=y;U=ym;vU=U;U0=U;
Y0=zeros(14*N);
C=1;
Yr=zeros(14*N);
for k=N+1:4*N
y(k)=a(1:N-1)*vU(k-1:-1:k-N+1)‘+a(N)*U(k-N);             %求解对象输出量
ym(k)=am(1:N-1)*vU(k-1:-1:k-N+1)‘+am(N)*U(k-N);        %求解模型输出量
e(k)=y(k)-ym(k);
Y0(k+1:k+p)=(A0*vU(k+2-N:k-1)‘+am(N)*U(k+1-N:k+p-N)‘)‘; %求初始预测值
 for j=1:p
      w=0.8;
       Yr(k+j)=w^(j)*y(k)+(1-w^(j))*C;                                         
    end                                                        
dt=[1 zeros(1m-1)]*inv(A‘*Q*A+R)*A‘*Q;
   vU(k)=dt*(Yr(k+1:k+p)‘-Y0(k+1:k+p)‘-H*e(k));
     U(k)=U(k-1)+vU(k);
     end
t=0:0.5:70/2-0.5;
plot(ty(N:N+69)tYr(N:N+69)tC*ones(170));

grid on
legend(‘输出‘‘柔化曲线‘‘期望曲线‘);
hold on
stairs(tU(N:N+69)‘k‘);
title(‘The Predictive control plot of DMC‘);
xlabel(‘t‘);
ylabel(‘y、u、Yr、C‘);
hold off

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       1741  2012-06-11 14:54  DMC.m

----------- ---------  ---------- -----  ----

                 1741                    1


评论

共有 条评论