mpc_constraints.m

来自「Easily editable files to simulate three 」· M 代码 · 共 39 行

M
39
字号
%%%%%%   Define constraint matrices for GPC (no output constraints)%%%%%%   CC*Du(future) - dd - dd1*u(k) <= 0%%%%%%  %%%%%%   Dumax is limits on input increments (symetrical)%%%%%%   umax and umin are limits on the inputs%%%%%%   nu is the control horizon%%%%%%   sizeu is the number of inputs%%%%%%%%%%%%  [CC,dd,dd1] = mpc_constraints(Dumax,umax,umin,sizeu,nu);%%  %% Author: J.A. Rossiter  (email: J.A.Rossiter@shef.ac.uk)function [CC,dd,dd1]  = mpc_constraints(Dumax,umax,umin,sizeu,nu);%%%% Set up constraints for each loop in turnfor j=1:sizeu;    d(1:2*nu,j) = ones(2*nu,1)*Dumax(j);    C(1:nu,1:nu,j) = eye(nu);    C(nu+1:2*nu,1:nu,j) = -eye(nu);        d(2*nu+1:4*nu,j) = [ones(nu,1)*umax(j);-ones(nu,1)*umin(j)];    C(2*nu+1:3*nu,1:nu,j) = tril(ones(nu,nu));    C(3*nu+1:4*nu,1:nu,j) = -tril(ones(nu,nu));    d1(2*nu+1:4*nu,j) = [-ones(nu,1);ones(nu,1)];    end%%%% Combine loop constraints into single inequality conditionfor i=1:sizeu;  CC(i:sizeu:4*sizeu*nu,i:sizeu:nu*sizeu) = C(:,:,i);  dd(i:sizeu:4*sizeu*nu,1) = d(1:4*nu,i);  dd1(i:sizeu:4*sizeu*nu,i) = d1(1:4*nu,i);  end

⌨️ 快捷键说明

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