DMC仿真算例Word文档下载推荐.docx
《DMC仿真算例Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《DMC仿真算例Word文档下载推荐.docx(13页珍藏版)》请在冰豆网上搜索。
控制时域长度M在优化性能指标中表示所要确定的未来控制量的改变数目,即优化变量的个数。
在预测时域长度P已知的情况下,控制时域长度M越小,越难保证输出在各采样点紧密跟踪期望输出值,系统的响应速度比较慢,但容易得到稳定的控制和较好的鲁棒性;
控制时域长度M越大,控制的机动性越强,能够改善系统的动态响应,增大了系统的灵活胜和快速性,提高控制的灵敏度,但是系统的稳定性和鲁棒性会变差。
因此,控制时域长度的选择应兼顾快速性和稳定性。
5、实验控制算法实例仿真
被控对象模型为
分别用MAC和DMC算法进行仿真。
无论是MAC还是DMC算法,它们都适用于渐进稳定的线性对象,先对该对象进行MAC算法仿真,MAC预测模型为
,j=1,2,3,……,P.。
写成矩阵形式为
,即
预测误差为
,参考轨迹
。
流程图如下
1.算法实现
由于DMC算法是一种基于模型的控制,并且运用了在线优化的原理,与PID算法相比,显然需要更多的离线准备工作
(1)测试对象的阶跃响应要经过处理及模型验证后得到的模型系数a1,……aN。
在这里,应该强调模型动态响应必须是光滑的,测量噪声和干扰必须滤除
(2)利用仿真程序确定优化策略,计算出控制系数d1……dp。
(3)选择校正系数h1……hN。
这三组动态系数确定后,应置入固定内存单元,以便实时调用。
2.参数选择
当DMC算法在线实施时,只涉及模型参数ai,控制参数di和校正参数hi。
但其中除了hi可以由设计者自由选择外,ai取决于对象阶跃响应特性及采样周期的选择,di取决于ai及优化性能指标,他们都是设计的结果而非直接可调参数。
在设计中,真正要确定的参数应该是
(1)采样周期T
(2)滚动优化参数的初值,包括预测时域长度P,控制时域长度M,误差权矩阵Q和控制权矩阵R
(3)误差校正参数hi。
3.用DMC算子进行仿真,得出
结合matlab中simulink框图和程序对对象进行仿真,得出的结果如下图所示,
结论:
图中曲线为使用DMC控制后系统的阶跃响应曲线。
从图中可看出:
采用DMC控制后系统的调整时间小,响应的快速性好,而且系统的响应无超调。
该结果是可以接受的。
优化时域P表示我们对k时刻起未来多少步的输出逼近期望值感兴趣。
控制时域M表示所要确定的未来控制量的改变数目。
模型算法控制(MAC)方案设计图
模型算法控制(MAC)由称模型预测启发控制(MPHC),与MAC相同也适用于渐进稳定的线性对象,但其设计前提不是对象的阶跃响应而是其脉冲响应。
它的原理结构图如下图所示:
图模型算法控制原理结构图
附录
clc
clear
Num1=[0.2713];
den=[10.9];
numm=[0.2713];
denm=[11];
%定义对象及模型的传递函数
n=40;
t1=0:
0.1:
n/10;
g=1*impulse(Num1,den,t1)'
;
gm=1*impulse(numm,denm,t1)'
fori=1:
n
g(i)=g(i+1);
end
gm(i)=gm(i+1);
a=g;
am=gm;
N=40;
p=15;
M=1;
m=M;
G=zeros(p,m);
p
forj=1:
m
ifi==j
G(i,j)=g
(1);
elseifi>
j
G(i,j)=g(1+i-j);
elseG(i,j)=0;
end
ifi>
s=0;
fork=1:
(i-m+1)
s=s+g(k);
G(i,m)=s;
end
F=zeros(p,n-1);
k=1;
forj=(n-1):
-1:
1
F(i,j)=g(n);
j
F(i,j)=0;
elseF(i,j)=g(i+k);
k=k+1;
end
R=1.0*eye(m);
Q=0.9*eye(p);
H=0.3*ones(p,1);
%定义各系数矩阵
e=zeros(4*N,4);
y=e;
ym=y;
U=zeros(4*N,4);
w=1;
Yr=zeros(4*N,4);
b=[0.1;
0.4;
0.6;
0.9];
fori=1:
4
fork=N+1:
4*N
y(k,i)=a(1:
N)*U(k-1:
k-N,i);
%求解对象输出
ym(k,i)=am(1:
%求解模型输出
e(k)=y(k)-ym(k);
forj=1:
p
Yr(k+j,i)=b(i)^(j)*y(k)+(1-b(i)^(j))*w;
dt=[1zeros(1,m-1)]*inv(G'
*Q*G+R)*G'
*Q;
U(k,i)=dt*(Yr(k+1:
k+p,i)-F*U(k-N+1:
k-1,i)-H*e(k));
t=0:
11.9;
subplot(2,1,1);
plot(t,y(N:
N+119,1))
holdon;
N+119,2))
holdon
N+119,3))
N+119,4))
%t,y(N:
N+119,3),t,y(N:
N+119,4),t,Yr(N:
N+119,1),t,w*ones(1,120));
%gridon
%legend('
输出1'
'
输出2'
输出3'
输出4'
柔化曲线'
期望曲线'
);
%title('
PlotofMAC'
%plot(U);
%gridon;
%DMC.m动态矩阵控制(DMC)
Num1=0.2713;
den=[1-0.83510000];
G=tf(Num1,den,’Ts’.0.4);
%连续系统
Ts=0.4;
%采样时间Ts
G=c2d(G,Ts);
%被控对象离散化
[Num1,den,]=tfdata(G,'
v'
N=60;
%建模时域N
[a]=step(G,1*Ts:
Ts:
N*Ts);
%计算模型向量a
M=2;
%控制时域
P=15;
%优化时域
M
P-j+1
A(i+j-1,j)=a(i,1);
end%动态矩阵A
Q=1*eye(P);
%误差权矩阵Q
R=1*eye(M);
%控制权矩阵R
C=[1,zeros(1,M-1)];
%取首元素向量C1*M
E=[1,zeros(1,N-1)];
%取首元素向量E1*N
d=C*(A'
*Q*A+R)^(-1)*A'
%控制向量d=[d1d2...dp]
h=1*ones(1,N);
%校正向量h(N维列向量)
I=[eye(P,P),zeros(P,N-P)];
%Yp0=I*YNo
S=[[zeros(N-1,1)eye(N-1)];
[zeros(1,N-1),1]];
%N*N移位阵S
sim('
DMCsimulink'
)%运行siumlink文件
%图形显示
plot(y,'
LineWidth'
2);
plot(w,'
:
r'
xlabel('
\fontsize{15}k'
ylabel('
\fontsize{15}y,w'
legend('
输出值'
设定值'
)
gridon;
subplot(2,1,2);
plot(u,'
g'
\fontsize{15}u'
附2DMC程序代码
%DMC控制算法
num=0.2713;
G=tf(num,den,’Ts’.0.4);
[num,den,]=tfdata(G,'