首页 / 资讯中心 / 文章详情

综合能源系统优化运行:碳交易与需求响应的协同建模实战

综合能源系统优化运行:碳交易与需求响应的协同建模实战 ★ FEATURED ARTICLE
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(t1) 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%。特别值得注意的是需求响应改变了碳交易的作用路径当部分峰荷被转移后燃气轮机可以在更低的负荷率下有更稳定的出力区间配合碳交易机制系统会主动选择在谷段充电蓄热进一步减少燃气锅炉和高峰时段燃气轮机的运行。二者协同的效果不是简单相加而是“112”的交互增益。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. 结语最值得留意的一条经验在我做完整个项目的所有仿真后最大的心得体会不是模型本身怎么建、求解器怎么选而是“三种机制协同”带来的边际效果远比单独实施要复杂且显著。碳交易降低成本未必直接降但减排效果好需求响应能省成本但减碳看情况两个机制一起用的时候碳成本的信号作用和系统负荷的灵活性在线性规划里交织在一起算出来的结果经常出乎意料——一些设备组合的启停状态在单机制场景下根本不会出现在两机制协同场景下却变成了的最优解。所以如果之后有人要复现这个方向我给三条最实在的建议第一先跑基准线再逐步加约束坚决不要一上来就把全部机制揉进一个大模型否则调试难度成倍增加第二碳价和配额这类政策参数一定要做灵敏度分析一组参数下得出的最优策略大概率是可移植到其他场景的第三需求响应模型的负荷分类不要做得太细三类就够过多的负荷类型只会让整数变量失控却不能显著改善结果的合理性。做综合能源优化最大的乐趣其实不在于把模型调得很复杂而在于面对一组看似矛盾的约束和目标找到一个既满足经济性又兼顾低碳性的运行方案。碳交易和需求响应是两只有力的手一个从供给侧压排碳一个从需求侧调弹性配置得当的情况下整个系统的运行状态确实能比传统调度更漂亮、更务实。
阅读完成 · 觉得有帮助?
咨询建站