目录

一、背景

二、工具

三、实例

3.1 建立被控对象模型

3.2 搭建SIMULINK模型

3.3 编写.m文件(已经注释了)

3.4 运行.m文件,会自动运行.mdl文件,可以查看结果

3.5 同时运行2个以上控制器

PS:需要源程序的在评论区留下邮箱和MATLAB版本号


一、背景

       要用模型预测控制(MPC)做算法的对比实验,发现写纯.m文件有点麻烦,毕竟我不深入原理,于是用MATLAB/SIMULINK自带的MPC controller模块,真是太节省时间了。MPC需4个模块:被控对象的数学模型、预测模型、优化算法以及矫正反馈。使用自带的MPC control模块的话,只需要知道被控对象的数学模型就行了。下面用一个实例进行介绍。

二、工具

①SIMULINK模型

②.m文件

②我的版本:MATLAB2020a

三、实例

3.1 建立被控对象模型

      被控对象为双积分系统,即被控对象是两个电容并联

3.2 搭建SIMULINK模型


simulink神经网络 simulink神经网络预测控制器_算法

SIMULNK仿真

simulink神经网络 simulink神经网络预测控制器_simulink_02

模型设置

3.3 编写.m文件(已经注释了)

clc
plant = tf(1,[1 0 0]);
%% 设置mpc控制器
%采样时间
Ts = 0.1;
%预测范围
p = 10;
%控制范围
m = 3;
% MPC控制器
mpcobj1 = mpc(plant, Ts, p, m);%写入MPC控制器的名字
% mpcobj2 = mpc(plant, Ts, p, m);
%限制控制器的输出
mpcobj1.MV = struct('Min',-1,'Max',1);
% mpcobj2.MV = struct('Min',-1,'Max',1);
%% 打开搭建好的simulink模型
mdl = 'model';%.mdl文件的名字
open_system(mdl);
sim(mdl);

3.4 运行.m文件,会自动运行.mdl文件,可以查看结果


simulink神经网络 simulink神经网络预测控制器_仿真器_03

运行结果

3.5 同时运行2个以上控制器

      有的人可能会问了,怎么运行两个以上的控制器呢?比如下图:


simulink神经网络 simulink神经网络预测控制器_仿真器_04

仿真模型

只需要把.m文件修改这样即可:

% MPC控制器
mpcobj1 = mpc(plant, Ts, p, m);
mpcobj2 = mpc(plant, Ts, p, m);
%限制控制器的输出
mpcobj1.MV = struct('Min',-1,'Max',1);
mpcobj2.MV = struct('Min',-1,'Max',1);

记得,要把MPC控制器中的变量名字也对应替换,结果如下所示:


simulink神经网络 simulink神经网络预测控制器_simulink_05

仿真结果