欢迎来到天天文库
浏览记录
ID:39493571
大小:249.51 KB
页数:13页
时间:2019-07-04
《广义预测控制 GPC》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、广义预测控制(GPC)GPC算法仿真被控对象模型动态矩阵控制算法的编程原理(1)设置GPC参数,例如采样周期,预测时域,控制时域,截断步长等。(2)建立系统阶跃响应模型(3)设置初始时刻参数,例如系统的初始时刻值,柔化系数等。(4)计算参考轨迹(5)计算控制作用增量(6)实施GPC控制(7)输出结果,绘制曲线GPC算法:1.初选控制参数:Q、R、P、M、ysp、a、Â(z-1)2.采集输入、输出样本{Du(k),Dy(k)}3.用RLS算法估计参数4.递推求解Diophantine方程,得到5.计算F(k)6.在线计算控制器参数dT7.得到控制增量Du(k)和控制输入u(k)=u(k-1)
2、+Du(k)8.k+1®k,进入下一周期预测计算和滚动优化GPC程序:%Clarke广义预测控制(C=1)(对象参数已知)%N1=d、N、Nu取不同的值clearall;closeall;a=cell(1,2);b=cell(1,2);c=cell(1,1);d=cell(1,1);%对象参数symsk;k=length(k);if(0<=k<=150)a=[10.9234];b=[7.24020.9485];c=1;d=1;elseif(1503、8];b=[9.60410.34067];c=1;d=1;else(4504、:uk(i)表示u(k-i)duk=zeros(d+nb,1);%控制增量初值yk=zeros(naa,1);%输出初值w=10*[ones(L/4,1);-ones(L/4,1);ones(L/4,1);-ones(L/4+d,1)];%设定值xi=sqrt(0.01)*randn(L,1);%白噪声序列%求解多步Diophantine方程并构建F1、F2、G[E,F,G]=multidiophantine(aa,b,c,N);G=G(N1:N,:);F1=zeros(N-N1+1,Nu);F2=zeros(N-N1+1,nb);fori=1:N-N1+1forj=1:min(i,Nu)5、;F1(i,j)=F(i+N1-1,i+N1-1-j+1);endforj=1:nb;F2(i,j)=F(i+N1-1,i+N1-1+j);endendfork=1:Lif(1<=k<=150)time(k)=k;a=[10.9234];b=[7.24020.9485];c=1;d=1;y(k)=-aa(2:naa+1)*yk+b*duk(1:nb+1)+xi(k);%采集输出数据Yk=[y(k);yk(1:na)];%构建向量Y(k)dUk=duk(1:nb);%构建向量△U(k-j)elseif(1506、4142];c=1;d=1;y(k)=-aa(2:naa+1)*yk+b*duk(1:nb+1)+xi(k);%采集输出数据Yk=[y(k);yk(1:na)];%构建向量Y(k)dUk=duk(1:nb);%构建向量△U(k-j)elseif(3007、time(k)=k;a=[10.9234];b=[7.24020.9485];c=1;d=1;y(k)=-aa(2:naa+1)*yk+b*duk(1:nb+1)+xi(k);%采集输出数据Yk=[y(k);yk(1:na)];%构建向量Y(k)dUk=duk(1:nb);%构建向量△U(k-j)end%参考轨迹yr(k)=y(k);fori=1:Nyr(k+i)=alpha*yr(k+i-1)+(1-alpha)*w(
3、8];b=[9.60410.34067];c=1;d=1;else(4504、:uk(i)表示u(k-i)duk=zeros(d+nb,1);%控制增量初值yk=zeros(naa,1);%输出初值w=10*[ones(L/4,1);-ones(L/4,1);ones(L/4,1);-ones(L/4+d,1)];%设定值xi=sqrt(0.01)*randn(L,1);%白噪声序列%求解多步Diophantine方程并构建F1、F2、G[E,F,G]=multidiophantine(aa,b,c,N);G=G(N1:N,:);F1=zeros(N-N1+1,Nu);F2=zeros(N-N1+1,nb);fori=1:N-N1+1forj=1:min(i,Nu)5、;F1(i,j)=F(i+N1-1,i+N1-1-j+1);endforj=1:nb;F2(i,j)=F(i+N1-1,i+N1-1+j);endendfork=1:Lif(1<=k<=150)time(k)=k;a=[10.9234];b=[7.24020.9485];c=1;d=1;y(k)=-aa(2:naa+1)*yk+b*duk(1:nb+1)+xi(k);%采集输出数据Yk=[y(k);yk(1:na)];%构建向量Y(k)dUk=duk(1:nb);%构建向量△U(k-j)elseif(1506、4142];c=1;d=1;y(k)=-aa(2:naa+1)*yk+b*duk(1:nb+1)+xi(k);%采集输出数据Yk=[y(k);yk(1:na)];%构建向量Y(k)dUk=duk(1:nb);%构建向量△U(k-j)elseif(3007、time(k)=k;a=[10.9234];b=[7.24020.9485];c=1;d=1;y(k)=-aa(2:naa+1)*yk+b*duk(1:nb+1)+xi(k);%采集输出数据Yk=[y(k);yk(1:na)];%构建向量Y(k)dUk=duk(1:nb);%构建向量△U(k-j)end%参考轨迹yr(k)=y(k);fori=1:Nyr(k+i)=alpha*yr(k+i-1)+(1-alpha)*w(
4、:uk(i)表示u(k-i)duk=zeros(d+nb,1);%控制增量初值yk=zeros(naa,1);%输出初值w=10*[ones(L/4,1);-ones(L/4,1);ones(L/4,1);-ones(L/4+d,1)];%设定值xi=sqrt(0.01)*randn(L,1);%白噪声序列%求解多步Diophantine方程并构建F1、F2、G[E,F,G]=multidiophantine(aa,b,c,N);G=G(N1:N,:);F1=zeros(N-N1+1,Nu);F2=zeros(N-N1+1,nb);fori=1:N-N1+1forj=1:min(i,Nu)
5、;F1(i,j)=F(i+N1-1,i+N1-1-j+1);endforj=1:nb;F2(i,j)=F(i+N1-1,i+N1-1+j);endendfork=1:Lif(1<=k<=150)time(k)=k;a=[10.9234];b=[7.24020.9485];c=1;d=1;y(k)=-aa(2:naa+1)*yk+b*duk(1:nb+1)+xi(k);%采集输出数据Yk=[y(k);yk(1:na)];%构建向量Y(k)dUk=duk(1:nb);%构建向量△U(k-j)elseif(1506、4142];c=1;d=1;y(k)=-aa(2:naa+1)*yk+b*duk(1:nb+1)+xi(k);%采集输出数据Yk=[y(k);yk(1:na)];%构建向量Y(k)dUk=duk(1:nb);%构建向量△U(k-j)elseif(3007、time(k)=k;a=[10.9234];b=[7.24020.9485];c=1;d=1;y(k)=-aa(2:naa+1)*yk+b*duk(1:nb+1)+xi(k);%采集输出数据Yk=[y(k);yk(1:na)];%构建向量Y(k)dUk=duk(1:nb);%构建向量△U(k-j)end%参考轨迹yr(k)=y(k);fori=1:Nyr(k+i)=alpha*yr(k+i-1)+(1-alpha)*w(
6、4142];c=1;d=1;y(k)=-aa(2:naa+1)*yk+b*duk(1:nb+1)+xi(k);%采集输出数据Yk=[y(k);yk(1:na)];%构建向量Y(k)dUk=duk(1:nb);%构建向量△U(k-j)elseif(3007、time(k)=k;a=[10.9234];b=[7.24020.9485];c=1;d=1;y(k)=-aa(2:naa+1)*yk+b*duk(1:nb+1)+xi(k);%采集输出数据Yk=[y(k);yk(1:na)];%构建向量Y(k)dUk=duk(1:nb);%构建向量△U(k-j)end%参考轨迹yr(k)=y(k);fori=1:Nyr(k+i)=alpha*yr(k+i-1)+(1-alpha)*w(
7、time(k)=k;a=[10.9234];b=[7.24020.9485];c=1;d=1;y(k)=-aa(2:naa+1)*yk+b*duk(1:nb+1)+xi(k);%采集输出数据Yk=[y(k);yk(1:na)];%构建向量Y(k)dUk=duk(1:nb);%构建向量△U(k-j)end%参考轨迹yr(k)=y(k);fori=1:Nyr(k+i)=alpha*yr(k+i-1)+(1-alpha)*w(
此文档下载收益归作者所有