✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、程序设计科研仿真。
🍎完整代码获取 定制创新 论文复现点击:Matlab科研工作室
👇 关注我领取海量matlab电子书和数学建模资料
🍊个人信条:做科研,博学之、审问之、慎思之、明辨之、笃行之,是为:博学慎思,明辨笃行。
🔥 内容介绍
一、整体概述
这段 Matlab 代码围绕深度学习模型预测控制器展开,提供了批处理(Batch)和顺序(Sequential)两种控制技术选择,用于解决特定的数据类型玩具问题,并实现对温度的预测与控制优化。其核心目的是通过结合长短期记忆网络(LSTM)预测未来状态,再利用模型预测控制(MPC)优化控制输入,以达到设定的温度目标。
二、代码结构与功能详细分析
(一)初始化与数据选择
- 控制技术选择
:用户通过输入
Logic选择控制技术,1 代表批处理控制,2 代表顺序控制。 - 数据类型选择
:
Datatype用于选择数据类型,范围为 1 - 3 。根据不同选择生成不同的数据集,如线性分布、正弦分布或随机分布的数据,这些数据构成设定点setpoint,作为温度控制的目标值。 - 最大迭代次数设定
:通过
maxIter设置最大迭代次数,范围建议在 20 - 40 之间,此参数影响后续算法的运行次数。
(二)批处理控制(Logic == 1)
- 文件操作与路径设置
:创建名为
Results_Batch的文件夹用于保存结果,并添加相关路径,方便后续调用函数和加载数据。 - 优化方案选择
:用户选择优化方案,1 代表 LBFGS,2 代表 I - ES 。这两种优化算法将影响后续模型预测控制的求解过程。
- 开环与闭环控制选择
:用户通过
methodd选择开环(1)或闭环(2)控制方式。开环控制不考虑反馈,直接基于预测状态进行控制;闭环控制则利用反馈的真实室温信息进行控制调整。 - LSTM 预测未来状态
:加载预训练的 LSTM 模型
netLSTM及相关数据,如训练数据X_train、时间步长shiftt、训练集大小train_size和数据变换参数transs。根据是否有历史数据的选择,准备输入数据aa,进而预测未来状态pred_states。 - 开环控制
:若选择开环控制,直接将预测状态作为优化状态
optimised_states。加载相关模型和数据变换对象,对优化状态进行变换后输入模型预测温度,最后绘制真实温度与预测温度的对比图并保存。 - 闭环控制
:选择闭环控制时,调用
MPC_controller_states函数,基于预测状态、真实温度等信息进行模型预测控制,得到优化状态optimised_states。此函数内部可能涉及到根据当前预测和反馈信息调整控制输入,以最小化与设定点的误差。 - 优化设定点温度
:加载另一数据集,调用
MPC_Controller_states_controll函数,基于设定点温度、优化状态等信息进行进一步的控制优化,得到最终的优化状态控制量optimised_states_control。 - 保存结果
:将优化后的状态和控制量保存为 CSV 文件,文件名为根据优化方案命名,同时移除之前添加的路径。
(三)顺序控制(Logic == 2)
- 文件操作与路径设置
:类似于批处理控制,创建
Results_Sequential文件夹并添加相关路径。 - 优化方案选择
:与批处理控制类似,用户选择优化方案(LBFGS 或 I - ES),同时设置集成大小
N。 - LSTM 预测与状态更新
:与批处理控制前期类似,加载 LSTM 模型及相关数据。通过
predictAndUpdateState函数利用 LSTM 模型逐步预测未来状态,并根据传感器获取的真实温度信息,结合模型预测控制,循环更新优化状态optimised_states、优化状态控制量optimised_states_control等变量。每次循环中,基于当前预测状态、设定点温度等信息进行控制优化,并根据反馈的真实温度调整后续预测和控制。 - 绘制与保存结果
:根据优化后的状态和控制量,通过加载相关模型和数据变换对象,预测温度并绘制真实温度与优化温度、设定点温度与控制器输出的对比图,根据优化方案保存图片。最后将优化后的状态和控制量保存为 CSV 文件,并移除添加的路径。
(四)模型训练部分
- 状态模型训练
:使用
Learning_Clement函数对与状态相关的模型进行训练,该函数可能涉及数据预处理、模型构建、训练及评估过程。训练数据来自Box.csv文件,训练结果包括训练和测试成本、数据范围、数据变换对象及训练好的模型,并保存相关数据。 - 控制器模型训练
:类似地,针对控制器模型,使用
Learning_Clement函数进行训练,数据来自GSHP.csv文件,保存训练结果。 - LSTM 模型训练
:使用
Learning_LSTM_Clement函数训练 LSTM 模型,数据来自Box.csv文件,保存训练好的 LSTM 模型及相关数据。
三、关键函数与算法
- LSTM 预测
:利用预训练的 LSTM 模型预测未来状态,通过
predictAndUpdateState函数实现对 LSTM 模型的动态更新,使其能够根据新的输入数据持续预测未来状态。 - 模型预测控制(MPC)
:
MPC_controller_states和MPC_Controller_states_controll等函数实现模型预测控制算法。MPC 通过预测未来状态,结合设定点和系统模型,优化控制输入,以最小化系统输出与设定点之间的误差,从而实现对温度的精确控制。 - 数据变换
:使用
clfx.transform和clfy.inverse_transform等函数对数据进行变换,这在数据预处理和结果后处理中起到关键作用,确保数据符合模型输入要求,并将模型输出转换为实际物理量。
四、总结
该代码构建了一个完整的基于深度学习模型预测控制器的系统,涵盖数据选择、模型预测、控制优化及结果保存等多个环节。通过批处理和顺序两种控制技术,结合 LSTM 预测与 MPC 优化,能够有效地处理不同类型的数据,并实现对温度的精确控制。然而,代码中部分函数如Learning_Clement、MPC_controller_states等未给出具体实现,可能需要进一步查看相关函数文件以深入理解其内部机制。同时,在实际应用中,还需根据具体场景对代码进行调整和优化,例如数据的实时获取与处理、模型参数的进一步调优等。
⛳️ 运行结果
📣 部分代码
close all;
%%{
fprintf('Box Configuration \n')
fprintf('Inputs: \n')
fprintf('Environment:Site Outdoor Air Drybulb Temperature [C] \n')
fprintf('Environment:Site Outdoor Air Wetbulb Temperature [C] \n')
fprintf('Environment:Site Outdoor Air Relative Humidity [%%] \n')
fprintf('Environment:Site Wind Speed [m/s] \n')
fprintf('Environment:Site Wind Direction [deg] \n')
fprintf('Environment:Site Horizontal Infrared Radiation Rate per Area [W/m2] \n')
fprintf('Environment:Site Diffuse Solar Radiation Rate per Area [W/m2] \n')
fprintf('Environment:Site Direct Solar Radiation Rate per Area [W/m2] \n')
fprintf('THERMAL ZONE: BOX:Zone Outdoor Air Wind Speed [m/s] \n')
fprintf('Outputs: \n')
fprintf('THERMAL ZONE: BOX:Zone Mean Air Temperature [C] \n')
fprintf('GSHP configuration \n')
fprintf('Inputs:\n')
fprintf('Environment:Site Outdoor Air Drybulb Temperature [C] \n')
fprintf('Environment:Site Outdoor Air Wetbulb Temperature [C] \n')
fprintf('Environment:Site Outdoor Air Relative Humidity [%%] \n')
fprintf('Environment:Site Wind Speed [m/s] \n')
fprintf('Environment:Site Wind Direction [deg] \n')
fprintf('Environment:Site Horizontal Infrared Radiation Rate per Area [W/m2] \n')
fprintf('Environment:Site Diffuse Solar Radiation Rate per Area [W/m2] \n')
fprintf('Environment:Site Direct Solar Radiation Rate per Area [W/m2] \n')
fprintf('THERMAL ZONE: BOX:Zone Outdoor Air Wind Speed [m/s] \n')
fprintf('GSHPCLG:Heat Pump Electric Power [W] \n')
fprintf('GSHPCLG:Heat Pump Source Side Inlet Temperature [C] \n')
fprintf('GSHPHEATING:Heat Pump Electric Power [W] \n')
fprintf('GSHPHEATING:Heat Pump Source Side Inlet Temperature [C] \n')
fprintf('Outputs: \n')
fprintf('THERMAL ZONE: BOX:Zone Mean Air Temperature [C] \n')
fprintf('Data Driven MPC Approach. Online approach \n')
fprintf('steps: \n')
fprintf('1) Predict room temperature at time t given current weather states \n')
fprintf('2) Optimise for control at time t to reference room temperature \n')
fprintf('3) Predict room temperature at time t+1 using temperature at time t \n')
fprintf('4) Predict weather states for t+1 using temperature at t+1 (gotten from 3) \n')
🔗 参考文献
[1] Luca Ambrogioni, Umut Güçlü, Marcel AJ van Gerven, and Eric Maris. The kernel mixture network: A non-parametric method for conditional density estimation of continuous random variables. arXiv preprint arXiv:1705.07111, 2017.
[2] Christopher M Bishop. Mixture density networks. 1994.
[3] Isobel C. Gormley and Sylvia Frühwirth-Schnatter. Mixtures of Experts Models. Chapman and Hall/CRC, 2019.
[4] R.B. Gramacy and H.K. Lee. Bayesian treed Gaussian process models with an application to computer modeling. Journal of the American Statistical Association, 103(483):1119–1130,2008.
[5] Robert A Jacobs, Michael I Jordan, Steven J Nowlan, Geoffrey E Hinton, et al. Adaptivemixtures of local experts. Neural computation, 3(1):79–87, 1991.2
[6] Michael I Jordan and Robert A Jacobs. Hierarchical mixtures of experts and the em algorithm.Neural computation, 6(2):181–214, 1994.
[7] Trung Nguyen and Edwin Bonilla. Fast allocation of gaussian process experts. In InternationalConference on Machine Learning, pages 145–153, 2014.
[8] Carl E Rasmussen and Zoubin Ghahramani. Infinite mixtures of gaussian process experts. InAdvances in neural information processing systems, pages 881–888, 2002.
[9] Tommaso Rigon and Daniele Durante. Tractable bayesian density regression via logit stickbreakingpriors. arXiv preprint arXiv:1701.02969, 2017.
[10] Volker Tresp. Mixtures of gaussian processes. In Advances in neural information processingsystems, pages 654–660, 2001.
[11] Lei Xu, Michael I Jordan, and Geoffrey E Hinton. An alternative model for mixtures of experts.
[12] Rasmussen, Carl Edward and Nickisch, Hannes. Gaussian processes for machine learning (gpml) toolbox. TheJournal of Machine Learning Research, 11:3011–3015, 2010
[13] David E. Bernholdt, Mark R. Cianciosa, David L. Green, Jin M. Park, Kody J. H. Law, andClement Etienam. Cluster, classify, regress: A general method for learning discontinuous functions. Foundations of Data Science, 1(2639-8001-2019-4-491):491, 2019.
[14] Clement Etienam, Kody Law, Sara Wade. Ultra-fast Deep Mixtures of Gaussian Process Experts. arXiv preprint arXiv:2006.13309, 2020.