matlab 用于预测的算法,Matlab关于模型预测算法(mpc)求教

g11=poly2tfd(12.8,[16.7 1],0,1);

g21=poly2tfd(6.6,[10.9 1],0,7);

g12=poly2tfd(-18.9,[21.0 1],0,3);

g22=poly2tfd(-19.4,[14.4 1],0,3);

gd1=poly2tfd(3.8,[14.9 1],0,8);

gd2=poly2tfd(4.9,[13.2 1],0,3);

tfinal=200;               %Model horizon N

delt=1;                   %sampling period

ny=2;                     %Number of outputs

model=tfd2step(tfinal,delt,ny,g11,g21,g12,g22);

plant=model;              %No plant/model mismatch

dmodel=[];  %Default disturbance model

dplant=tfd2step(tfinal,delt,ny,gd1,gd2)

P=90;M=30;                 %Horizons

ywt=[1 1]; uwt=[0.1 0.1]; %Q and R

tend=200;                  %final time for simulation

r=[-0.02 0.01];                   %Set-point change inXD XB

a=zeros([1,tend]);

for i=501:tend

a(i)=0.03*2.45;         % 3 %step in F at t=50 min.

end

dstep=[a'];

ulim=[-0.15 -0.15 .15 .15 1000 1000];%u limits

ylim=[];

tfilter=[];

[y1,u1]=cmpc(plant,model,ywt,uwt,M,P,tend,r,ulim,ylim,tfilter,dplant,dmodel,dstep);

figure(1)

subplot(211)

plot(t1,y1)

legend('MPC','PID')

ylabel('wt-change')

subplot(212)

stairs(t1,u1)     %Plot input as staircase functions

legend('R','S')

xlabel('Time(min)')

我毕业设计的做的是PID解耦控制策略和模型预测控制策略比较。解耦控制做出来的控制效果要优于模型预测控制。这就让我很伤心了,本来想说预测控制有多好多好,结果却不令人满意。我估计是我采样时间太大。我PID解耦控制是在SIMULINK里做的,采样时间为0.001,但是这个改变delt是不行的,必须要对

for i=501:tend

a(i)=0.03*2.45;         % 3 %step in F at t=50 min.

end

dstep=[a'];

进行修改。

还有就是cmpc()这个算法不清楚其内部结构。

望高手解惑!!!!!!!!!!!!!

[本帖最后由 lichaochun007 于 2009-4-16 20:15 编辑]