%分散广义预测控制(C=1)(对象参数已知)
clear all;
clc;
close all;
%---------------参数设置----------------------
num=1;den=[10,1];L=20;
Ts=10;
[A,B,d]=tf2AB(num,den,L,Ts)
[na,nb]=rankn(A,B);
N=5;
Nu=2;
lambda=0.5*eye(Nu); deta=1;
alpha=0.2;
A1=conv(A,[1 -1]);naa=na+1;
[E,F]=diophantine(A,N,d);
G=getGij(B,E);
[Gk,Gpk,Gku]=getG(G,Nu)
%-------------------------------------------
tend=100;
uk=zeros(d+nb+1,1);
duk=zeros(d+nb+1,1);
yk=zeros(naa,1);
w=ones(tend+d+N,1);
for k=1:tend
time(k)=k*Ts;
y(k)=-A1(2:naa+1)*yk+B*duk(d+1:nb+d+1);
Yk=[y(k); yk(1:na)];
dUk=duk(1:d+nb);
%----------参考轨迹-------------
r=filter((1-alpha),[1 -alpha],w);
Yr=zeros(N,1);
Yr=[r(k+d+1:k+d+N)];
%-----------求控制量-----------
dU=inv(Gku'*Gku+lambda)*Gku'*(Yr-Gpk*dUk-F*Yk);
du(k)=dU(1); u(k)=uk(1)+du(k);
%----------更新数据------------
for i=1+d+nb:-1:2
uk(i)=uk(i-1);
duk(i)=duk(i-1);
end
uk(1)=u(k);
duk(1)=du(k);
for i=naa:-1:2
yk(i)=yk(i-1);
end
yk(1)=y(k);
end
%-------------绘图--------------------
subplot(2,1,1);
plot(time(1:tend),w(1:tend),'r:',time(1:tend),y(1:tend));
grid on;
xlabel('time(s)'); ylabel('w,y');
axis([0,tend*Ts,0,1.2]);
legend('w','y');
title('generalized predictive control');
subplot(2,1,2);
plot(time,u);
grid on;
xlabel('time(s)'); ylabel('u');
axis([0,tend*Ts,-0.1,1.5]);
legend('u');
title('Control action');
gpc.rar_gpc_gpc matlab code_gpc代码_广义预测_预测控制
版权申诉
5星 · 超过95%的资源 8 浏览量
2022-07-15
10:45:31
上传
评论
收藏 898B RAR 举报
钱亚锋
- 粉丝: 86
- 资源: 1万+
最新资源
- 信息办公个人求职管理系统-jobgljsp.rar
- 信息办公一流网络JSP网络管理系统 v1.0-yljsp10.rar
- chirpstack学习
- 管家婆辉煌、财贸、工贸、服装,食品,千方模拟狗
- 基于python开发的工业环境老鼠检测+源码+文档(毕业设计&课程设计&项目开发)
- USB转以太网的芯片SR9900全套设计资料包括(参考设计原理图PCB+ Linux -Windows驱动程序+量产工具)
- 信息办公XML考试系统-xmlks.rar
- 基于python开发的无人机图像目标检测+实验数据+开发文档+操作流程+源码(毕业设计&课程设计&项目开发)
- 全球智能商品管理与优化系统
- IDM下载器(电脑小工具)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论2