MPC matlab demo
前言
本文是基于matlab/simulink中的模型预测控制例子的学习记录
提示:以下是本篇文章正文内容
一、模型预测控制的理论(MPC)
模型预测控制在实现过程中有3个关键步骤,一般被称为3项基本原理,分别是预测模型、滚动优化和反馈校正。
1:预测模型:预测模型是模型预测控制的基础。其主要功能是根据对象的立式信息和未来输入,预测系统未来的输出。对预测模型的形式没有做严格的限定,状态方程、传递函数这类传统的模型都可以作为预测模型。对于线性稳定系统,阶跃响应、脉冲响应这类非参数模型,也可以直接作为预测模型使用。
2:滚动优化:模型预测控制通过某一性能指标的最优来确定控制作用,但优化不是一次离线进行,而是反复在线进行的。这就是滚动优化的含义,也是模型预测控制区别于传统最优控制的根本点。
3:反馈校正:为了防止模型失配或者环境干扰引起控制对理想状态的偏离,在新的采样时刻,首先检测对象的实际输出,并利用这一实时信息对基于模型的预测结果进行修正,然后再进行新的优化。
二、实例代码
代码如下:
%% Control of a Single-Input-Single-Output Plant
% This example shows how to control a double integrator plant under input
%这个例子展示了如何在输入下控制一个双积分器装置
% saturation in Simulink(R).
% Copyright 1990-2014 The MathWorks, Inc.
%% Define Plant Model
% The linear open-loop dynamic model is a double integrator:
%线性开环动力学模型为双积分器:
plant = tf(1,[1 0 0]);
%% Design MPC Controller
% Create the controller object with sampling period, prediction and control
% horizons:
%创建控制器的采样时间,预测时域和控制时域
Ts = 0.1;
p = 10;
m = 3;
%定义模型预测控制器
mpcobj = mpc(plant, Ts, p, m);
%%
% Specify actuator saturation limits as MV constraints.
%限制控制器的输出,对双积分系统来说是限制输入
mpcobj.MV = struct('Min',-1,'Max',1);
%% Simulate Using Simulink(R)
% To run this example, Simulink(R) is required.
%判断是否存在simulink模型,显示需要simulink模型
if ~mpcchecktoolboxinstalled('simulink')
disp('Simulink(R) is required to run this example.')
return
end
%%
% Simulate closed-loop control of the linear plant model in Simulink.
% Controller "mpcobj" is specified in the block dialog.
%在simulink中对线性模型进行闭环控制仿真,指定MPC块的名字为mpcobj
mdl = 'mpc_doubleint';
open_system(mdl);%打开simulink模型
sim(mdl);%对模型开始仿真
%%
% The closed-loop response shows good setpoint tracking performance.
%%
%bdclose(mdl)%关闭simulink模型
2.simulink模型
结果
控制变量与控制结果
这里为MPC工具箱,相关MPC的控制也可以在此进行。
总结
参考文献:《无人驾驶车辆模型预测控制》