☰
综合能源系统优化运行:碳交易与需求响应的协同建模实战
2026/10/16 8:11:09 网站建设 项目流程

1. 项目思路拆解:为什么这三个词要放在一起做优化

1.1 综合能源系统:不是简单的“物多能”叠加

做这个方向之前,我先花了不少时间梳理综合能源系统(Integrated Energy System, IES)到底解决什么问题。传统供能方式里,电、气、热、冷各自独立规划、独立运行,电网只管电,热力公司只管热,燃气公司只管气,相互之间几乎没有协同。这种“各管一段”的模式结果就是能源结构松散、设备利用率低、用能成本偏高。举个很直观的例子:燃气轮机发电时产生的余热,如果旁边没有热负荷,就直接排掉了;可同一时间锅炉又在那儿烧气制热。两套系统单独看都正常,放在一起看就非常浪费。

综合能源系统要做的事,就是把这几个系统耦合起来,让能量在电、气、热、冷之间按需转换和梯级利用。这种项目常见的物理架构一般包含能源输入侧(电网购电、天然气、风电光伏)、转换设备侧(热电联产机组、燃气锅炉、电锅炉、热泵、吸收式制冷机)、储能侧(蓄电池、蓄热罐)以及终端负荷侧(电负荷、热负荷、冷负荷)。核心逻辑就一句话:在满足用户冷热电需求的前提下,通过多设备协调和能量互补,实现整体用能最优。

但这里有个关键点:如果只做“多能互补”,优化目标往往停留在“花最少的钱买到能源”这个层面。在双碳背景下,这个层级就不够用了。因为碳排放本身没有体现在价格信号里,系统自然会把便宜的化石能源当成首选。所以就需要把碳成本和需求侧资源也放进优化框架。

1.2 碳交易机制:把排碳放进成本函数的“价格信号”

碳交易机制说白了就是给碳排放一个价格。政府给企业发放免费配额,实际排放超过配额就要到碳市场购买缺口,低于配额可以把剩余额度卖出去。这样碳排放就从“道德约束”变成了“真金白银的成本约束”。传统碳预算方法(比如简单设一个排放量上限)属于硬约束,而碳交易是把碳排放量投影到目标函数里的经济项,天然适合和运行优化结合。

我在实际建模时用的是阶梯式碳交易价格机制。为什么用阶梯式而不是固定碳价?因为单一碳价对系统减排的激励太弱——反正超出1吨和超出100吨单价一样,优化器会倾向于“买到极限”。阶梯碳价是超额部分分段加价,比如超出配额0-100kg按基础价60元/t结算,超出100-200kg部分按80元/t,再往上按100元/t。这样一来,系统每多排一吨碳,边际成本是递增的,优化器才会认真权衡“清洁设备多发电”和“继续买碳配额”哪个更划算。

碳排来源也要拆细。一个是外购电力的间接排放——电网电是按照全国平均排放因子算的,比如取0.581kg CO2/kWh;另一个是天然气燃烧的直接排放——天然气热值9.7kWh/m³,单位热值碳排放约0.22kg CO2/kWh。这两部分加起来才是系统的实际总排放。很多初学者忽略了一个坑:燃气轮机和燃气锅炉消耗的天然气都是碳排放源,但如果做了热电联产,同样一立方米天然气发的电和产的热,它的排放归属怎么算?实事求是地说,就是按燃料消耗量折算排放,发电和产热的能量产物不重复计碳,燃料本体就是碳排放载体。这个理解对了,碳账就不会算错。

1.3 需求响应:从“按需供能”到“源荷互动”

再来看第三个词——需求响应。过去做运行优化,负荷曲线是固定边界条件,相当于“上游供多少、用户用多少,中间想办法补缺口”。但实际用户侧是有弹性的:空调温度调高两度、错峰启动热水器、工商业用户把一部分生产工序挪到夜间,这些行为都会改变负荷曲线。需求响应就是把这些柔性负荷资源引入优化,让负荷从“硬边界”变成“可调变量”。

需求响应通常分两类。价格型需求响应(Price-Based Demand Response, PBDR)基于分时电价,用户根据电价信号自发调整用电行为,用电价格弹性系数来模拟——电价高了,负荷自然往下掉;激励型需求响应(Incentive-Based Demand Response, IBDR)则是由运营商与用户签订合同,约定负荷削减或转移量,用户执行后获得补偿金。两类模型在数学处理上完全不一样:价格型通过对需求价格弹性矩阵调整负荷曲线,激励型需要在优化中增加可转移负荷和可中断负荷的决策变量,并引入补偿成本项。我后面实操部分用的是两者结合的方式,这样既能反映电价引导,又能模拟补偿激励对负荷的直接作用。

三者关系理顺之后,整个项目的核心逻辑就很清楚了:用碳交易把环境约束变成经济信号,用需求响应把负荷侧变成调节资源,最终目标函数是让总运行成本最低,而成本里既包括购能成本和设备运维成本,也包括碳交易成本,还扣除或计入需求响应补偿费用。啥叫“优化运行”?就是把以上这些放到一个数学框架里求解。

2. 数学模型构建与关键参数设定

2.1 目标函数拆开看:五类成本如何算清楚

模型的目标函数我建议按成本项逐个写,别一上来就想把整个公式堆出来。核心总成本是下面五项的加加减减:

第一项是购能成本。包括从电网购电的费用和购买天然气的费用。购电费用是分时电价和购电功率的乘积在全天24小时求和;购气费用是气价乘以天然气消耗量。气价我取的是3.5元/m³,这个价格在工商业用户场景里比较真实,折算到单位热值大概是0.36元/kWh,比峰值电价便宜不少,这也是燃气设备在系统里有经济性的原因。

第二项是设备运维成本。每台设备的单位运维成本乘以其出力,然后把所有设备加起来。运维成本不好瞎定,我的做法是参考常见工程经验值:燃气轮机每发出1kWh电运维成本约0.05元,电锅炉制热每kWh约0.02元,蓄电池充放电每kWh约0.08元(储能设备损耗和寿命折价较高)。

第三项是碳交易成本。这里我采用阶梯式碳价,具体为:实际排放低于配额60%时,剩余配额按24元/t出售(基础碳价的40%);实际排放介于配额60%-100%时,不额外交易;实际排放超过配额0-100kg时,按基础价格60元/t购买;超过配额100-200kg时,超出部分按基础价格1.5倍(90元/t);继续超出则按2倍价格(120元/t)。这样一个分段函数在MATLAB里可以用几个辅助0-1变量实现线性化,也可以用Yalmip的blackbox方式处理。要注意的是,阶梯碳价函数是非连续、非线性的,直接用非线性解算器效率低,最好用混合整数线性规划(MILP)处理。

第四项是需求响应补偿成本。激励型需求响应需要支付给用户的补偿费用,我按削减或转移负荷单位补偿0.5元/kWh来计算。这个数字并不是拍脑袋出来的——低于分时电价的峰谷差(峰谷差超过0.8元/kWh),用户有动力参与,同时又不至于高到让系统倾家荡产去“买需求响应”。

第五项是碳排放收益或惩罚的镜像项。当实际排放低于配额时,剩余的配额按出售价格折算成收益,在目标函数里是负数,直接与碳交易成本合并即可。

目标函数最终形式就是最小化上面五项的合计。写成数学表达式就是:

min F = C_buy + C_gas + C_mt + C_carbon − R_dr

其中C_dr是需求响应带来的购能减少收益(负成本)或补偿成本,实际操作中我是把需求响应成本单列并加上用户不满意度惩罚,防止优化器为了省钱把负荷削得面目全非。

2.2 约束条件里那些容易翻车的细节

约束条件是模型能跑通的关键。功率平衡约束是最基础的:电功率平衡要求电网购电加上燃气轮机发电、风电光伏出力,再加上蓄电池放电,等于电负荷(考虑需求响应后)加电锅炉和电制冷机的耗电。热功率平衡要求燃气轮机余热、燃气锅炉和电锅炉产热覆盖热负荷加蓄热罐储热。冷功率平衡则靠吸收式制冷机和电制冷机协同满足。

设备出力上下限和爬坡约束也容易出现细节问题。燃气轮机的出力下限不能简单设为0——实际上燃气轮机在很低负荷下运行效率极差甚至难以稳定运行,我设了30%额定功率的下限。爬坡约束则是相邻两个时段出力变化幅度的限制,燃气轮机取每小时10%额定功率的爬坡速率。这个约束对结果的影响比想象中更大:有了爬坡约束,燃气轮机就不能在电价尖峰时段“从0瞬间拉满”,优化器就得提前在低价时段预热备载,这反而更接近真实运行逻辑。

储能约束在项目里也是一个大头。蓄电池的荷电状态(SOC)逐时递推公式是SOC(t+1) = SOC(t) + η_ch·P_ch(t) − P_dis(t)/η_dis,充放电效率和容量上下限都要约束。这里最容易被忽略的是“充放电不能同时进行”的约束,需要引入两个互斥的0-1变量。蓄热罐类似,但热损耗比电储能大,我按每小时2%的自放热率处理。

还有一个约束是我觉得特别值得提醒的:碳配额约束必须和碳交易机制的类型匹配。如果采用“无偿配额+市场交易”模式,配额本身不是硬约束,因为超出可以买;但如果引入免费配额比例,比如初始配额免费发放占比只有80%,那么对应的配额计算方式也要调整。我是把配额总量作为边值参数,在此基础上用阶梯碳价函数作经济惩罚,这样更贴近国内碳市场的运行现状。

2.3 需求响应模型的选择:价格型还是激励型,哪个先上

两种需求响应模型我都实际跑过,先说结论:价格型适合做基础层,激励型适合做增量调节。

价格型需求响应我用的是自弹性系数和交叉弹性系数构成的弹性矩阵。自弹性系数是当前时段电量对当前时段电价的响应,一般取-0.2,意思是电价上涨10%,当前时段用电量下降2%;交叉弹性系数是当前时段用电量对其他时段电价的响应,取0.1,电价上涨会推动部分负荷转移到低价时段。我用弹性矩阵把原始负荷曲线改造成价格响应后的负荷曲线。这套模型的优势是数学上简洁,直接乘一个矩阵就得到新负荷曲线,不需要增加整数变量,求解特别快。缺点是用户响应行为偏简化,没有考虑补偿成本。

激励型需求响应则更“重”一些。我把负荷分为三类:不可调负荷(基础照明、医疗设备等,必须满足)、可转移负荷(洗衣机、某些工业工序,转移前后时段总用电量不变)、可中断负荷(空调柔性调节、临时照明,可以削减但每时段削减量有比例限制)。可转移负荷需要在模型中记录“转移起点”和“转移终点”,用0-1变量加设约束确保转移前后总电量守恒。可中断负荷的削减比例上限,我取该类型负荷总量的20%,单位削减成本按阶梯递增——削减量越大,补偿单价越高。这样能模拟真实市场中用户响应意愿随激励增强而提升的规律。

实际操作中我通常同时部署两类需求响应:先用价格弹性矩阵对基础负荷作一次预处理,结果作为激励型需求响应的负荷基准,然后在这个基础上做可转移和可中断决策。这样做的好处是模型更贴近现实——用户既会因为电价信号主动调整,也会因合同激励做出额外响应。

3. 典型场景实操:园区IES的24小时逐时优化

3.1 负荷与设备参数准备

为了验证模型有效性,我搭建了一个典型园区的算例。园区包含小型商综和办公楼,夏季典型日的24小时电负荷峰值约1200kW,谷值约450kW;热负荷用热水需求为主,峰值出现在早晚,约600kW;冷负荷由电制冷机和吸收式制冷共同满足,峰值约500kW,出现在午后时段。

设备配置如下:燃气轮机(CHP)额定容量500kW,效率40%,热电比1.2;燃气锅炉额定容量600kW,效率90%;电锅炉额定容量300kW,效率95%;电制冷机额定容量400kW,能效比3.5;吸收式制冷机利用CHP余热制冷,容量200kW;蓄电池容量600kWh,最大充放电功率150kW,充放电效率95%;蓄热罐容量800kWh,最大储放热功率200kW。

风电和光伏按照园区所在地典型出力曲线给定,光伏午间出力峰值400kW,夜间为零;风电全天有一定的波动,夜间出力相对较高。分时电价采用某地区一般工商业峰谷电价:峰段10:00-15:00和18:00-21:00,价格为1.25元/kWh;平段07:00-10:00、15:00-18:00和21:00-23:00,价格为0.75元/kWh;谷段23:00-次日07:00,价格为0.38元/kWh。天然气价格为3.5元/m³。

这些参数不能随手抄别人的论文,要结合自己案例所在地区的真实能源价格和负荷特性来定。参数不准的话,优化结果会往离谱方向走。比如天然气价格如果定太低,系统就会过度依赖燃气轮机,结果算出来碳排放不降反升——这在参数设计阶段就要警惕。

3.2 不同机制组合下的优化结果对比

我一共跑了个对比,四组条件分别是:纯经济调度(不含碳交易和需求响应)、只加碳交易、只加需求响应、碳交易+需求响应同启。这是评估各机制贡献最直接的方法。

先说纯经济调度组的结果。系统主要集中在谷时段购电给蓄热罐充热,峰时段优先用燃气轮机发电并回收余热供热,光伏午间大发时段电负荷由光伏直接供给,缺电则购网。总运行成本为2.36万元,碳排放总量为9.8吨二氧化碳。这个结果是“最省钱但最排碳”的基准线——因为天然气便宜且发电可以同时满足热需求,优化器倾向于在峰时段开足燃气轮机。

加入碳交易机制后,情况发生了不同的变化。总成本变为2.41万元,表面上比基准线贵了大约500元,但碳排放下降到8.6吨,降幅约12%。这个结果的解释是:阶梯碳价推高了燃气轮机的边际发电成本,优化器会把一部分峰时段发电从燃气轮机转移到电网上,同时提高电锅炉在谷段制热的比例。碳交易组的燃气轮机日发电量下降了约12%,电锅炉制热量提高了约20%。这说明碳价确实在改变设备调度次序,减排效果非常明显。

只加需求响应、不引入碳机制的第三组又有不同的逻辑。需求响应把部分峰段电负荷转移到了谷段和平段,峰段负荷降低约8%。总成本降为2.28万元,比基准线降低约3.4%。但碳排放依然在9.5吨高位——负荷转移降低的是购电成本,没有直接激励减碳。这个结果很有启发:很多时候我们指望需求响应“顺便节碳”,但如果不把碳成本引入,需求响应对碳排放的影响是有限的。

碳交易与需求响应同启的第四组方案,结果是总成本2.33万元,碳排放8.2吨。与“只加碳交易”那一组相比,碳排放进一步下降4.7%;与“只加需求响应”那组相比,碳排放下降了13.7%。特别值得注意的是,需求响应改变了碳交易的作用路径:当部分峰荷被转移后,燃气轮机可以在更低的负荷率下有更稳定的出力区间,配合碳交易机制,系统会主动选择在谷段充电蓄热,进一步减少燃气锅炉和高峰时段燃气轮机的运行。二者协同的效果不是简单相加,而是“1+1>2”的交互增益。

3.3 灵敏度分析:碳价、配额、负荷弹性怎么调

模型调通之后,灵敏度分析是必须做的一步,否则论文或报告评审会质疑参数的鲁棒性。我分别对碳交易价格、配额总量和负荷弹性系数做了参数扫描。

碳价扫描从0元/t到200元/t,步长20元。结果发现碳排放量呈阶梯形下降:碳价低于60元/t时,系统几乎不关心碳排放,因为碳成本远低于设备调整成本;碳价跨过80元/t之后,燃气轮机发电量开始明显下降;当碳价超过160元/t,碳排放趋于饱和,系统已经把所有能替换的化石能源都换成了清洁能源或购电,再提高碳价只会增加成本而没有额外减排收益。这个拐点就是“边际减排潜力耗尽点”,在做方案对比时要找准。

配额总量扫描那组也很有意思。初始配额从无配额(100%需要购买)到按基准线法发放(基于历史排放的90%)再到全量免费发放,碳排放变化并不大。为什么?因为阶梯碳价的惩罚斜率没变,即使配额提高,实际多排仍然不划算。真正影响系统决策的不是“配额给多少”,而是“超额后每多排一吨需要多付多少钱”。这提醒我后来设计模型时,把配额总量作为后处理参数而不是核心决策变量。

需求响应弹性系数方面,我把自弹性系数从-0.1扫到-0.5,观察结果。弹性系数绝对值越大,用户对电价越敏感,负荷转移量越大,运行成本下降越明显。但出现了一个值得警惕的现象:当自弹性超过-0.4后,总成本下降幅度明显放缓,而用户侧的负荷曲线已经被削得形状很“难看”——大量负荷集中在谷时段,谷时段负荷反而出现新的小高峰。这说明需求响应也有边际递减效应,并不是弹性越大越好。实际项目中要充分考虑用户舒适度底线,单靠经济信号无限制引导负荷,会引发用户不满甚至负荷反弹。

4. 常见问题与排查技巧实录

4.1 模型求解不收敛怎么办

第一次跑模型时,我遇到最典型的问题是MILP求解时间过长甚至无法收敛。原因大部分出在三个地方:

第一个是整数变量设计不合理。可转移负荷如果按照“每个时段的每类负荷都做0-1决策”,变量数会爆炸。一栋有24时段的模型,可转移负荷类别有两三种,0-1变量数量轻松超过1000个,求解起来非常慢。解决办法是采用“聚合转移窗口”方法——不是每个时段独立决策,而是把可转移负荷按时间窗口聚合,比如设定转移窗口为4个时段,每个窗口内只需要两个整数变量控制转移起止点。这样整数变量数量大幅下降,求解时间从几十分钟降到几十秒以内。

第二个是阶梯碳价分段函数的线性化写错。我一开始直接用了嵌套的if-else逻辑(这在Yalmip里不直接支持),求解器报错,或者扔出一个非凸的可行域。后来改用二进制展开的方式,把阶梯分段用三个0-1变量加线性不等式组表示,问题就解决了。注意分段函数的“断点”处要加强约束,避免出现在边界上无解的情况。

第三个是约束之间的数值尺度差异太大。碳价格的单位是元/t,电功率单位是kW,一小时的能量单位是kWh,混合在一起后系数可能跨好几个数量级,求解器的数值稳定性会很差。我踩过这个坑之后,把所有变量统一换算成kW和元,再对目标函数除以一个基准值做归一化,求解器的迭代速度显著提升。

4.2 碳配额基线怎么定才合理

定配额总量是整个模型里最“政治化”的参数,处理不好会让结论完全变味。我的经验是不要自己拍脑袋定一个数,而是分三步走:

第一步,先跑一版没有碳约束的纯经济调度,得到系统的“自然排放量”作为基准。第二步,设定配额为基准排放量的85%-95%之间,模拟“适度收紧”的政策环境。第三步,对不同的配额比例各跑一组曲线,观察系统成本与排放的权衡关系,形成帕累托前沿,再由项目决策者根据实际减排目标选点。这样做的好处是避免了“配额定得太松导致模型里碳交易形同虚设,或者定得太紧导致优化器直接停掉所有化石设备”的尴尬局面。

还有就是配额分配方式的选择。免费配额、拍卖配额、基准线法分别对应不同的碳排放成本起点。免费配额适合模拟当前碳市场的过渡阶段,拍卖配额适合模拟未来收紧场景。如果论文想体现政策敏感性,就直接把“免费配额比例”做成多场景对比,比单点设定更有说服力。

4.3 需求响应参数过大会造成哪些假象

需求响应模型如果参数设置不当,优化结果会出现很多“假优化”现象。最常见的坑是把可中断负荷比例设得过高——比如设定可中断比例为50%,优化器会直接把峰段负荷砍掉一大半,系统的“成本最优解”是建立在大量削减用户用电的基础上的,明显脱离实际。我的建议是综合参考类似园区做过的真实需求响应项目,可中断负荷比例控制在10%-20%以内,而且要在目标函数里增加用户不满意度惩罚项。实际操作中我给用户不满意度定义了货币化成本,即单位削减电量导致的不满意度折价为1.2元/kWh,这个值高于需求响应补偿单价,从而保证优化器只在必要情况下才调用负荷削减能力。

还有一类问题是可转移负荷的“跨日转移”现象。如果不约束转移时间的范围,优化器可能把今天的负荷全部转到明天凌晨,这在数学模型上合法但物理上不可行。我通过给转移窗口加上最大延迟时段数(比如最多延迟4小时),把这个bug从源头堵住了。

5. 结语:最值得留意的一条经验

在我做完整个项目的所有仿真后,最大的心得体会不是模型本身怎么建、求解器怎么选,而是“三种机制协同”带来的边际效果远比单独实施要复杂且显著。碳交易降低成本?未必直接降,但减排效果好;需求响应能省成本,但减碳看情况;两个机制一起用的时候,碳成本的信号作用和系统负荷的灵活性在线性规划里交织在一起,算出来的结果经常出乎意料——一些设备组合的启停状态在单机制场景下根本不会出现,在两机制协同场景下却变成了的最优解。

所以如果之后有人要复现这个方向,我给三条最实在的建议:第一,先跑基准线再逐步加约束,坚决不要一上来就把全部机制揉进一个大模型,否则调试难度成倍增加;第二,碳价和配额这类政策参数一定要做灵敏度分析,一组参数下得出的最优策略大概率是可移植到其他场景的;第三,需求响应模型的负荷分类不要做得太细,三类就够,过多的负荷类型只会让整数变量失控,却不能显著改善结果的合理性。

做综合能源优化,最大的乐趣其实不在于把模型调得很复杂,而在于面对一组看似矛盾的约束和目标,找到一个既满足经济性又兼顾低碳性的运行方案。碳交易和需求响应是两只有力的手,一个从供给侧压排碳,一个从需求侧调弹性,配置得当的情况下,整个系统的运行状态确实能比传统调度更漂亮、更务实。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询