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 编辑]