第一次看到“探索含冰蓄冷空调的 CCHP-MG 多时间尺度优化调度”这个项目名我脑子里蹦出来的是三个非常务实的问题这套系统到底靠什么省钱冰蓄冷空调在里头扮演什么角色为什么调度非要折腾出多个时间尺度把这三个问题答清楚这个课题的大框架基本就立住了。CCHP是冷热电联供通俗讲就是一个小型的能量总站既能发电、又能供热、还能制冷。MG是微电网把光伏、风电、燃气轮机这类分布式电源和负荷聚在一起既可以从大电网买电也能自己独立运行。冰蓄冷空调则是利用夜间的低谷电把水冻成冰白天再用冰融化时的冷量给房子降温相当于给空调系统加了一块“冷电池”。这三个东西组合在一起核心目标其实很朴素在保证用户冷、热、电供应可靠的前提下尽量压低运行成本。单看任何一个环节都不算新鲜但把它们统一放进“多时间尺度”的调度框架里就成了一个典型的能源系统工程问题。这篇文章我会按照自己在实际操作中的思路把这个课题从设计思路、模型搭建、算法选型到仿真验证和踩坑记录完整拆开讲讲。1. 项目整体拆解CCHP-MG到底在解决什么问题1.1 冷热电联供一体化设计与能量梯级利用先聊CCHP的核心逻辑。传统火电厂发电效率通常在35%到45%之间剩下的大头全变成废热散掉了。而CCHP不一样它让燃气轮机或燃气内燃机先发电然后把高温烟气收集起来通过余热锅炉产生蒸汽或热水再去驱动吸收式制冷机供冷或者直接供采暖。这样一来一次能源的利用率能提升到75%甚至90%以上这就是所谓的能量梯级利用。放到微电网背景下CCHP的性质就更有意思了。它既是电源又是冷源和热源天然承担着微网内“骨干单元”的角色。光伏和风电出力看天吃饭蓄电池只能解决电的时移问题但建筑的冷热负荷也占大头如果只靠电制冷和电采暖去满足电网侧的压力会非常大。所以把CCHP放进微电网本质上是用燃气这个可控一次能源把电、冷、热三个系统串成一张网。1.2 微电网为什么要把冷热耦合进来很多人初看“CCHP-MG”这个缩写会觉得微电网只是个电力系统冷热负荷是另外的事。实际做工程的时候这种割裂的看法会栽跟头。微电网里的电负荷和冷负荷是强耦合的——电制冷机要用电冰蓄冷空调的压缩机也要用电而吸收式制冷机消耗的是燃气轮机余热不直接吃电。同一时刻如果冷负荷冲上来调度系统面临选择是用电制冷、用余热制冷还是用蓄冰槽提前存好的冷这个选择直接影响购电曲线。比如下午两点电价最贵冷负荷又达到峰值如果CCHP余热不够空调拼命开机用电运行成本马上失控。但如果提前在夜里用谷电把冰蓄好白天让融冰来扛高峰冷负荷就能把最贵的电量挤出去。这就是为什么微电网做能量管理必须把冷热电放在一个模型里同时看分开调度一定会出现局部最优、全局吃亏的结果。2. 冰蓄冷空调为什么是这套系统里的关键拼图2.1 移峰填谷的经济学逻辑冰蓄冷的核心卖点就是移峰填谷。国内大多数地区执行分时电价峰段电价往往是谷段的2倍甚至3倍。我做过一个粗略测算假设某栋办公楼夏季尖峰冷负荷有1000千瓦如果把其中200千瓦的冷负荷转移到夜间谷段去制冰按每天6小时的峰段时长、峰谷电价差0.5元/千瓦时、制冷机COP约3.0来估算每天光省下的电费就有200元左右一个供冷季下来非常可观。这里要注意一个换算关系冷负荷单位是千瓦热当量压缩机的耗电单位也是千瓦但两者之间差一个能效比COP。制取1200千瓦时冷量COP为3.0的电制冷机大约要耗电400千瓦时这才是电费账单上的真实增量。很多新手做经济性分析时直接用冷量乘电价会把收益高估两三倍这是第一个容易踩的坑。从系统层面看冰蓄冷还有个隐性价值它能改善CCHP机组的运行工况。燃气轮机在部分负载率下效率掉得很快如果冷负荷波动剧烈机组只能跟着频繁升降负载。有了蓄冰槽调度可以让机组在高效区间平稳运行、把多余冷量存起来而不是让机组整天喘着气干小活这对维护成本和设备寿命都是实打实的收益。2.2 蓄冰槽的动态建模要点把冰蓄冷加进优化模型时蓄冰槽不能简单套用蓄电池的建模方式。蓄电池有充放电功率限制和容量限制就够了而蓄冰槽涉及温度、相变、冷损甚至蓄冰形态冰浆、盘管、封装冰等多个变量。工程上比较实用的做法是用一个带效率系数的能量平衡方程来描述蓄冰量(k1) 蓄冰量(k) 蓄冷速率 × 时间步长 × 蓄冷效率 − 融冰放冷量 × 时间步长蓄冰量用千瓦时表示上限就是蓄冰槽的额定蓄冷量。蓄冷速率和融冰速率都有各自的上下限不能像电池那样任意大功率充放。蓄冷效率通常在0.85到0.95之间取决于制冷机产冰温度、保温条件和盘管换热性能。还有一个常常被遗忘的约束蓄冰槽当天不能既大规模蓄冷又大规模融冰这种操作在实际设备上很难执行而且经济上完全不划算。所以模型里一般会引入一个模式变量区分“蓄冰模式”和“融冰模式”两个模式的速率不能同时为正。这个约束看起来简单但漏掉它的话优化求解器会给出一个看起来很美、实际上根本跑不出来的调度方案。2.3 和CCHP耦合后的时序错位优化冰蓄冷真正的高级用法不只是简单地“夜里制冰、白天放冷”。它还需要和CCHP的余热供给错位配合。比如某些时段燃气轮机因为电力负荷需要满发但冷负荷不高余热却非常多。这时候如果吸收式制冷机全开冷量就过剩了不如把一部分余热驱动吸收式制冷机把产出的冷存进蓄冰槽留给傍晚冷负荷的小高峰用。另一个场景是夜间谷电时段燃气轮机如果夜间停机吸收式制冷机没有余热可用那就只能靠电制冷机配合蓄冰槽制冰蓄冷。等白天冷负荷上来蓄冰槽和吸收式制冷机一起放冷电制冷机反而可以停掉或轻载运行。这种跨时段的余热、蓄冷、电制冷三者之间的时序错位正是优化调度最出效果的地方也是这个课题里最值得深挖的亮点。3. 多时间尺度调度三层框架怎么落地3.1 为什么单一日前调度不够用如果只做日前调度本质上是提前一天根据预测数据排出未来24小时逐小时或逐15分钟的机组出力计划。问题是预测总有偏差——天气预报的光照强度和实际情况经常对不上大电网的实时电价也可能波动。一旦偏差累计日前计划可能从下午三点开始就完全跑偏蓄冰槽里的冰提前放光CCHP机组负载率也偏离设计点最后的实际运行成本会显著高于理论最优值。我习惯用一个导航软件的类比来解释这件事开车去一个陌生的地方出发前看的是全局路网规划的“最优大路线”但走到半路遇到堵车导航会基于当前位置重新算一条局部最优的小路线。多时间尺度调度就是这个逻辑——用日前调度定大方向用日内调度应对路上的“堵车”再用实时层处理一脚油门一脚刹车级别的波动。3.2 日前、日内、实时三层的任务划分三层框架的分工可以这样理解。日前层的时间尺度是24小时分辨率通常是1小时或15分钟。它解决的是全局资源配置问题比如燃气轮机明天几点启动、几点停机蓄冰槽夜里蓄多少冷、白天分几个阶段放冷以及和大电网的交易计划。这一层对预测精度要求不高但必须全局考虑因为蓄冰槽一旦在凌晨决定多蓄200千瓦时冷白天所有时段的可调度资源就都变了。日内层的时间尺度通常是4到6小时会按15分钟或5分钟的分辨率滚动刷新。它干的活是对日前计划做修正光伏实际出力比预测低了一截冷负荷比预计的高了那就重新调整制冷机组的出力配比、蓄冰槽的放冷节奏必要时修改与电网的交换功率。日内层最重要的是“滚动”两个字——每跑完一个时间窗就用最新实测数据重新优化形成一个闭环。实时层则工作在秒级到分钟级常见做法是用模型预测控制或传统PID控制把底层设备快速拉到日内层给出的指令值附近。蓄冰槽、制冷机、燃气轮机都有爬坡速率限制日内层给出的目标如果太激进实时层跟不上就会产生跟踪偏差所以日前和日内层在做计划时就要提前留出调节余量。3.3 各层之间的衔接与数据流建模时三层不是孤立的它们之间要传递关键边界条件。日前层计算出的蓄冰槽蓄冷计划要作为日内层的初始条件日内层修正后的设备启停状态又成了实时层预测模型里的约束。反过来实时层或日内层如果发现某个设备的实际响应速度和模型假设差太多也需要反馈修正上一层的模型参数。实操中有一个衔接细节我特别想提醒日前的蓄冰槽终值约束。蓄冰槽是每天循环使用的装备调度周期结束时它的蓄冰量应当回到一个合理的起始值否则第二天凌晨没地方蓄冰整个计划就断了。一般做法是在日前模型的最后一个时段约束蓄冰量回到初始值或计划设定值这个约束不写进模型层间衔接就会出问题。4. 优化模型与核心约束的数学化表达4.1 目标函数怎么设计才不遗漏成本这个项目的优化目标常见写法是综合运行成本最小化包含四个部分燃气成本、购电成本减去售电收益、设备维护成本、启停惩罚成本。写成公式大致是总成本 Σ(燃气耗量×气价) Σ(购电量×分时电价) − Σ(售电量×上网电价) Σ(设备出力×维护系数) Σ(启停机惩罚)燃气成本要特别注意燃气轮机的耗量曲线并不是出力乘以一个常数而是一个非线性函数往往可以近似成二次函数。为了方便求解工程上会对这个二次函数做分段线性化用几条折线去逼近原曲线。分段线性化之后目标函数就变成了混合整数线性规划问题可以丢给商业求解器去解。售电收益往往被忽略但实际上很多地区允许微电网在余电时倒送电网虽然上网电价低但蚊子腿也是肉。更重要的是允许售电之后优化器可能会在谷段买电制冰、在峰段停机售电这类套利行为在模型里必须加上合理的边界才能防止“空转套利”比如要求蓄冰槽和制冷机的运行状态符合物理可执行性。维护成本也不能简单按运行时长算因为部分负荷工况下的磨损和效率下降非常明显。常见的做法是统计不同负载率下的维护费用数据拟合成一条随出力变化的曲线嵌入目标函数。4.2 容易踩坑的约束条件处理约束条件是这个项目里最考验功力的部分。我按自己的经验列几个最常见的电功率平衡约束是最基础的它要求燃气轮机出力加光伏风电出力加购电功率等于电负荷加电制冷机功耗再加减蓄冰槽相关设备功耗。注意蓄冷工况和普通电负荷叠加时电功率平衡会直接多一块夜间负荷这个数值不小容易超出变压器的容量上限。冷功率平衡约束描述了吸收式制冷、电制冷、融冰放冷这三股冷量和冷负荷之间的实时平衡关系。这里有个容易忽略的细节融冰放冷的速度受到蓄冰槽剩余冰量的限制冰少了放冷能力自然下降。有些模型只约束“放冷不超过容量上限”忽略了剩余冰量对最大放冷速率的限制会导致日内调度计划过于乐观。设备爬坡约束用来限制燃气轮机和制冷机相邻时段出力的变化幅度。燃气轮机每分钟只能升降一定的百分比如果日前计划里出现“半小时内从满发降到空载”这种指令实时层根本执行不了。蓄冰槽的单日循环约束以及蓄冰/融冰互斥约束在前面已经提过这两个是冰蓄冷建模的核心难点也是最容易导致模型“能解出来但跑不了”的两处。5. 算法选型与求解裁剪5.1 先判断问题的数学性质再选算法拿到这个优化问题时第一步不是急着套深度学习或者智能优化算法而是先判断问题类型。这个模型里有连续的设备出力变量也有“启停”“蓄冰/融冰模式”这类整数0/1变量同时包含分段线性化后的非凸约束所以问题本质是一个混合整数规划问题严格说可能是混合整数非线性规划的松弛版本。对中小规模的算例几十个时段、十几个设备节点混合整数线性规划完全可以靠商业求解器在秒级到分钟级内解出来。我在实际项目里更倾向先把非线性项尽可能线性化能用求解器解就绝不手写启发式算法因为求解器给的是全局最优解而且有对偶间隙可以证明解的质量写论文和做工程报告时说服力强得多。但是问题规模一旦涨上去比如把微网节点扩展到几十个、考虑多微网互联整数变量会爆炸求解器可能几小时都收不住。这时候就要考虑懂分解协调或者启发式算法。5.2 主流解法的横向对比解法适用场景优势劣势混合整数线性规划商业求解器小规模、约束清晰、需要严格最优解全局最优、可复核规模大时求解慢、模型线性化有误差动态规划状态空间小、时序强依赖能处理强非线性、可处理随机性状态一多就维度爆炸粒子群/遗传算法非线性强、规模中等实现简单、不依赖凸性容易局部最优、结果不稳定拉格朗日松弛/Benders分解大规模、可分解结构并行性好、理论保证较强编程复杂、需要领域知识设计子问题深度强化学习在线滚动调度、历史数据充足决策快、适合实时层训练成本高、安全边界难保证表格里说的“粒子群容易局部最优”和“强化学习安全边界难保证”都是实际工作中高频踩坑点。我有一次用粒子群做某个算例连跑10次得到10个不同的“最优解”成本最高的和最低的差了8%。后来检查发现是参数设置里惯性权重和学习因子没有按问题尺度标定这提醒我们启发式算法的结果必须反复验证不能只看一次收敛曲线。5.3 求解超时之后怎么办实际做仿真时最头疼的问题是求解器跑超时。这时候建议按顺序做三件事先查整数变量规模能不能压缩比如把一些0/1变量合并成组合变量再查大M约束的M值设置M值过大很容易破坏LP松弛的数值稳定性让分支定界过程变得极慢最后再考虑加一些逻辑约束比如把互斥的调度模式直接整合进可行域减少大量无效搜索空间。还有一种做法是“先松弛后恢复”先把整数变量松弛成连续变量求一个下界再用启发式方法把松弛解投影回整数可行域。虽然不是严格最优但能在几分钟内给出一个高质量可行解和一个质量界工程上非常实用。6. 仿真验证的常见套路与避坑记录6.1 典型日场景怎么构造仿真验证的第一件事是构造典型日场景。对含冰蓄冷空调的系统夏季典型日直接决定设备容量选型因为冷负荷峰值通常在夏天且和电价高峰时段重叠严重。冬季典型日主要考察供暖需求与燃气轮机余热分配。过渡季冷热负荷都低重点验证系统的灵活性和启停策略。构造时不能简单地用一条理想负荷曲线我建议把工作日和休息日分开做场景因为公共建筑的电负荷和冷负荷曲线形状差异非常大。工作日会有明显的下午高峰休息日冷负荷整体下移且波动平缓。光伏出力曲线则按晴天、多云、阴天分三类各自对应不同的光照辐射数据和波动幅度。6.2 对比方案怎么设置才有说服力做这类课题的仿真对比至少要设三组方案第一组是完全不带冰蓄冷、只做日前调度的常规模型作为基准第二组加入冰蓄冷空调但只做单一日前调度第三组才是完整的CCHP-MG多时间尺度优化调度。三组方案的初始条件和负荷数据完全一致唯一变量是“是否配置冰蓄冷”和“调度框架是单层还是多层”。这样设置的好处是能清晰拆出两个维度的贡献冰蓄冷本身带来的移峰填谷收益以及多时间尺度滚动优化带来的预测误差响应收益。我在一次典型夏季算例模拟里基准方案日运行成本约1.2万元加入冰蓄冷后降到约1.08万元降幅约10%继续用多时间尺度框架进一步降到约1.02万元总降幅达到15%左右。当然这些数字跟具体电价、气价和设备参数强相关每个项目都要重新算但收益分层结构是稳定的。6.3 仿真结果分析和求解器调参经验跑完仿真后别急着贴成本和出力曲线就收工。有价值的分析要落到几个管理问题上峰段购电量下降了多少比例蓄冰槽一天的实际利用率有多高燃气轮机的平均负载率有没有提升电制冷机和吸收式制冷的出力配比是否合理我见过很多团队在这时犯一个错误仿真结果里蓄冰槽利用率只有60%却没人追问剩下的40%为什么没利用。排查下来往往是日前模型没有把冷负荷预测的误差余量留给日内层蓄冰槽安排得过于保守。这种情况的改进方向不是增加蓄冰槽容量而是调整日前层对不确定性的鲁棒参数把蓄冰槽的出力范围放宽。求解器调参方面一个特别实用的技巧是给整数变量设置分支优先级。比如蓄冰模式变量优先级最高燃气轮机启停变量次之普通连续出力变量不设优先级。这个调整有时候能让求解时间缩短一半以上因为分支定界过程会优先固定对目标函数影响最大的变量组合。7. 顺着这个方向还能往哪走7.1 考虑需求响应与碳排放约束这个课题往下走第一自然延伸是把需求响应加进来。冰蓄冷本质上是供给侧的资源时移需求响应则是从负荷侧做文章比如允许空调区域温度在一定范围内浮动让冷负荷曲线变得更平滑。两个手段叠加削峰效果会更明显但模型的维度会显著增加需要引入用户舒适度约束和响应补偿成本。另一个绕不开的方向是碳约束。越来越多项目在做碳排放配额和碳交易成本核算CCHP虽然整体能效高但毕竟烧的是天然气碳排放依然存在。如果目标函数从“成本最小”改成“成本碳排放权成本最小”调度结果会有明显变化系统会更积极地利用光伏低谷电驱动蓄冰减少燃气轮机在峰段的运行时间甚至考虑掺氢燃料等低碳方案。7.2 多微网互联与市场化交易CCHP-MG单体优化做到极致之后下一步是考虑多个微电网互联。相邻的两个微电网一个冷负荷大而燃气充足另一个光伏丰富但燃气贵两者之间如果有一条交换线路就可以在一定的交易机制下互济。这时候优化问题从单主体变成多主体博弈求解方法也从集中式优化转向分布式优化或市场出清模型。我个人觉得这个方向特别适合博士生或者想做深入研究的团队因为它把工程调度问题和电力市场机制结合起来了成果既能在学术上落地也能为实际的园区级综合能源管理平台提供决策算法支撑。最后再分享一点实际做课题的体会多时间尺度调度这个方向最容易出成果的点往往不在算法本身多新颖而在模型的物理约束是否真实、边界条件是否完整。蓄冰槽那几条约束加上冷热电耦合的多能流平衡已经把大部分入门者拦在门外了能把这些细节理清楚做出来的调度方案才真正经得起仿真复现和工程检验。