为建筑物的供暖系统实施MPC控制器的小型项目(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文目录如下:🎁🎁🎁
目录
💥1 概述
📚2 运行结果
🎉3 参考文献
🌈4 Matlab代码实现
💥1 概述
目前,我国较为先进的供热系统对二级管网进行平衡调节,并通过安装在散热器上的手动调节阀、温控阀调节水流量,从而改变室温。但供暖期间大多数用户不能合理、及时调节温控装置,导致部分建筑室温分布不均甚至出现开窗散热的现象,供暖能耗浪费严重。因此,通过采用室温控制技术维持室温稳定,可保证房间的热舒适性,减少开窗散热等无效热损失,从而实现高效费比节能。
这个项目为一栋建筑的供暖系统实现了MPC控制器。本文设计了一个MPC控制器,以最大限度地降低运行的总成本,同时考虑到天气的预测,并研究了额外储热的影响。
本项目需要多次模拟(3次以内)。可以减少问题的范围(但在合理的范围内)或采样时间。大多数情况下,计算器的性能比较重要。
📚2 运行结果








主函数部分代码:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% MPC -- Mini Project %%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clc;
close all;
yalmip('clear');
clear all;
%% Model data
load building.mat;
load battery.mat;
%Parameters of the Building ModelA = ssM.A;
Bu = ssM.Bu;
Bd = ssM.Bd;
C = ssM.C;
Ts = ssM.timestep;
% Parameters of the Storage Model
a = ssModel.A;
b = ssModel.Bu;
% Installation Test
yalmip('version')
sprintf('The Project files are successfully installed')
% Other parameters
nx = length(A); %number of states
ny = size(C,1); %number of outputs
nu = size(Bu,2); %number of inputs
nd = size(Bd,2); %number of disturbances
umax = 15*ones(nu,1); umin = 0*ones(nu,1); %input constraints
ymax = 26*ones(ny,1); ymin = 22*ones(ny,1); %output constraints
vmax = 20; vmin = -20;
xbmax = 20; xbmin = 0;
%% Controller Design (Setting-up MPC optimizer)
figure,
subplot(1,2,1),
stairs(refDist(2:3,:)'); %
plot two of disturbance inputslegend(ssM.disturbance(2:3));
xlabel('Step-Time: 20min');
ylabel('Disturbances (kW)');
subplot(1,2,2),
stairs(refDist(1,:)'); %plot one of disturbance inputs
legend(ssM.disturbance(1));
xlabel('
Step-
Time:
20
min
');
ylabel('
Disturbances (C)
');
savefig('
disturbances.fig
'); %save figure
disp('
Click on Enter to continue with the Section
1
.
'); pause;
%% Section 1: tracking MPC
%define objective parameters
param_objective.R = eye(ny); %cost weight
param_objective.yref = [24 24 24]'
; %reference outputs
%define constraints matrix
param_constraints.Mu = [eye(nu); -eye(nu)];
param_constraints.My = [eye(ny); -eye(ny)];
param_constraints.mu = [umax; -umin];
param_constraints.my = [ymax; -ymin];
%Determine the influence of the horizon length on the MPC scheme
param_simulation.horizon_lengths = [4, 15, 30, 50, 72, 90]; %arbitrary values of horizon length
tuning_horizon_length(ssM, param_constraints, param_objective, param_simulation, refDist);
%define simulation parameters
param_simulation.N = 72; %prediction horizon chosen - 1 day = 72*20min
param_simulation.T = size(refDist,2)-param_simulation.N; %simulation length in time-steps
%run tracking MPC with no night-setbacks and no variable cost
[xt, yt, ut, t] = trackingMPC(ssM, param_constraints, param_objective, param_simulation);
%display total economic cost
total_cost = 0.2*sum(ut(:));
sprintf('Total economic cost: $%d', total_cost)
disp('Click on Enter to continue with the Section 2.'); pause;
%% Section 2: economic MPC and soft constraints
%
define other objective parametersparam_objective.c = 0.2; %fixed electricity price
param_objective.S = 50*eye(ny); %economic cost weight
%run economic MPC with no night-setbacks and no variable cost
[xt, yt, ut, t, total_cost] = economicMPC_sc(ssM, param_constraints, param_objective, param_simulation);
%display total economic cost
sprintf('Total economic cost: $%d', total_cost)
disp('Click on Enter to continue with the Section 3.'); pause;
%% Section 3: economic, soft constraints, and variable cost
%
run economic MPC with variable cost, but no night-setbacks[xt, yt, ut, t, total_cost] = economicMPC_sc_vc(ssM, param_constraints, param_objective, param_simulation);
%display total economic cost
sprintf('Total economic cost: $%d', total_cost)
disp('Click on Enter to continue with the Section 4.'); pause;
%% Section 4 : Night setbacks
%
run economic MPC with variable cost
andnight-setbacks[xt, yt, ut, t, total_cost] = economicMPC_sc_vc_sb(ssM, param_constraints, param_objective, param_simulation);
%display total economic cost
sprintf('Total economic cost: $%d', total_cost)
disp('Click on Enter to continue with the Section 5.'); pause;
🎉3 参考文献
[1]张冬冬,王淳,代伟,罗策恒,刘梓宁,武新章.居民区多能源管理模型与优化调度策略分析[J/OL].电力系统及其自动化学报:1-13[2023-05-27].
部分理论引用网络文献,若有侵权联系博主删除。
🌈4 Matlab代码实现
相关文章:
为建筑物的供暖系统实施MPC控制器的小型项目(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
【概率论】中心极限定理(二)
文章目录 主观题主观题 每袋味精的净重为随机变量,平均重量为 100 克,标准差为 10 克。一箱内装 200 袋味精,求一箱味精的净重大于 20500 克的概率? 解: ① E ( X i ) = 100 , D ( X i ) = 1 0 2...
Blender UV展开流程
目录 1. UV1.1 blender默认物体1.2 创建物体1.3 UV参考图1.4 标记缝合边1.5 UV拉伸1.6 孤岛模式 1. UV 1.1 blender默认物体 默认物体已经自动生成UV 在UV编辑工作区,编辑模式,全选物体在左边自动展开UV 在物体数据属性-UV贴图-存在默认的UV贴图&#…...
Flutter 笔记 | Flutter 核心原理(二)关键类和启动流程
Widget、Element、BuildContext 和 RenderObject Widget Widget关键类及其子类继承关系如图所示: 其中,Widget是Widget Tree所有节点的基类。Widget的子类主要分为3类: 第1类是RenderObjectWidget的子类,具体来说又分为SingleCh…...
Android:主题切换
一.概述 正在开发的应用做了一版新UI,原打算将新版UI按项目名做成资源包,再在build.gradle里productFlavors{ }多渠道打包实现 但被告知新旧两个项目共用一个分支,那就做成两个主题(Theme1/Theme2)来适配了 如果只是变更UI,做成…...
terminalworks ASP.NET Core PDF 浏览器-Crack
ASP.NET Core 的 PDF 查看器 terminalworks在 ASP.NET Core 网页或应用程序中添加可靠的 PDF 查看器的简单方法。 我们的 Web PDF 查看器基于经过验证和测试的 Mozilla PdfJS 解决方案,该解决方案在 Firefox 中用作默认 PDF 查看器。我们专门设计了我们的查看器&…...
Rust每日一练(Leetday0020) 最后单词的长度、螺旋矩阵II、排列序列
目录 58. 最后一个单词的长度 Length of Last Word 🌟 59. 螺旋矩阵 II Spiral Matrix II 🌟🌟 60. 排列序列 Permutation Sequence 🌟🌟🌟 🌟 每日一练刷题专栏 🌟 Rust每日…...
短视频矩阵源码如何做应用编程?
短视频矩阵源码, 短视频矩阵系统技术文档: 可以采用电子文档或者纸质文档的形式交付,具体取决于需求方的要求。电子文档可以通过电子邮件、远程指导交付云存储等方式进行传输、 短视频矩阵{seo}源码是指将抖音平台上的视频资源进行筛选、排…...
【运维知识进阶篇】Ansible实现一套完整LNMP架构
前面介绍了PlayBook怎么写服务部署,把服务部署上后,我们来用Ansible来部署项目,实现一套完整的LNMP架构。我们部署wordpress、wecenter、phpshe、phpmyadmin这四个项目。将其所有的剧本都写入lnmp.yml中,相关备份数据都放入root/a…...
Spring Boot 自动配置一篇概览
一、什么是自动配置 bean 自动配置类通过添加 AutoConfiguration 注解实现。 因为 AutoConfiguration 注解本身是以 Configuration 注解的,所以自动配置类可以算是一个标准的基于 Configuration 注解的类。 Conditional 注解可以用于声明自动配置启用条件&#x…...
深入理解设计原则之接口隔离原则(ISP)【软件架构设计】
系列文章目录 C高性能优化编程系列 深入理解软件架构设计系列 深入理解设计模式系列 高级C并发线程编程 LSP:接口隔离原则 系列文章目录1、接口隔离原则的定义和解读2、案例解读3、如何判断一个接口是否符合接口隔离原则?小结 1、接口隔离原则的定义和…...
IMX6ULL裸机篇之I2C实验主控代码说明二
一. I2C实验 I2C实验内容: 学习如何使用 I.MX6U 的 I2C 接口来驱动 AP3216C,读取 AP3216C 的传感器数据。 I2C读写数据时序图: I2C写数据时序图如下: I2C读数据时序图如下: 二. I2C主控读写时序 1. 读数据与写数…...
【计算机组成原理与体系结构】数据的表示与运算
目录 一、进位计数制 二、信息编码 三、定点数数据表示 四、校验码 五、定点数补码加减运算 六、标志位的生成 七、定点数的移位运算 八、定点数的乘除运算 九、浮点数的表示 十、浮点数的运算 一、进位计数制 整数部分: 二进制、八进制、十六进制 --…...
如何入门编程
随着信息技术的快速发展,编程已经成为一个越来越重要的技能。那么,我们该如何入门编程呢?欢迎大家积极讨论 一、自学编程需要注意什么? 对于我个人的理解,其实自学编程最重要的就是兴趣。你得培养编程兴趣。 所以在学…...
SQL中CONVERT转化日期函数的使用方法
SQL中CONVERT转化日期函数的使用方法 SQL中CONVERT函数最常用的是使用convert转化长日期为短日期,如果只要取yyyy-mm-dd格式时间, 就可以用convert(nvarchar(10),field,120) 120 是格式代码, nvarchar(10) 是指取出前10位字符. 例如 SELECT CONVERT(nvarchar(10),…...
SpringBoot2-核心技术(一)
SpringBoot2-核心技术(一) 了解SpringBoot配置文件的使用 文章目录 SpringBoot2-核心技术(一)了解SpringBoot配置文件的使用一、文件类型1. properties2. yaml 二、yaml的基本使用1. 基本语法2. 数据类型2.1 字面量 2.2 对象2.3 …...
mac host学习
参考: SSH中known_hosts文件作用和常见问题及解决方法 https://blog.csdn.net/luduoyuan/article/details/130070120在 Mac 上更改 DNS 设置 https://support.apple.com/zh-cn/guide/mac-help/mh14127/mac mac中有时候你输入的域名,但会跳转到与期望ip不…...
Java之~指定String日期时间,5分钟一截取时间
// 截取5分钟时间Testpublic void timeCutForDay() throws ParseException {String startTime "2023-03-28 09:16:03";String endTime "2023-03-31 23:59:59";SimpleDateFormat dateFormat new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");D…...
【chatGPT4结对编程】chatGPT4教我做图像分类
开始接触深度学习 大语言模型火了之后,我也想过是否要加入深度学习的行业当中来,一开始的想法就是AI大模型肯定会被各大厂垄断,我们作为普通应用型软件工程师直接调用api就完事,另外对自己的学历也自卑(刚刚够线的二本࿰…...
Different romantic
001 他暗恋上我们班上的一个女生。 He has a crush on a girl in our class. crush n. 迷恋 have a crush on (someone) 暗恋(某人) crush 也可以指“暗恋的对象”。例如,“他在大学曾经暗恋过两个人”,英语就是He had two crushe…...
2026年京东云OpenClaw/Hermes Agent配置Token Plan详细搭建教程
2026年京东云OpenClaw/Hermes Agent配置Token Plan详细搭建教程。OpenClaw是开源的个人AI助手,Hermes Agent则是一个能自我进化的AI智能体框架。阿里云提供计算巢、轻量服务器及无影云电脑三种部署OpenClaw 与 Hermes Agent的方案、百炼Token Plan兼容主流 AI 工具&…...
如何将微信聊天记录转化为你的数字记忆宝藏?
如何将微信聊天记录转化为你的数字记忆宝藏? 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeChatMsg …...
四通道16孔非洲猪瘟检测仪:荧光定量+多通道并行
四通道16孔非洲猪瘟检测仪设备采用实时荧光定量PCR变温检测原理,通过精准温控循环实现目标核酸特异性扩增,实时动态监测荧光信号变化,自动完成信号采集、数据运算、曲线分析、结果判定。可精准完成待检测样本中目标核酸的快速、准确定性与定量…...
3分钟搞定Figma中文界面:FigmaCN汉化插件完整指南
3分钟搞定Figma中文界面:FigmaCN汉化插件完整指南 【免费下载链接】figmaCN 中文 Figma 插件,设计师人工翻译校验 项目地址: https://gitcode.com/gh_mirrors/fi/figmaCN 还在为Figma复杂的英文界面而烦恼吗?作为中文设计师࿰…...
3步轻松下载B站4K大会员视频:开源工具完全使用指南
3步轻松下载B站4K大会员视频:开源工具完全使用指南 【免费下载链接】bilibili-downloader B站视频下载,支持下载大会员清晰度4K,持续更新中 项目地址: https://gitcode.com/gh_mirrors/bil/bilibili-downloader 还在为B站4K高清视频需…...
Windows热键侦探:一键揪出占用你快捷键的“元凶“
Windows热键侦探:一键揪出占用你快捷键的"元凶" 【免费下载链接】hotkey-detective A small program for investigating stolen key combinations under Windows 7 and later. 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detective 你是…...
AMD Ryzen终极调优实战:SMUDebugTool免费工具完整配置指南
AMD Ryzen终极调优实战:SMUDebugTool免费工具完整配置指南 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https:…...
DLSS版本管理器:5分钟掌握游戏性能优化终极指南
DLSS版本管理器:5分钟掌握游戏性能优化终极指南 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper 你是否曾因游戏帧数不稳定而烦恼?是否想体验最新DLSS技术带来的性能提升却不知从何入手ÿ…...
如何高效汉化Kirikiri引擎视觉小说游戏:完整工具指南
如何高效汉化Kirikiri引擎视觉小说游戏:完整工具指南 【免费下载链接】KirikiriTools Tools for the Kirikiri visual novel engine 项目地址: https://gitcode.com/gh_mirrors/ki/KirikiriTools KirikiriTools是一套专为Kirikiri引擎视觉小说游戏设计的汉化…...
seaborn实践
本文章基于豆包整理了使用seaborn生成若干典型图表的示例代码,可供学习seaborn使用。一、图表结果预览二、测试数据生成生成了两组数据,一组是银行贷款存款数据,一组是学生成绩数据,生成数据代码如下:-- 1. 创建数据库…...

