ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

电热冷综合能源优化调度:从建模到落地的完整实战指南

2026/9/7 15:26:49 拓冰建站 浏览量
电热冷综合能源优化调度:从建模到落地的完整实战指南 电热冷综合能源优化调度这个话题我前后在三个项目里踩过坑从最开始只做电力的“单打独斗”到后来把热、冷都拉进优化模型整个过程走了不少弯路。最近刚好有朋友问起整个建模和调度的实操流程趁着记忆还热乎我把完整的思路、建模细节、以及项目落地时遇到的那些坑一次性整理出来。这篇文章不会堆概念主要是围绕“为什么要把电热冷放一起调”、“优化模型到底怎么搭”、“实际跑出来的结果长什么样”、“以及调试时最容易卡住你的问题”这几件事展开。不管你是刚接触综合能源系统还是已经在做能量管理平台这篇文章都值得你花十分钟看完。1. 先搞懂综合能源调度的本质不是三个系统拼在一起1.1 电热冷为什么必须联合起来算很多园区一开始是这么干的配电房管电、锅炉房管热、冷冻站管冷三个系统各管各的每月的能耗报表也是分开做。这么做最明显的问题在于能量是联通的但管理是割裂的。比如燃气发电机发一度电的同时必然伴生余热这部分热量如果不能被及时利用就只能通过散热器白白排到大气里。单算电力账燃气发电可能比网购电贵但把余热回收供到办公楼、再把低品位热量送进吸收式制冷机整体账本可能完全翻盘。这就是电热冷联合调度的底层逻辑能量梯级利用。高品位的天然气化学能先发电发电后的中品位余热用于供热供热后剩余的低品位热量驱动吸收式制冷制冷。每一级能量都尽量找到“接盘侠”整个系统的综合能源利用率才能从 50% 左右提到 70% 甚至更高。优化调度的核心就是在满足电、热、冷三种负荷的前提下决定“每一台设备在每一个时刻出多少力”让整个系统的运行成本最低、碳排放最少或者综合考虑两者。这件事用人工经验很难做好因为设备数量一多加上储热罐储冷罐的蓄放能时间平移组合爆炸的复杂度远超人工能处理的范围。1.2 调度的核心目标与约束的平衡艺术实际项目中调度目标函数最常见的就是“运行成本最小化”。成本包括燃气费、购电费减去卖给电网的售电收益如果政策允许扣除设备启停惩罚再加上可再生能源比如屋顶光伏的出力机会成本等。少数项目会加一个碳排放目标项或者把碳排放折算成碳税加进成本。而约束条件就是调度的“紧箍咒”电、热、冷功率平衡任意时刻发电量加购电量等于电负荷产热加储热放热等于热负荷产冷加储冷放冷等于冷负荷。设备出力上下限内燃机不能低于 30% 负载率运行否则燃烧不稳定也不能超过额定功率。爬坡速率约束内燃机和余热锅炉在相邻时段的出力变化不能太大。储能约束蓄热罐/蓄冷罐的储能量SOC有上界下界每个时段充放能后要更新下一时段储量且一天结束后SOC要回到初始值。逻辑约束一台机组如果在某一时段停机它就不能产生热量。这是典型的0-1变量约束也是模型难解的重要来源。目标函数和约束条件放在一起就构成了一个数学规划问题。大多数实际项目最终会落到混合整数线性规划。1.3 分产与联供的“经济账”差距有多大只看文字不直观我拿一个典型数字算一笔账。假设园区有 300kW 内燃机一台发电效率 35%热回收效率 45%电价 0.8 元/kWh天然气价 2.5 元/Nm³。天然气热值按 9.7 kWh/Nm³ 算发 1 kWh 电约消耗 1/0.35 ≈ 2.86 kWh 燃气即 0.295 Nm³燃气成本约 0.737 元/kWh。看上去比购电便宜但其实差距不明显真正赚钱的是那 1.29 kWh 的余热0.45/0.35。这 1.29 kWh 余热如果用于供热替代的是燃气锅炉按锅炉效率 90% 算相当于省下约 1.43 kWh 天然气折合 0.37 元。两项相加联供的综合收益大约是 0.43 元/kWh比起单纯用燃气发电的微弱优势多出了一大截。这套算账逻辑是综合能源项目的立身之本。调度模型做的就是把这个账在每一个设备、每一天、每一个时段算清楚并且保证系统在物理上可行。2. 从零搭建优化模型的关键步骤2.1 系统设备拓扑与能流关系梳理我以一个典型的园区供能系统为例设备清单如下能源输入电网购电、市政天然气。电设备内燃机发电同时回收余热、电制冷机用电制冷。热设备余热锅炉回收燃机余热、燃气锅炉备用/顶峰、蓄热罐。冷设备吸收式制冷机利用余热或高温热水制冷、电制冷机离心式/螺杆式、蓄冷罐。可再生能源可选屋顶光伏出力作为已知序列输入。能流关系就是一台设备的输出会变成另一台设备的输入燃机发电产生电同时高温烟气进余热锅炉产生热水热水一部分去供热、一部分进吸收式制冷机制冷水电制冷机直接用电网或燃机电制冷。蓄热罐/蓄冷罐起到“削峰填谷”的作用。建模型的第一步不是急着写代码而是把这张能流图画明白并且为每一个设备定义清楚三种量输入能量、输出能量、转换效率或COP。这张图后面既是建模依据也是调试时排查问题的排查地图。2.2 决策变量、目标函数与约束条件这样写先定义时间集合 T {1, 2, ..., 24}步长1小时。项目上如果要做日内滚动优化也会用15分钟步长但模型规模会变大后面会讲怎么处理。决策变量分为连续变量和整数变量。连续变量包括P_MT(t)内燃机发电功率kWQ_hrs(t)余热回收热量kWQ_gb(t)燃气锅炉产热功率kWC_ec(t)电制冷机功率kWC_ac(t)吸收式制冷功率kWSOC_TES(t)、SOC_CCS(t)蓄热罐、蓄冷罐在当前时段的储能量kWh各类charge/discharge功率整数变量包括u_MT(t)内燃机在t时段是否开机1或0u_gb(t)燃气锅炉是否开机目标函数写作最小化总运行成本min Σ [ C_gas * V_gas(t) C_e_buy(t) * P_buy(t) ] Σ [ C_start_MT * max(0, u_MT(t)-u_MT(t-1)) ] ...其中 V_gas(t) 是燃机与燃气锅炉的总耗气量折算成标准体积后乘以气价。购电价格 C_e_buy(t) 按峰谷平时段切分。约束条件里最核心的几个是电平衡P_MT(t) P_pv(t) P_buy(t) P_load(t) C_ec(t) 其他用电设备功率热平衡Q_hrs(t) Q_gb(t) TES_discharge(t) Q_load(t) TES_charge(t)冷平衡C_ac(t) C_ec(t) CCS_discharge(t) C_load(t) CCS_charge(t)燃机可行域P_MT_lower * u_MT(t) ≤ P_MT(t) ≤ P_MT_upper * u_MT(t)储热动态SOC_TES(t1) SOC_TES(t) TES_charge(t) * η_ch - TES_discharge(t) / η_dis边界约束SOC_TES(1) SOC_TES(24) 初始值这些约束缺一个优化结果就可能在工程上是个“鬼话” —— 比如电平衡不把电制冷机耗电算进去模型就以为电很富余把电制冷开到满实际现场却跳闸。2.3 为什么选择了混合整数线性规划在项目初期我试过用遗传算法GA和粒子群PSO来做调度因为网上这类代码最多、也最容易实现。但逃过几次坑之后我现在工业项目首选混合整数线性规划求解器用Gurobi或者Cplex开源用COIN-OR的CBC或SCIP。理由很简单全局最优。启发式算法会陷入局部最优尤其当目标函数有多个峰谷、变量耦合严重时两次运行的结果可能差 5% 甚至 10%。MILP 求解器基于分支定界法只要模型正确、算力给够它给的就是全局最优解。求解速度快。对 24 时段、单台内燃机加锅炉加两种储能的规模CBC 几秒钟就能解完Gurobi 基本亚秒级。这个速度完全满足日内滚动调度的需求。成熟的商业支持。工业项目要的是稳定不是实验性探索。商业求解器有明确的许可证、接口文档和售后服务。当然MILP 对建模能力有要求——很多非线性关系比如燃烧效率和负载率的关系需要做分段线性化处理。这个处理得当既保留精度又不失求解速度。3. 实操案例一个园区典型日调度全流程演示3.1 案例背景与基础数据我以一个综合能源示范园区为例包含以下主要设备设备额定参数效率/COP备注内燃机300 kW发电效率35%热回收效率45%最低负载率30%余热锅炉135 kW 热回收效率90%余热到热水—燃气锅炉500 kW 热90%备用/顶峰电制冷机400 kW 冷COP4.5离心式吸收式制冷机150 kW 冷COP1.2利用热水驱动蓄热罐500 kWh充放效率95%SOC范围10%-95%蓄冷罐400 kWh充放效率92%SOC范围10%-90%电价采用某地大工业分时电价峰段 1.2 元/kWh10:00-15:0018:00-22:00平段 0.8 元/kWh07:00-10:0015:00-18:00谷段 0.4 元/kWh22:00-07:00。天然气价取 2.5 元/Nm³。3.2 典型日负荷与优化场景设置取夏季典型工作日原因是这一天电、热、冷三种负荷同时在线最考验“综合”调度的能力冷负荷最大、热负荷有生活热水需求或工艺用热、电负荷白天高晚间低。负荷曲线节选如下时段电负荷(kW)热负荷(kW)冷负荷(kW)00:00-01:00180406004:00-05:00150305008:00-09:003508015012:00-13:004206028016:00-17:003805032020:00-21:003007018023:00-24:001904570光伏出力在这天大致中午达到 120 kW其余时段为 0 到 80 kW。调度目标设为运行成本最小化考虑购电、燃气、启动成本售电暂不考虑园区自发自用为主余电上网电价较低暂不纳入。3.3 优化求解与调度结果分析模型搭建用 Yalmip Gurobi或者 Pyomo CBC 也完全可以核心代码结构如下import pyomo.environ as pyo from pyomo.environ import * import pandas as pd model pyo.ConcreteModel() # 时间集合 model.T pyo.RangeSet(0, 23) # 变量 model.P_MT pyo.Var(model.T, bounds(90, 300), withinpyo.Reals) model.u_MT pyo.Var(model.T, withinpyo.Binary) model.Q_gb pyo.Var(model.T, bounds(0, 500), withinpyo.Reals) model.u_gb pyo.Var(model.T, withinpyo.Binary) model.C_ec pyo.Var(model.T, bounds(0, 400), withinpyo.Reals) model.C_ac pyo.Var(model.T, bounds(0, 150), withinpyo.Reals) model.SOC_TES pyo.Var(model.T, bounds(50, 475), withinpyo.Reals) model.SOC_CCS pyo.Var(model.T, bounds(40, 360), withinpyo.Reals) # ... 其余变量和约束略求解完成后典型结果有几个很明显的特征谷段电制冷机全开蓄冷罐充冷到上限蓄热罐也蓄热内燃机停机或低载运行尽量用谷电。峰段内燃机满发因为峰段电价高达 1.2 元/kWh自发自用比购电划算余热同时驱动吸收式制冷和供热冷负荷主要由吸收式加蓄冷放冷满足电制冷机减载减少峰段购电。平段根据冷负荷大小动态调整内燃机出力和电制冷分配比例。联合调度的运行成本约为单日 6800 元而同样是这个负荷条件若把所有设备单纯按“峰谷模式”人工运行成本约为 7600 元。一条调度优化一天省 800 元一年按 300 个有效工作日算就是 24 万对整个项目投资回报率的贡献非常可观。4. 常见问题与调试经验实录4.1 冷负荷“算不准”设备模型要细到什么程度很多团队在冷负荷建模上过于简化把电制冷机和吸收式制冷机当成固定 COP 处理。但实际运行中电制冷机 COP 随负载率变化显著尤其在 30% 负载以下效率会掉到额定值的一半。吸收式制冷机的 COP 还受到热水入口温度影响热水温度越高COP 表现越好。我的建议是在一开始精度要求不高的场景中可以采用恒定 COP但要把“最小负载率”约束加上否则优化器会让制冷机在 10% 负载下运行实际却完全跑不起来。如果做日内滚动优化可以引入“COP-负载率”的分段线性曲线这样既保住线性性又贴近实际。现场实测数据回归曲线后模型精度能提高不少。4.2 求解器报 infeasible 的排查流程模型一跑出来 infeasible不可行新手第一个反应是怀疑求解器坏了其实绝大多数是通过约束矛盾排除问题。我的排查经验是按顺序来先查电平衡约束。把等式改成“松弛变量”的方式逐时段求解看哪个时段松弛量最大我们就找到了矛盾时段。再查储能动态约束。最常见的问题是“初始SOC设置不当”加“日终SOC设置为同一值”但当天净充放需求过大导致无解。这时候需要检查全天储能的充放总能量是否超出容量范围。三查整数变量边界。有时候 u_MT(t)0 但 P_MT(t) 的下界还是 90导致电平衡在某时段无解。一个非常好用的技巧把目标函数删掉改成 feasibility problem先判断模型是否可行再逐个加入约束。这个过程能把复杂问题拆解成小问题定位。4.3 模型跑得慢变量规模控制技巧当设备数量多、时段采用15分钟粒度96个时段、加上机组组合约束时模型规模会迅速膨胀。Gurobi 对几千到几万个变量的问题很轻松但到了几十万个变量时就需要优化模型结构。几个实用技巧减少整数变量比如把两台参数的燃机合并成一个“聚合机组”用出力区间表达组合。用 rolling horizon把 96 时段分解成 4 个循环优化各 24 时段用前一轮的终值作为后一轮的初值。为整数变量提供 warm start从上次解的整数解出发通常能减少一半以上的计算时间。4.4 调度结果“过于理想”怎么办再聪明的调度模型如果执行层跟不上也是纸上谈兵。我第一次做项目时优化结果给到现场操作员反馈说“蓄冷罐在峰段放冷没问题但吸收式制冷机今天在检修”直接导致实际运行严重偏离调度计划。解决方案就是加约束把设备可用状态做成调度模型的输入参数。每天凌晨自动从设备运维系统同步设备状态再做日内滚动。另外还可以给调度结果加一个“执行偏差惩罚项”比如当实际负荷与预测负荷偏差超过 10% 时模型会在下一轮滚动优化中自动修正。这些都是落地时绕不开的细节。5. 调度系统落地的现实问题与扩展方向5.1 从离线优化到闭环控制还有多远很多项目的优化调度停留在“开环建议”阶段也就是优化结果发给操作员操作员手工执行。两轮以后操作员发现负荷预测不准就不太愿意照做了系统慢慢沦为“报表生成器”。要做成闭环至少需要两个条件一是能量管理系统具备远程控制能力能自动下发设备设定值二是需要一个安全保护层防止调度指令违反设备硬性约束。在第二个条件上我踩过一个比较深的坑空调冷冻水温度设定值被调度模型远程调高了 2℃结果末端除湿效果变差大堂结露。后来我们在闭环控制回路里加入了一个物理约束层凡是涉及制冷机出水温度、锅炉出水压力等关键参数的指令必须通过安全校验才能下发。这件事提醒我调度算法再聪明也要尊重设备的物理边界。5.2 不确定性、需求响应和碳约束怎么加进模型目前多数项目还是用“预测-优化-执行”的开环流程负荷预测的误差是影响收益的主要因素。进阶一点的做法是引入随机优化或鲁棒优化。比如冷负荷预测误差按正态分布处理生成多个场景优化目标变成“期望成本最小化”这就是两阶段随机规划。它的代价是模型规模和求解时间显著增加项目上要评估实际收益能不能覆盖这部分成本。需求响应方面如果园区参与电力现货市场或需求响应竞价可以让调度模型响应分时电价信号甚至预留可中断负荷容量。这部分在政策开放的区域很有价值模型里要引入可中断负荷变量和一个“最小可中断时长”约束。碳约束则是在目标函数中加入碳排放成本内燃机每发1 kWh电的碳排放系数乘以碳价与燃气锅炉、购电对应的碳排放一起计入总成本。当碳价足够高例如 60 元/吨以上时优化结果就会自动偏向更高效的低排放设备组合。还有一个近年来越来越多项目在考虑的方向是把电化学储能和电动汽车充电桩纳入统一调度。原因很简单电化学储能的响应速度比蓄热罐快得多适合调节电力瞬时的波动充电桩则既是负荷又可能变成储能资源。它们进入模型后原本的“电热冷”优化就升级成了“电热冷储充”多能源综合调度模型复杂度再上一个台阶但收益空间也更大。说回我自己的感受综合能源优化调度最难的部分其实不是算法本身而是对系统物理特性的理解和对实际工程约束的尊重。模型写漂亮容易真正让系统每天稳定运行、省下真金白银需要的是把负荷预测、设备模型、求解器、执行层和安全保护这五块拼图完整拼上。这中间的很多细节一两句话说不完后面我还会继续分模块拆解包括负荷预测怎么做、储热/储冷罐的SOC怎么标定、滚动优化怎么避免震荡等欢迎持续关注。如果你也正在做类似的项目或者正准备搭一套电热冷联合调度系统建议先把设备台账和能量流图画清楚再动建模写代码这件事省不了。万事开头难但开头做扎实了后面就是一路打磨细节的事了。