嗨,我试图定义一个模型预测控制器,我不能让它正常工作。我目前正在使用Matlab函数nlmpc,并使用非线性mpc块将其实现到Simulink中。
我从Matlab www.example.com找到了这个文档https://se.mathworks.com/help/mpc/ug/optimization-problem.html#bujxvp9-9
我想在哪里使用替代成本函数,有人能帮助我如何指定吗?我尝试定义自己的自定义函数(没有任何运气)。
nlobj = nlmpc(nx,ny,nu);
nlobj.Ts = Ts_mpc;
nlobj.PredictionHorizon = N;
nlobj.ControlHorizon = Nc;
nlobj.Model.IsContinuousTime = false;
nlobj.Model.StateFcn = @MPC_state_function;
nlobj.Optimization.CustomCostFcn = @Cost_function;
nlobj.Optimization.ReplaceStandardCost = true;
nlobj.Weights.OutputVariables = [10 8 2 5 1 9 4];
nlobj.Weights.ManipulatedVariables = [.1 .1];
其中,自定义成本函数为J = x_e'*Q*x_e + u_e'*R*u_e;
或者,我想知道如何在Simulink中使用非线性MPC的其他建议(除了ACADO)
最好的问候
1条答案
按热度按时间62o28rlo1#
试试这个
nlobj.Optimization.ReplaceStandardCost = true;
nlobj.Optimization.CustomCostFcn = '替代成本函数';