多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

神经网络与等SCOP:中央空调节能控制从预测驱动到落地实践

神经网络与等SCOP:中央空调节能控制从预测驱动到落地实践 简介这是一份以中央空调系统节能控制为核心的研究PDF面向暖通空调、建筑节能与智能算法方向的科研人员、工程师及学生。研究针对传统物理建模难以在项目间复制、系统设备匹配能效不佳等痛点提出基于神经网络的设备数学模型并开发等SCOP算法进行系统能效最优求解以某地铁项目冷冻机房为工程案例建立了冷水机组、冷冻水泵、冷却水泵与冷却塔模型验证了神经网络模型精度与等SCOP算法可行性。研究还发现用厂家设计数据训练的模型直接用于实际控制会有较大误差需根据现场实际运行数据重新训练这对设备级节能群控的工程落地非常关键。整份资源仅包含1个PDF文件大小约854KB属于期刊论文全文内容精炼无冗余。目前已有150人学习。读者可从中获取各设备模型的输入输出关系、等SCOP寻优的迭代步骤及工程计算过程也能借此理解AI节能技术如何助力建筑碳减排为相关研究或方案设计提供参考。1. 中央空调节能控制为什么从“照表操课”转成“预测驱动”公共建筑里中央空调能耗占比常年顶到 40% 以上但不少项目装上群控系统之后电费却几乎没动静。原因很直白传统控制是按固定时刻表和回水温度上下限跑天气变了、人流量变了冷机还在按昨天的节奏走。这套“照表操课”的逻辑本质上是拿稳态工况当常态而实际运行全是动态负荷。基于神经网络和等SCOP算法的中央空调节能控制技术核心就是把控制从“看现状”改成“看趋势”用神经网络提前一段窗口预测冷负荷再用等SCOP算法把整个供冷季的能效算成一笔总账指导冷机台数、出水温度和变频水泵去匹配将要到来的负荷。适合谁既有冷站改造、新建集中制冷机房、以及手里握着大量运行数据但不知道怎么用起来的值班工程师和节能服务公司。2. 神经网络在冷负荷预测里到底预测什么等SCOP 又凭什么当标尺2.1 LSTM 和 BP 各自负责哪一段负荷预测模型选型的逻辑中央空调冷负荷是典型的时间序列早上九点上班负荷爬坡午间太阳辐射叠加人员负荷顶到峰值下午下班前一小时冷负荷往下掉这种变化有周期性但又不完全是周期——赶上连续高温天、雨天或者大型活动曲线会整体平移。处理这种数据工程师最常用的两类神经网络恰好覆盖两端BP 神经网络前馈网络的一种适合做“静态映射”。输入当前室外温度、供水温度、回水温度、流量、室内外温差、时刻特征输出当前或未来一个时刻的冷负荷。它不考虑过去一小时的变化趋势只看此刻状态组合。LSTM 神经网络长短期记忆网络属于 RNN 循环神经网络的改进型自带记忆单元能记住过去若干个时刻的负荷走势。对冷负荷这种受惯性影响很大的物理量早上十点的负荷一定和九点、八点的负荷强相关LSTM 把这段历史吃进去预测自然更稳。实际项目里我不会一上来就上 LSTM先用 BP 做基线模型验证数据完整性和特征有效性等确认预测误差主要来自时间相关性再切到 LSTM。如果数据量大且特征之间有明显的局部模式也有人先在 LSTM 前面接一层一维卷积神经网络做特征提取相当于先用卷积把最近一小时的温度、负荷变化“扫”一遍再把压缩后的特征序列交给 LSTM。这种方式能减少网络参数量但调试成本也上去了。选型还有个现实约束机房控制器大多是 PLC 或者工控机跑不了重型模型。我一般会把训练好的模型导出成轻量推理格式只保留前向计算输入最近 12 个时步的归一化数据输出未来 30 分钟的平均负荷单次推理时间控制在毫秒级PLC 侧通过配方或者 API 调用勉强能把神经网络塞进现有控制架构。2.2 等SCOP 不是测出来的是用运行数据“累计”出来的等SCOP 算法里的 SCOP 是“季节能效比”季字当头。普通 COP 是一台冷机在某一个工况点上的制冷量除以电功率比如满负荷 7℃ 出水、冷却水 30℃ 进水COP 等于 5.6。这个数只能说明设备在铭牌工况下的能力说明不了它在整个夏天实际跑得省不省电。等SCOP 的思路是把一个完整供冷季的运行数据收上来按负荷率、室外温度分箱再把每个箱体的制冷量和耗电量分别累计最后用“总制冷量 ÷ 总耗电量”得到一个全季节的综合能效值。学术上叫等效季节能效比工程上我更喜欢把它理解成“把一季的电费账和冷量账算成比值”。为什么控制算法要拿它当标尺因为很多节能策略在单点上有效放在季节尺度上可能互相抵消。比如把冷冻水出水温度从 7℃ 抬到 9℃ 能减少冷机压缩功但末端除湿能力下降风机盘管得开更久水泵流量也得加大当天电费可能反而涨。只看一天数据看不出门道把整个供冷季按等SCOP 的统计口径拉通才能判断一个控制策略是“真省”还是“把电费从左口袋挪到右口袋”。2.3 从控制目标倒推为什么非要有预测这一步如果控制目标就是让等SCOP 尽可能高那控制动作必须提前做。冷机从启动到加载到稳定出力需要十几分钟甚至半小时冷水机组趋近温差大、出水温度波动末端反应又滞后等负荷真涨上来再开机机房已经处于“补课”状态要么冷机喘振要么供水温度压不住能耗只高不低。神经网络做负荷预测解决的就是这个时间差问题。预测窗口不需要太长30 分钟到 1 小时足够关键是让控制器知道未来半小时负荷是往上走还是往下走。往上走提前增开一台冷机让设备平滑加载往下走提前减机避免低负荷率下冷机长期“小马拉大车”。这一步做对了等SCOP 才能在高位稳住否则再好的台数算法也只能被动响应谈不上优化。3. 把一套中央空调能控系统搭到能跑数据管道、预测模型与台数决策3.1 先解决数据能不能用采集点位、清洗与对齐再好的神经网络也喂不出凭空的数据。中央空调机房至少要把这几类点采齐冷机冷冻水供水温度、回水温度每组各一个温度测点冷冻水总管流量超声流量计或者电磁流量计每台冷机的运行功率、电流、启停状态最好有独立电表冷却水供回水温度、冷却塔风机状态室外温湿度取自楼宇气象站或者就近气象接口时刻、星期、节假日标记作为时间特征采集周期建议不超过 5 分钟负荷预测模型输入采用 5 分钟粒度统计等SCOP 时再聚合成小时。数据落库之后先别急着训练模型清洗这一步踩坑最多。常见问题包括流量计零点漂移导致夜间流量不为零、温度传感器跳变、冷机停机期间功率不归零。下面这段代码处理的是最基础的三件事用焓差公式把温度流量换算成制冷量、剔除物理不可能的值、用滑动窗口把异常值磨平。import pandas as pd import numpy as np # 假设 df 包含时间戳和原始测点supply_temp, return_temp, flow_m3h, power_kw df pd.read_csv(chiller_plant.csv, parse_dates[timestamp]) df.set_index(timestamp, inplaceTrue) # 冷冻水流量单位通常是 m3/h换算成 kg/s 用于热工计算 df[flow_kg_s] df[flow_m3h] / 3.6 # 制冷量 Q 比热容 × 质量流量 × 供回水温差单位 kW df[delta_t] df[return_temp] - df[supply_temp] df[cooling_kw] 4.186 * df[flow_kg_s] * df[delta_t] # 物理边界过滤制冷量为负说明传感器异常或停机误报 df df[(df[cooling_kw] 0) (df[cooling_kw] 8000)] # 一小时滑动窗口内的 3 倍标准差检测超过则置空再插值 smooth_mean df[cooling_kw].rolling(1h, min_periods6).mean() smooth_std df[cooling_kw].rolling(1h, min_periods6).std() df[cooling_kw] df[cooling_kw].mask( (df[cooling_kw] - smooth_mean).abs() 3 * smooth_std, np.nan ) df[cooling_kw] df[cooling_kw].interpolate(limit_directionboth) # 输出清洗后的数据后续特征构造基于这层数据 df.to_csv(chiller_plant_clean.csv)这段代码里最容易被忽略的是min_periods6。如果数据断档超过一小时滑动窗口里样本太少均值本身就不稳定拿它做异常检测反而会把正常负荷当成异常抹掉。清洗不是越狠越好目标是保留真实的负荷波动只干掉明显由传感器引起的毛刺。另外夜间低负荷时段制冷量可能只有几十千瓦三倍标准差窗口会把小幅波动判成异常所以我先做一次物理范围过滤再进入统计过滤两层保护。3.2 用 Keras 搭一个能用于预测的 LSTM 负荷模型数据干净之后接下来构造训练样本。我的做法是取过去 12 个时步每步 5 分钟合计 1 小时作为输入序列预测未来 30 分钟的平均冷负荷。输入特征包括室外温度、时刻特征用正弦余弦编码避免午夜跳变、是否节假日、以及清洗后的历史冷负荷。为了保证模型上线后不会因为特征口径变化而翻车训练和推理必须共用同一套归一化参数这里用一个 MinMaxScaler 拟合训练集后保存下来推理时直接加载。from keras.models import Sequential from keras.layers import LSTM, Dense, Dropout # 特征矩阵 X 的形状样本数 × 12时步 × 特征数 # 目标 y未来6个时步30分钟冷负荷均值 model Sequential([ # 第一层LSTM返回完整序列方便第二层继续提取时序特征 LSTM(64, return_sequencesTrue, input_shape(12, X.shape[2])), Dropout(0.2), # 第二层LSTM只返回最后一个时刻的输出压缩成固定长度向量 LSTM(32, return_sequencesFalse), Dense(16, activationrelu), # 输出层单节点回归任务 Dense(1) ]) model.compile(optimizeradam, lossmse, metrics[mae]) model.summary()这里两个 LSTM 层的宽度选了 64 和 32是兼顾精度和推理速度的常见起手值。如果你机房设备多、特征数超过 10 个可以试 12864如果数据量只有几个月建议缩到 3216 防止过拟合。Dropout 放在第一层 LSTM 之后训练时随机丢弃 20% 的神经元连接多数情况下能让验证集误差更低。需要特别强调的是LSTM 的输入必须是三维张量很多人第一次跑通代码时会忽略X.shape[2]这个特征维度。训练时把validation_split0.2加上实时监控验证集误差如果训练误差不断下降而验证误差反弹说明模型开始背训练数据了提前停止是后悔药。3.3 台数控制与出水温度重置预测之后怎么下指令预测值不是拿来看的要落到控制指令上。常见的控制策略分三层第一层是台数控制。把预测负荷除以单台冷机在当前出水温度下的额定制冷量得到需要投入的台数基数。注意不能简单地四舍五入要加滞回区间。比如三台冷机每台额定制冷量 1500kW预测负荷 3200kW理论上开两台但负荷降到 2500kW 时开两台每台只跑 83% 负荷率效率依然不错没必要急着减到一台。我的做法是设置“增机线”和“减机线”两条阈值负荷率持续 30 分钟高于 90% 增机持续 30 分钟低于 55% 减机中间段保持现状。第二层是冷冻水出水温度重置。这个参数直接影响冷机能效出水温度每提高 1℃冷机 COP 大约提升 2% 到 4%。但温度不能无限抬高末端除湿会出问题。常见策略是把设定值在 6℃ 到 10℃ 之间浮动负荷低时抬到 9℃负荷高时压回 7℃具体上下限要看末端风机盘管和空调箱的表冷器性能。第三层是水泵和冷却塔变频。冷冻水流量和温差有一个配合关系常规做法是保持供回水温差恒定比如 5℃流量随负荷变化。负荷预测值提前 15 分钟驱动水泵频率变化避免流量突变导致冷机出水温度波动。冷却塔侧则根据冷却水进水温度和逼近度调节风机转速这部分和等SCOP 的关联最直接——冷却塔多耗 1kW 电如果把冷机 COP 提升 2%整机账往往是划算的。# 简化版决策伪代码实际项目需要加上超时保护与设备轮询 pred_load lstm_model.predict(last_12_steps)[0, 0] online_chillers get_online_chiller_count() total_capacity online_chillers * single_chiller_capacity_kw load_rate pred_load / total_capacity # 滞回区间增机线和减机线分别判断避免频繁启停 if load_rate 0.9 and online_chillers max_chillers: start_one_chiller(pred_load) elif load_rate 0.55 and online_chillers min_chillers: stop_one_chiller(pred_load) else: keep_status() # 出水温度重置负荷率低抬设定温度负荷率高回落 if load_rate 0.6: set_supply_temp(9) # 低负荷用较高出水温度 elif load_rate 0.85: set_supply_temp(7) # 高负荷压低出水温度保证供冷能力 else: set_supply_temp(8)这段伪代码里的 0.9 和 0.55 不是拍脑袋定的它们来自冷机性能曲线。多数螺杆机和离心机在 60% 到 80% 负荷率区间 COP 最高低于 50% 后 COP 掉得很快。把减机线定在 55% 就是为了让运行中的冷机尽量留在高效区间。滞回区的另一个作用是把“边界抖动”消化掉否则负荷在阈值附近小幅波动时冷机可能一小时内启停两三次压缩机和启动柜都受不了。4. 等SCOP 计算与关键参数从逐时电表到季度节能率4.1 等SCOP 的工程简化算法与负荷率区间划分学术论文里等SCOP 算法可能写得很复杂要做全年工况模拟、部件损耗修正、气候区加权但工程落地用不到那么重。我的简化口径是把整个供冷季逐时的制冷量和电耗先聚合成小时级数据再按负荷率分箱每个箱子里分别累计制冷量和耗电量最后用总制冷量除以总耗电量得到季节综合能效。分箱这一步有讲究。常用的区间是 0-25%、25%-50%、50%-75%、75%-100%外加一个 100% 以上的容量余量区间。为什么要分箱因为控制策略对不同负荷率的敏感程度不同分箱之后能看到节能改进到底发生在哪个区间。比如某项目改造前 50%-75% 区间等SCOP 只有 4.8改造后变成 5.6说明台数控制策略把该区间负荷匹配得更好了。如果只报一个总季节能效比改进发生在哪里完全黑匣子。import pandas as pd # df_hour: 逐时聚合后的数据含 cooling_kwh, power_kwh, load_rate bins [0, 0.25, 0.5, 0.75, 1.0, 1.5] labels [0-25%, 25-50%, 50-75%, 75-100%, Over] df_hour[load_bin] pd.cut(df_hour[load_rate], binsbins, labelslabels, rightFalse) agg df_hour.groupby(load_bin, observedFalse).agg( total_cooling_kwh(cooling_kwh, sum), total_power_kwh(power_kwh, sum), hours(power_kwh, size) ) agg[bin_scop] agg[total_cooling_kwh] / agg[total_power_kwh] # 全季节综合等SCOP 累计制冷量 / 累计耗电量 season_scop agg[total_cooling_kwh].sum() / agg[total_power_kwh].sum() print(agg) print(Season ESCOP , round(season_scop, 2))这个计算有个前提load_rate的分母必须用“当前实际投运总容量”而不是“机房总装机容量”。原因下一节细说。整个计算过程建议放在数据库视图中完成控制程序只读取结果不参与统计避免控制逻辑把计算周期打断。4.2 一台机组 COP 曲线的标定别直接抄样本参数冷机铭牌上的 COP 是在标准工况下测出来的单点值但实际运行中冷却水进水温度、冷冻水出水温度、负荷率三个变量一变COP 就飘了。等SCOP 计算用的 COP 曲线必须用现场运行数据重新标定。标定思路很简单把每台冷机正常运行时的“制冷量 ÷ 电功率”按小时记录再按负荷率分箱做均值。关键是数据要覆盖足够宽的运行范围至少要包含 30%-100% 负荷率的点。如果某些区间样本太少宁可把分箱放宽也不要外推补点。外推出来的 COP 曲线轻则误差 10%重则让台数控制策略完全失效。实际操作中我还会对曲线做一次滤波剔除那些冷机刚启动、运行还没稳定的数据。冷机启动后 15 分钟内油温、制冷剂循环都没到位COP 会异常偏低。直接从整段运行数据里取平均值会把启动能耗摊薄导致标定结果比真实水平低。解决方法是给每台冷机的连续运行时间和启停标记建字段计算 COP 时只用“稳定运行状态”的样本。4.3 神经网络训练参数与控制边界给新手的第一版数值直接给一组能落地的第一版参数后面再按现场数据调整参数项目名称建议初始值调整方向预测步长输入时步数125分钟×121小时数据噪声大时可增加到 24预测目标未来窗口30 分钟平均负荷机组响应慢可延长到 60 分钟LSTM 层神经元第一层/第二层64 / 32特征多或数据量大时加倍Dropout 比率防止过拟合0.2验证集误差高时加大到 0.3-0.4Batch Size训练批大小64内存充足时调到 128 可加快收敛学习率Adam 优化器0.001训练震荡时降到 0.0003控制边界这部分有两条红线不能省。一条是冷机最小运行时间通常不少于 30 分钟防止预测值抖动引起频繁启停另一条是冷冻水出水温度的变化速率每分钟不超过 0.5℃防止温度骤变导致冷机回气带液损坏压缩机。这两个边界和神经网络本身没关系但缺了它们模型再准也没用控制动作落不下去。5. 落地最容易翻车的五个坑现象、原因与解决方案5.1 时间泄露训练集里混入未来时刻模型精度虚高现象模型在测试集上 MAE 低得漂亮预测曲线和真实负荷几乎重合可一旦接到实时数据流上预测值却比实际负荷滞后一大截节能效果远不如训练时的评估结果。原因构造训练样本时没有严格按时间顺序切分训练集和验证集。最常见的手法是随机打乱全部样本后再切分导致验证集里混有与训练样本同一时段的数据。冷负荷有强连续性相邻时步的负荷几乎一样模型不用学规律直接“抄”邻居就能拿到低误差。另一个泄露渠道是特征构造如果把“未来 30 分钟的室外温度预报”当成已知特征直接输入模型当然能作弊。解决训练集按时间切片前 80% 时间做训练后 20% 时间做验证切分点前后各留出至少一天缓冲。特征里只允许用过去时刻和气象预报数据而且预报数据必须是从预报源获取的不是实测数据。验证时用滚动预测方式每步只输入历史窗口逐步前推这样评估出来的误差才是真实上线误差。5.2 负荷率算错额定容量 vs 实际制冷量的偏差现象等SCOP 分箱统计里某台冷机长期落在“Over 100%”区间负荷率永远超限分组统计失真同时台数控制频繁增机因为系统认为每台冷机都满载了。原因负荷率计算用的是冷机铭牌“额定制冷量”但实际运行中冷机很少能达到铭牌容量。冷却水温度偏高、蒸发器脏堵、制冷剂充注量不足都会让实际最大制冷量缩水 10%-20%。额定容量做分母真实负荷 1400kW 的冷机算出来只有 93% 负荷率实际上已经满负荷了。解决用现场标定的“实际最大制冷量”做分母。方法是取该冷机连续运行 30 天以上的数据取每小时的制冷量用 95% 分位数作为实际容量上限。这样负荷率才会真实反映设备裕度台数控制也不会把已经满载的冷机当成还有余量。5.3 等SCOP 季节边界没固定节能统计被砍半现象两个月的试运行报告里等SCOP 忽高忽低昨天算下来 5.2今天变成 4.6同样的控制策略结论完全相反。管理层追问节能率拿不出一张稳定的表。原因季节起止日期没有固定。有人从 6 月初开始算有人从 5 月试制冷就开始算供冷季中间穿插的雨天和夜间时段时有时无每个统计周期长度不同平均气温分布不同等SCOP 自然波动很大。解决在项目启动前就写死统计口径供冷季起止日期按当地气候条件固定比如 5 月 15 日到 9 月 30 日逐时数据按自然日归档任何对比都要求统计区间内“室外温度分布相似”或直接按温度区间加权后再比。节能率对比要做到同温度带可比否则只是拿平均值骗自己。5.4 台数控制没有滞回区机组一天启停十几次现象冷机群控上线后设备报警次数大增压缩机频繁启停机械室记录显示同一台冷机半小时内启停 3 次以上运维同事已经准备把控制切回手动。原因负荷预测值在增机线附近抖动比如 10 点预测负荷 2800kW下一时刻刷成 2900kW越过增机线触发开机再下一时刻回落到 2700kW又越过减机线触发停机。没有滞回区神经网络预测的微小波动被控制逻辑放大成硬动作。解决把增机线和减机线拉开距离并加上持续时间判断。增机要负荷率持续 15 分钟高于 90%减机要持续 30 分钟低于 55%两个条件都不满足就保持现状。同时给冷机控制器加最小运行时间互锁保证每次开机后至少稳定运行 30 分钟才能再停机。滞回区会牺牲一点点“预测及时性”但换来的设备寿命和系统稳定性更值。5.5 温度传感器漂移让整个控制逻辑“瞎指挥”现象冷冻水供回水温差显示 8℃现场手持温度计实测只有 5℃冷机控制逻辑认为负荷很高一直满负荷运行实际机组却在低负荷浪费电等SCOP 计算值也偏高失真。原因温度传感器探头结垢、套管老化、变送器零点漂移尤其是冷冻水侧的传感器长期泡在低温水里漂移概率很高。群控系统只认电信号不认物理校准会把错误数据当成真相。解决每个月做一次测点交叉校验用同一条管道上的备用温度计和控制系统读数对比偏差超过 0.5℃ 就安排现场校准。更稳妥的方案是在控制逻辑里加传感器合理性判断供回水温差不在 0-10℃ 范围内、流量和温差计算出的制冷量突跳瞬变都直接进入“保持上一时刻控制指令”的兜底模式避免控制系统跟着坏传感器一起跑偏。6. 验证节能效果的一个习惯等SCOP 对比周期和预测误差边界节能项目最怕的是“系统上线时省电三个月后没人说得清到底省了多少”。我做项目养成了一个习惯控制策略上线前先用历史运行数据把旧控制模式下的等SCOP 基线算出来上线后再以同样季节边界、同样室外温度分箱口径逐周复盘。每周一早上看 Excel 表按室外温度分成几个区间每个区间里对比基线等SCOP 和当前等SCOP。只有同一个温度区间内出现的提升才有资格计入节能率。跨区间对比在统计上是耍流氓因为 30℃ 天气本来就比 25℃ 天气能耗高和策略好坏没关系。预测模型侧的验证也有一个边界习惯每次更新模型后先在仿真环境里回放最近两周的历史数据计算预测误差分布。重点关注误差的尾部而不是平均绝对误差。如果 MAE 只有 3%但偶尔出现 15% 以上的误差尖峰这些尖峰落到控制逻辑里就可能触发一次错误的台数动作。我的做法是给控制决策加一个“误差置信边界”预测负荷 3000kW模型给出上下限 2800kW 到 3300kW只有当下限仍然越过增机线时才增机上限仍然低于减机线时才减机其他情况保持现状。这个习惯把神经网络的统计特性和控制系统的确定性边界隔离开预测可以黑匣子决策必须白盒。另一个小技巧是用等SCOP 的分箱表反过来验证模型。某个负荷率区间的等SCOP 突然下降先别急着怀疑控制逻辑回头看看该区间内的预测误差是不是变大了。预测值如果长期比真实值高 10%控制系统会多开一台冷机让设备长期运行在低负荷率区间分箱表里那个区间的能效自然难看。这种交叉验证能快速定位问题在模型侧还是控制侧省去大量排查时间。最后说一个踩过的坑刚入行时我总想把预测做准到 2% 以内反复调网络结构客户催得紧的时候甚至手动改过几个异常值让训练误差变好看。后来才明白负荷预测的精度边际收益递减从 4% 误差做到 2% 误差对等SCOP 的提升可能只有 0.1-0.2但对工程投入和稳定性要求却翻倍。控制系统的价值更多来自“敢不敢根据预测做动作”和“动作做错了能不能及时纠偏”。把时间花在滞回区、季节边界和传感器校准上比花在优化神经网络层数上划算得多。希望这个方向的实践记录能让你少走一段弯路。本文还有配套的精品资源点击获取
返回列表