⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 imgpc_costfunction.m

📁 Model-based predictive control: a practical approach此程序为模型预测控制的例程
💻 M
字号:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%   Find a predictive control law and optimal cost given predictions
%%%%   yfut = P*xfut+H*ufut+L*offset
%%%%   uss  = M(r-offset)
%%%%
%%%%   Uses the cost function   J = sum (r-y)^2 + R(u-uss)^2
%%%%     J = ufut'*S*ufut + 2 ufut'*X*[x;r-offset] + k
%%%%   
%%%%   Cost weights absolute inputs (not increments) so need assumption
%%%%             u(k+nu+i) = u(k+nu-1) in predictions
%%%%
%%%%   Control weighting          R
%%%%   Control/ouput horizon      nu, ny
%%%%   Output dimension           sizey
%%%%
%%%%   Control law is
%%%%         ufut = -K*x  + Pr*(r-offset)     (No advance knowledge is used)
%%%%
%%%%   [S,X,K,Pr] = imgpc_costfunction(H,P,L,M,R,nu,sizey,ny);
%%  
%% Author: J.A. Rossiter  (email: J.A.Rossiter@shef.ac.uk)

function [S,X,K,Pr,H] = imgpc_costfunction(H,P,L,M,R,nu,sizey,ny);


%% J = | Lr - P x- H ufut - L*offset |  + R |ufut-uss|
%% J = | Lr - P x- H ufut - L*offset |  + R |ufut - M*(r-offset)|

%%% Sum last columns of H
v=(nu-1)*sizey;
for k=1:sizey;
    HH(:,k) = sum(H(:,v+k:sizey:end),2);
end
H = [H(:,1:(nu-1)*sizey),HH];

%%% Form weighting matrix and uss matrix
MM=[];
for k=1:nu;
    v = (k-1)*sizey+1:k*sizey;
    RR(v,v)=R;
    MM=[MM;M];
end


%%%% Cost function
%% J = | L*r - P x- H ufut - L*offset |  + R |ufut - MM*(r-offset)|
%% J = ufut'*S*ufut + 2 ufut'*X*[x;r-offset] + k
%%   = ufut'(H'H+R)ufut   +  2ufut'* H'*P*x + 2ufut'*H'*L*(offset-r)
%%               - 2*ufut'R*MM*(r-offset) + k

S = H'*H+RR;
X1 = H'*P;
X2 = -H'*L-RR*MM;
X=[X1,X2];

%%%% Unconstrained control law
%%%%         ufut = -K*x  + Pr*(r-offset)     (No advance knowledge is used)
Mi=inv(S);
K = Mi*X1;
Pr = -Mi*X2;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -