1.//模型预测控制算法基础

/模型预测控制的基本思想就是利用已有的模型、系统当前的状态和未来的控制量去预测系统未来的输出。通过滚动地求解带约束优化问题来实现控制目的。

预测模型。预测模型是模型预测控制的基础,能够根据历史信息和控制输入预测系统未来的输出。

滚动优化。模型预测控制通过使某项性能评价指标最优来得到最优控制量,这种优化过程不是离线进行的,而是反复在线进行的,这也是模型预测控制与传统最优控制的根本区别。

反馈校正。为了抑制由于模型失配或者环境干扰引起的控制偏差,在新的采样时刻,首先检测对象的实际输出,并利用这一实时信息对基于模型的预测进行修正,然后再进行新的优化。

bd666fb7601bef5415c0628464b9da39.png

bd06dcfc75d7c98fbf0e6b39aef95ab7.png

/

/模型预测控制通常将待优化问题转换成二次型规划问题。二次型规划是一个典型的数学优化问题,它的优化目标为带有线性或者非线性约束的二次型实函数,常用的解法为有效集法或者内点法。/

//

2.//一个基于MPC工具箱的速度控制实例

/

6c646474e568dbe5e2344e12e05417b4.png

/

/doubleint.m/

%% 利用mpc工具箱,实现双积分系统的模型预测控制

%% 模型

plant = tf(1,[1 0 0]);

%% 设置mpc控制器

%采样时间

Ts = 0.1;

%预测范围

p = 10;

%控制范围

m = 3;

% MPC控制器

mpcobj = mpc(plant, Ts, p, m);

%限制控制器的输出,对双积分系统来说是限制输入

mpcobj.MV = struct('Min',-1,'Max',1);

%% 判断是否具有simulink模块

if ~mpcchecktoolboxinstalled('simulink')

disp('Simulink(R) is required to run this example.')

return

end

%% 打开搭建好的simulink模型

mdl = 'DoubleInt';

open_system(mdl);

sim(mdl);

/DoubleInt.slx/

7593a5643d2d5c098ba5ac009251a610.png

注意:此时查看示波器没有任何输出。因为m文件中的mpcobj还没有导入simulink中。需要按以下步骤设置。并且设置初始状态为空。

c19ede1710b232b59b722b43e814e099.png

/输入、输出/

c63a5e076d4ff60889a0ca17e3cdfaaa.png

14cd1f39895c71c67067887cf79527d4.png

//

3.//速度跟踪的模型预测控制方法

待更新

//

Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐