【模型预测控制】Matlab自带MPC Designer工具(自用)

简介: 【模型预测控制】Matlab自带MPC Designer工具(自用)

官方示例

1. 用MPC Designer设计控制器

Design Controller Using MPC Designer

1.1 系统建立

对于一个 连续搅拌式反应器 Continuously Stirred Tank Reactor (CSTR) 的线性模型,

第一个输入,冷却液温度 T c T_cTc(可操控的变量)。

第二个输入,进料浓度 C A f C_{Af}CAf(无法测量的扰动)。

第一个输出,电抗器温度 T TT(可测量的输出)。

第二个输出,反应物浓度 C A C_ACA(无法测量的输出)。

系统状态方程和输出方程:

x ˙ = A x + B u y = C x + D u \dot{x}=Ax+Bu \\ y=Cx+Dux˙=Ax+Buy=Cx+Du

其中,

A = [ a 11 , a 12 ; a 21 , a 22 ] , B = [ b 11 , b 12 ; b 21 , b 22 ] , C = [ 0 , 1 ; 1 , 0 ] , D = [ 0 , 0 ; 0 , 0 ] A=[a_{11}, a_{12}; a_{21}, a_{22}], \\ B=[b_{11}, b_{12}; b_{21}, b_{22}], \\ C=[0, 1; 1, 0], \\ D=[0, 0; 0, 0]A=[a11,a12;a21,a22],B=[b11,b12;b21,b22],C=[0,1;1,0],D=[0,0;0,0]

在 Matlab 中输入CSTR系统的状态空间表达式:

A = [   -5  -0.3427;
     47.68    2.785];
B = [    0   1
       0.3   0];
C = flipud(eye(2)); % flipud:将数组从上向下翻转
D = zeros(2);
CSTR = ss(A,B,C,D); % ss:创建状态空间表达式

运行之后工作空间将会存储CSTR模型:

再输入命令 mpcDesigner ,打开 MPC Designer 工具:

再打开 MPC Structure :

Select a plant model or an MPC controller from MATLAB Workspace 中会出现工作区保留的模型,这时候选择我们刚刚建立的CSTR模型。

默认情况下,所有模型输入都被定义为可操纵变量,所有模型输出都被定义为可测量输出。

这时候需要根据我们实际模型变量进行修改。在“分配模型I/O通道”部分,分配输入和输出通道指数如下:

由于CSTR是一个稳定的连续时间线性时不变(LTI)系统,MPC Designer将控制器采样时间默认设置为0.1 Tr,其中Tr为CSTR的平均上升时间。本例中,在“指定MPC控制器采样时间”字段中,输入采样时间为0.5秒。

设置完成之后,点击 导入,退出 Define MPC Structure By lmporting 窗口,再等待一会儿,MPC Designer 会出现以下页面:

数据浏览器中的 Controllers 增加了 mpc1(使用CSTR作为其内部模型创建的默认MPC控制器),在 Scenarios 中增加了 scenario1(默认模拟场景)。

MPC Designer应用程序运行默认的模拟场景,并更新输入响应和输出响应图。闭环系统能够成功地跟踪所需的测量输出,而对于无法测量的输出则不是这样。

1.2 定义输入和输出通道属性

在 MPC Designer 选项卡上,选择 I/O Attributes 。

可以修改名称和单位:

每个输入和输出通道的 Nominal Value 默认为0,每个通道的 Scale Factor 默认为1。

点击确认之后,名字和单位更新:

1.3 配置仿真场景

在MPC设计器选项卡的 Scenarios 部分,单击 Scenario1 > Edit 。

将模拟持续时间 Simulation duration 设置为20秒。

在 “Reference Signals” 表的第一行,指定步长为2,时间为5,即模拟参考反应器温度T在5秒后到2开氏度的阶跃变化。

点击确定,动态响应图更新。

1.4 配置控制水平

在 TUNING 选项卡的 HORIZON 部分中,指定预测水平 Prediction horizon 为15,控制水平 Control horizon 为3。

动态响应图自动更新。

但是控制动作违反了冷却剂温度变化率所要求的约束。

1.5 定义输入约束

在 Design 部分,单击 Constraints 。

设置输入输出以及速率上下限:

动态响应图更新。

可以看到冷却剂温度上升趋势变缓。

1.6 控制器调优权重

Tuning > Design > Weights

将可操纵变量(MV))的 Rate Weight 增加到 0.3。

默认情况下,所有无法测量输出的权重为零。

由于只有一个被操纵变量,如果控制器试图将两个输出保持在特定的设定值,则一个或两个输出将在其响应中显示稳态误差。由于控制器忽略了零权重输出的设定值,将浓度输出权重设置为零允许反应器温度设定值跟踪与零稳态误差。

这时候动态响应更慢了。

1.7 消除输出超调

假设应用程序要求输出响应中的超调为零。在 PERFORMANCE TUNING 中,向左拖动闭环性能滑块,直到输出响应没有超调。将此滑块向左移动,同时增加了控制器的被操纵变量权重,并减少了输出变量权重,从而产生更鲁棒的控制器。

1.8 导出控制器

Tuning > Analysis > Export Controller

Matlab 工作区出现:

2. 有限控制集MPC

Solve a Finite Set MPC Problem in Simulink

2.1 mpc 创建函数:

mpcobj = mpc(plant,ts,P,M,W,MV,OV,DV)

plant: 模型

ts: 采样时间

P: 预测区间 Prediction horizon

M: 控制区间 Control horizon property

系统包含4个状态变量,2个输入,1个输出。

2.2 Matlab 代码:

%% Solve a Finite Set MPC Problem in Simulink
% https://ww2.mathworks.cn/help/mpc/ug/discrete-set-mpc-in-simulink.html
% Fix the random generator seed for reproducibility.
rng(0);
% Create a discrete-time strictly proper plant with 4 states, two inputs and one output.
% drss: Generate random discrete test model
plant = drss(4,1,2);
plant.D = 0;
% Increase the control authority of the first input, to better illustrate its control contribution.
plant.B(:,1)=plant.B(:,1)*2;
% Create an MPC controller with one second sampling time, 20 steps prediction horizon and 5 steps control horizon.
% mpcobj = mpc(plant,ts,P,M,W,MV,OV,DV) specifies the following controller properties.
% P sets the PredictionHorizon property.
% M sets the ControlHorizon property.
mpcobj = mpc(plant,0.1,20,5);
% Specify the first manipulated variable as belonging to a set of seven possible values. 
% Note that you Could also specify it as an integer using the instruction mpcobj.MV(1).Type = 'integer'; 
% in which case the first manipulated variable will be constrained to be an integer.
mpcobj.MV(1).Type = [-1 -0.7 -0.3 0 0.2 0.5 1];
% Use rate limits to enforce maximum increment and decrement values for the first manipulated variable.
mpcobj.MV(1).RateMin = -0.5;
mpcobj.MV(1).RateMax = 0.5;
% Set limits on the second manipulated variable, whose default type (continuous) has not been changed.
mpcobj.MV(2).Min = -2;
mpcobj.MV(2).Max = 2;
% Create an output reference signal equal to zero from steps 20 to 35 and equal to 0.6 before and after.
r = ones(1,50)*0.6;
r(20:35) = 0;

工作区创建系统模型,名称是 plant;创建MPC控制器,名称是 mpcobj

输出:

-->The "Weights.ManipulatedVariables" property is empty. Assuming default 0.00000.
-->The "Weights.ManipulatedVariablesRate" property is empty. Assuming default 0.10000.
-->The "Weights.OutputVariables" property is empty. Assuming default 1.00000.

2.3 Simulink 仿真模型:

MPC Controller 中选择控制器为 mpcobj (与工作区的同名)

LTI System 中系统变量选择 plant (与工作区的同名)

2.4 运行结果

输入:

输出:

相关文章
|
3天前
|
算法
基于Adaboost模型的数据预测和分类matlab仿真
AdaBoost(Adaptive Boosting)是一种由Yoav Freund和Robert Schapire于1995年提出的集成学习方法,旨在通过迭代训练多个弱分类器并赋予分类效果好的弱分类器更高权重,最终构建一个强分类器。该方法通过逐步调整样本权重,使算法更关注前一轮中被误分类的样本,从而逐步优化模型。示例代码在MATLAB 2022A版本中运行,展示了随着弱分类器数量增加,分类错误率的变化及测试数据的分类结果。
|
10天前
|
存储 算法
基于HMM隐马尔可夫模型的金融数据预测算法matlab仿真
本项目基于HMM模型实现金融数据预测,包括模型训练与预测两部分。在MATLAB2022A上运行,通过计算状态转移和观测概率预测未来值,并绘制了预测值、真实值及预测误差的对比图。HMM模型适用于金融市场的时间序列分析,能够有效捕捉隐藏状态及其转换规律,为金融预测提供有力工具。
|
2月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于BP神经网络的苦瓜生长含水量预测模型matlab仿真
本项目展示了基于BP神经网络的苦瓜生长含水量预测模型,通过温度(T)、风速(v)、模型厚度(h)等输入特征,预测苦瓜的含水量。采用Matlab2022a开发,核心代码附带中文注释及操作视频。模型利用BP神经网络的非线性映射能力,对试验数据进行训练,实现对未知样本含水量变化规律的预测,为干燥过程的理论研究提供支持。
|
1月前
|
算法
基于HASM模型的高精度建模matlab仿真
本课题使用HASM进行高精度建模,介绍HASM模型及其简化实现方法。HASM模型基于层次化与自适应统计思想,通过多层结构捕捉不同尺度特征,自适应调整参数,适用于大规模、高维度数据的分析与预测。MATLAB2022A版本运行测试,展示运行结果。
|
2月前
|
机器学习/深度学习 算法 数据处理
基于最小二乘法的太阳黑子活动模型参数辨识和预测matlab仿真
本项目基于最小二乘法,利用Matlab对太阳黑子活动进行模型参数辨识和预测。通过分析过去288年的观测数据,研究其11年周期规律,实现对太阳黑子活动周期性的准确建模与未来趋势预测。适用于MATLAB2022a版本。
|
2月前
|
算法
基于Kronig-Penney能带模型的MATLAB求解与仿真
基于Kronig-Penney能带模型的MATLAB求解与仿真,利用MATLAB的多种数学工具简化了模型分析计算过程。该模型通过一维周期势垒描述晶体中电子运动特性,揭示了能带结构的基本特征,对于半导体物理研究具有重要价值。示例代码展示了如何使用MATLAB进行模型求解和图形绘制。
|
3月前
|
算法 5G 数据安全/隐私保护
SCM信道模型和SCME信道模型的matlab特性仿真,对比空间相关性,时间相关性,频率相关性
该简介展示了使用MATLAB 2022a进行无线通信信道仿真的结果,仿真表明信道的时间、频率和空间相关性随间隔增加而减弱,并且宏小区与微小区间的相关性相似。文中介绍了SCM和SCME模型,分别用于WCDMA和LTE/5G系统仿真,重点在于其空间、时间和频率相关性的建模。SCME模型在SCM的基础上进行了扩展,提供了更精细的参数化,增强了模型的真实性和复杂度。最后附上了MATLAB核心程序,用于计算不同天线间距下的空间互相关性。
89 0
|
3月前
|
算法 5G 数据安全/隐私保护
3D-MIMO信道模型的MATLAB模拟与仿真
该研究利用MATLAB 2022a进行了3D-MIMO技术的仿真,结果显示了不同场景下的LOS概率曲线。3D-MIMO作为5G关键技术之一,通过三维天线阵列增强了系统容量和覆盖范围。其信道模型涵盖UMa、UMi、RMa等场景,并分析了LOS/NLOS传播条件下的路径损耗、多径效应及空间相关性。仿真代码展示了三种典型场景下的LOS概率分布。
104 1
|
3月前
|
算法
基于GA遗传优化的离散交通网络双层规划模型设计matlab仿真
该程序基于GA遗传优化设计了离散交通网络的双层规划模型,以路段收费情况的优化为核心,并通过一氧化碳排放量评估环境影响。在MATLAB2022a版本中进行了验证,显示了系统总出行时间和区域排放最小化的过程。上层模型采用多目标优化策略,下层则确保总阻抗最小,实现整体最优解。
|
3月前
|
监控 算法 安全
基于颜色模型和边缘检测的火焰识别FPGA实现,包含testbench和matlab验证程序
本项目展示了基于FPGA的火焰识别算法,可在多种应用场景中实时检测火焰。通过颜色模型与边缘检测技术,结合HSV和YCbCr颜色空间,高效提取火焰特征。使用Vivado 2019.2和Matlab 2022a实现算法,并提供仿真结果与测试样本。FPGA平台充分发挥并行处理优势,实现低延迟高吞吐量的火焰检测。项目包含完整代码及操作视频说明。

热门文章

最新文章

下一篇
DataWorks