阶梯式碳交易下综合能源系统低碳运行优化建模
1. 为什么突然都开始算“碳账”了阶梯式碳交易机制的政策逻辑这几年做综合能源系统项目我发现一个非常明显的变化以前业主问得最多的是“这个系统能帮我省多少电费”现在问得最多的是“这个系统能不能帮我把碳排放降下来”。这个转变背后就是碳交易机制从“试点玩票”走向“刚性约束”的大背景。说实话在2021年全国碳排放权交易市场正式上线交易之前碳成本对绝大多数用能企业来说只是个概念算账的时候压根不会往运行优化模型里放。但现在不一样了纳入碳市场管控的重点排放单位每年要清缴配额配额不够就得去市场买买不到或者成本太高就会直接影响生产运行。而碳交易机制本身也在不断演进单纯的“总量控制配额清缴”模式正在向更精细的方向发展其中最典型的就是阶梯式碳交易。所谓阶梯式碳交易可以简单理解为把企业的碳排放量分成几个区间每个区间对应的碳价格不一样排得越多超出部分购买的单价越贵相当于碳价分段递增。这跟居民阶梯电价的逻辑是一样的——你每月用电量在第一档电价便宜用超了进入第二档、第三档电价逐档上涨。阶梯式碳交易本质上是把碳排放的环境外部性成本内部化并且让内化成本随着排放规模非线性上升从而形成更强烈的减排经济信号。这种机制对综合能源系统的影响是深远的。因为综合能源系统本身就是一种“多能互补、梯级利用”的能源供应形态它可以通过天然气、电力、热力、冷力等多种能源之间的灵活转换来优化运行策略。在阶梯式碳交易下碳成本不再是线性的系统在制定日前运行计划时必须在购电、购气、储能充放、设备启停之间做更精细的权衡。碳排放量哪怕只压过“阶梯门槛”一点点对应的碳成本增量也是跳变的这种不连续的成本特性非常考验优化模型的建模能力。从实际项目角度看面向阶梯式碳交易的低碳经济运行研究核心要解决三个问题第一综合能源系统内部有哪些设备、以什么方式耦合这是物理基础第二阶梯式碳交易机制如何量化成数学约束和成本项这是模型核心第三在多能流耦合、不确定性客观存在的条件下如何求得既经济又低碳的运行策略这是求解关键。这篇文章我就围绕这三个问题把我做过的典型项目里积累的一些方法、参数和调试经验整理出来希望能给正在做类似研究的同学一些参考。2. 综合能源系统的“家底”供能侧、储能侧、负荷侧的建模全景2.1 能源集线器理解多能耦合的第一把钥匙做综合能源系统优化不管是规划层还是运行层第一步不是写代码而是把自己当成一个“能源调度员”先弄清楚你手里到底有哪些能源资源、哪些转换设备、哪些储能设施。业内做建模最常用的抽象工具是能源集线器Energy Hub。它的核心思想很直白把整个系统看作一个多输入多输出的黑箱输入侧是电网购电、气网购气有时候还包含光照、风速这类可再生资源输出侧是系统对外供应的电负荷、热负荷、冷负荷黑箱内部是各种能源转换设备它们把输入的能源品类转化为负荷侧的能源品类。引用一个典型的园区级综合能源系统结构来说明。某综合能源系统模拟项目X一个工业园区配建的能源站包含这些设备燃气轮机天然气→电力余热进入余热锅炉回收余热锅炉燃气轮机排烟余热→高温蒸汽/热水吸收式制冷机热→冷电制冷机电→冷电锅炉电→热光伏、风电可再生电源蓄电池储能电的时移蓄热罐热的时移从能源集线器的角度看燃气轮机是最典型的“热电联产”设备它的输入是天然气输出是电和热。这个“热”不是独立产出的是电的伴生产品所以燃气轮机的运行特性要用电、热两个输出功率来共同描述中间还有一个热电比的约束。光伏和风电呢它们输出是不确定的取决于天气所以在这类优化研究里通常采用预测值或典型场景作为输入。2.2 设备建模的几个关键细节很多初次接触综合能源系统建模的人容易把设备模型想简单了觉得“效率系数乘上输入功率就是输出功率”这在概念上没错但实际优化模型里根本不能这么简化。我一个个说。燃气轮机模型除了电效率和热电比还必须考虑最小技术出力。也就是说燃气轮机启动之后不可能无限降低负荷率通常有个最低运行比例比如额定功率的30%50%。这是一个整数变量参与的约束直接让模型从线性规划升级成混合整数规划。还有启停状态变量开机和停机动作本身还伴随着启停成本如果你做的是多时段的日前运行优化不考虑启停成本优化器会给出“频繁启停”的极端策略——因为这从纯能耗角度看确实省钱但从设备寿命和管理实际来看完全不可行。吸收式制冷机是“热转冷”的设备它的核心参数是制冷性能系数通常取值在1.21.4之间。注意这个值是跟着载冷介质的温度变化的运行优化里往往固定取设计工况值。精度要求高的项目可以做成随负荷率变化的性能曲线但那样会引入非线性一般用分段线性化处理。储能设备是综合能源系统的“调节器”建模时要同时考虑容量、充放功率上限、充放效率、自放电率和SOC荷电状态连续性。蓄电池还有个容易被忽略的约束一个时段内不能同时充电和放电。这在模型里要靠二进制变量来限制否则优化器会利用“同时充放”这种无意义的循环套利输出一个物理上不可能的结果。2.3 负荷侧冷热电三联供的“客户需求”负荷侧不是模型的主角但它是所有优化的终点。综合能源系统的负荷通常是电、热、冷三种。用电负荷包括照明、动力设备、办公设备等是跟随生产节奏变化的。热负荷在北方园区里主要来自供暖和工艺用热在南方项目里可能是生活热水。冷负荷则是空调制冷季节性极强。做典型日分析的时候通常的做法是取一年四季各一个典型日或者按工作日/非工作日区分。每个典型日划分24个时段用曲线形式给出电、热、冷负荷预测值。负荷预测的精度直接决定优化结果的可靠性但这不是运行优化研究要解决的问题通常直接当作已知参数输入。有意思的是冷热电联供系统里“以热定电”和“以电定热”是两种经典的运行模式但放到优化模型里这两种模式都被统一的优化决策替代了——系统自动根据能源价格和碳成本来决定燃气轮机发多少电、产多少热。换句话说优化模型中不存在“以热定电”还是“以电定热”的选择题而是一个连续优化问题更高级的策略比如“热跟随电调峰”也被包含在统一的约束空间里了。这一点对理解这类研究的逻辑很关键。3. 碳价怎么算进优化目标里阶梯惩罚项的建模逻辑3.1 从传统碳交易到阶梯式碳交易一字之差建模复杂度完全不同传统碳交易机制下的碳排放成本建模很简单系统在运行周期内的总碳排放量减去无偿分配到的配额差额乘以一个固定的碳价就是碳交易成本。总排放低于配额的时候差额成了碳收益高于配额的时候就得买碳。但在阶梯式碳交易机制下碳排放成本的计算逻辑变了。它不再是把超出配额的部分乘以一个固定单价而是把碳排放量的超出部分切成几个区间每个区间适用不同的碳价区间越靠后碳价越高。某个阶梯式碳交易项目的典型参数如下表区间碳排放量范围相对配额碳价格区间1配额量以内含按配额盈余/缺口以基础碳价结算区间2超出配额01000吨基础碳价 × 1.1区间3超出配额10002000吨基础碳价 × 1.3区间4超出配额2000吨以上基础碳价 × 1.5基础碳价一般取多少参考国内几个试点市场的成交价格一般取6080元/吨。当然这个值每个项目、每个年份都不太一样需要看政策文件但计算逻辑是一样的。3.2 门槛在哪为什么这种机制比固定碳价更能驱动减排直观感觉是阶梯式碳交易让高排放企业“多排多付”而且多排得越多边际成本越大。但这里面的经济逻辑其实更微妙。假设企业A在基础碳价60元/吨的条件下如果仍然排放超出配额3000吨按传统固定碳价机制碳成本是3000×6018万元按阶梯碳价机制区间2的1000吨按66元结算区间3的1000吨按78元结算区间4的1000吨按90元结算总成本为1000×661000×781000×9023.4万元。同样的排放量阶梯式碳交易让企业A多付出了5.4万元多出来的这部分就是“惩罚性溢价”。但不要低估这5.4万元的作用。因为企业在做运行决策时会精细地权衡“再减排1吨碳能减少多少碳税成本”这实际上就是所谓的“边际碳减排价值”在起作用。当边际碳价从区间2的66元跳到区间3的78元时企业减排1吨碳的边际收益也从66元变成78元。这意味着原本在66元碳价水平下不划算的减排措施在78元碳价水平下可能就变得划算了。阶梯式机制的作用正在于此通过价格跳变促使企业在边际上更积极地寻找减排空间而不是满足于“差不多完成配额”。从优化建模的视角看需要用分段线性函数来表示碳排放成本。这里有一个非常标准的做法定义碳配额的缺口量为一个连续变量然后用一组阶梯区间来定义它的单位成本最终碳交易成本就是这个变量在各区间覆盖量与对应碳价的求和。这个分段线性函数的建模有一个关键技法要把“每个区间的覆盖量”表达清楚需要引入二进制变量告诉优化器“你的碳排放到底落在哪个区间”。具体来说设超出配额的碳排放总量为 (E_{ex})(E_{ex}) 由三段变量 (x_1, x_2, x_3) 组成每段对应一个区间满足 [ E_{ex} x_1 x_2 x_3 ] [ 0 \le x_1 \le L_1 ] [ 0 \le x_2 \le L_2 \cdot b_1 ] [ 0 \le x_3 \le L_3 \cdot b_2 ]其中 (L_1, L_2, L_3) 是各区间长度(b_1, b_2) 是二进制变量表示是否进入第2、第3区间。这组约束的核心逻辑是如果没有进入第2区间那么 (x_2) 只能为0一旦进入第3区间必然先占满第2区间的额度。最终的碳交易成本为 [ C_{carbon} x_1 \cdot p_1 x_2 \cdot p_2 x_3 \cdot p_3 ]这种建模方法把非线性的阶梯成本转化成混合整数线性规划可以直接用成熟的求解器求解不用自己做启发式算法。我在实际项目中一直用这个方案稳定、快速、不容易出错。4. 低碳经济运行优化目标函数、约束条件与求解策略4.1 目标函数不是把所有钱加起来就完事了综合能源系统低碳经济运行的优化目标最常规的做法是把系统的总运行成本降到最低。总运行成本包含几个大项购能成本。这是最直观的成本包括从电网购入的电费峰谷分时电价要分时段计费和从气网购入的天然气费用。天然气费用按热值计价注意单位换算——天然气购买量单位是立方米热值是每立方米若干千瓦时要换算成功率的量纲再进入能量平衡方程。设备运维成本。每台设备都有单位出力对应的运维成本这个值通常很小比如0.02元/kWh左右但乘以全年的出力量也是一笔不小的数。更重要的是如果不把运维成本纳入目标函数优化器会让某些设备常年满负荷运行——因为从能耗角度看它们“效率高”但实际运维和寿命损耗不允许这种粗暴运行方式。碳排放成本。这就是上一节讲的阶梯式碳交易成本以惩罚项或者交易项的形式加入目标函数。启停成本。燃气轮机、电锅炉这类大设备每次启停都有成本。对燃气轮机来说热应力导致的寿命折损非常显著学界的通用做法是给启停动作一个固定罚金比如一次启停500元以保证优化结果不会出现“每小时启停一次”这种工程上毫无意义的结果。于是目标函数写成[ \min \quad C_{energy} C_{om} C_{carbon} C_{start} ][ C_{energy} \sum_{t} [\rho_e(t) \cdot P_{grid}(t) \cdot \Delta t \rho_g \cdot V_{gas}(t) \cdot \Delta t] ][ C_{om} \sum_{t} \sum_{i} k_i \cdot P_i(t) \cdot \Delta t ][ C_{start} \sum_{k} S_k \cdot y_k ]其中 (\rho_e(t)) 是分时电价(\rho_g) 是气价(P_{grid}(t)) 是购电功率(V_{gas}(t)) 是购气速率(\Delta t) 是时段长度通常取1小时(k_i) 是设备i的单位运维成本系数(P_i(t)) 是设备i的出力(S_k) 是设备k的单次启动成本(y_k) 是启停次数。4.2 约束条件平衡是底线设备特性是天花板目标函数定好了约束条件才是真正决定优化结果“物理合理性”的部分。我把约束条件分成四类能量平衡约束。这是硬性约束中的硬性约束。每一个时段系统输出的电、热、冷必须等于对应负荷。电功率平衡方程长这样[ P_{GT}(t) P_{PV}(t) P_{WT}(t) P_{grid}(t) P_{bat,dis}(t) P_{load}(t) P_{EC}(t) P_{EB}(t) P_{bat,ch}(t) ]通俗讲就是所有电源出力之和必须等于所有用电设备包括负荷本身、电制冷机、电锅炉、储能充电的用电之和。热平衡、冷平衡以此类推。注意冷平衡还有一个特殊性冷负荷可以由吸收式制冷机和电制冷机共同满足这两者一热一电背后对应的是天然气和电力两种能源品类的竞争很大程度上决定了综合能源系统的整体效率。设备出力上下限约束。每台设备有最大最小出力限制。燃气轮机有最小技术出力电锅炉有最大升温功率储能设备有最大充放电功率。约束形式一般是 (P_{min} \le P(t) \le P_{max})。储能设备约束。蓄电池和蓄热罐的约束要写全SOC动态方程、容量边界、充放功率边界、同一时刻不能同时充放。蓄热罐的SOC连续性和蓄电池一样也要跟踪每个时段的状态量。[ SOC(t1) SOC(t) \eta_{ch} \cdot P_{ch}(t) \cdot \Delta t - \frac{P_{dis}(t)}{\eta_{dis}} \cdot \Delta t ]注意储能效率会让优化模型的解出现一个“倾向性”蓄电池会尽量在电价低谷时段充电、在高峰时段放电蓄热罐则因为储热成本低、容量大承担更多日间热量的时移功能。这些行为都是优化结果自己涌现出来的建模的人不需要人为设定策略只需要把物理约束写对。碳排放配额与阶梯区间约束。这一块就是前面建模的阶梯式碳交易机制。需要注意碳排放量来自两个主源购电的间接排放和燃气轮机的直接排放。电网购电对应的碳排放按电网排放因子折算一般取0.5810 tCO2/MWh这个值各个区域电网有差异需要查询当年公布的数据天然气燃烧的直接排放按排放因子折算一般取0.202 kgCO2/kWh低位发热量基准。这两部分加总得到系统总排放量再去和配额比较计算阶梯区间。4.3 求解策略混合整数线性规划与分段线性化综合能源系统运行优化在数学上是一个混合整数线性规划问题。如果模型里只包含连续变量单纯形法或者内点法都能快速求解但因为引入了设备启停二进制变量、储能同时充放限制二进制变量、阶梯碳价区间选择二进制变量问题规模一下子从纯线性变成了混合整数求解难度上了个台阶。不过好消息是现在的商业求解器这里不点名你懂的和开源求解器在处理这类中小规模混合整数线性规划问题时都很成熟。一个典型园区IES的日前调度模型设备数量在58台、时段24个变量数量大概几百到上千个其中二进制变量几十个求解时间通常在几十秒到几分钟之间完全在可接受范围内。对于目标函数中可能出现的非线性项比如设备效率和负荷率的函数关系、碳价格的跳变函数统一用分段线性化处理。这个处理方式是线性化的经典做法引入区间指示变量和分点权重把非线性曲线用折线逼近。分段点越多精度越高但变量越多求解越慢具体取多少分段点需要在精度和速度之间做个权衡。我的经验是效率曲线分段点取45个就够了再多边际收益很小。5. 算例复盘一个典型园区IES在三种碳交易机制下的运行结果对比5.1 算例怎么搭数据、场景和参数光讲建模方法有些抽象我挑一个实际做过的算例来复盘。某综合能源系统模拟项目X包含一台2.5MW燃气轮机、一台4吨余热锅炉、一台1.5MW电锅炉、一台1MW吸收式制冷机、一台1.2MW电制冷机、0.8MW光伏、一台500kW/1000kWh蓄电池和一台3m³蓄热罐。负荷侧是典型产业园区夏季典型日冷负荷峰值约4MW电负荷峰值约5MW热负荷峰值约2MW。购电价格采用峰谷分时电价峰时段1.2元/kWh平时段0.8元/kWh谷时段0.4元/kWh天然气价格2.8元/m³。碳排放配额按行业基准线法测算电负荷基准排放强度取0.45 tCO2/MWh热负荷基准排放强度取0.28 tCO2/MWh按日负荷折算后给这个园区一个日配额。基于这个算例跑了三种场景场景A完全不考虑碳成本只优化经济成本场景B传统碳交易机制基准碳价60元/吨碳排放超出配额的部分按60元/吨结算场景C阶梯式碳交易机制按上文的四段阶梯定价5.2 结果解读碳排放、总成本和设备出力结构先看总成本和碳排放。场景日总成本万元日碳排放量吨场景A32.686.4场景B34.278.9场景C34.872.5场景A虽然总成本最低那是因为它完全无视了碳排放的真实代价——排了86.4吨碳。场景B引入60元/吨的碳价后排放降到了78.9吨但碳成本高企。场景C在阶梯式碳价驱动下排放进一步降到72.5吨虽然总成本数字最高但这个数字已经包含了碳交易成本放到真实政策环境下场景C才是企业实际需要支付的“全成本”。再看设备出力结构。场景C相比场景A燃气轮机的出力明显提高尤其是在白天电价高峰时段燃气轮机几乎满发既满足电负荷又通过余热满足热负荷从而大幅压减电锅炉的用电把原本要从电网购买的高价电伴随高间接排放替换成气网的低价气。光伏出力在三个场景里都全额消纳因为边际成本接近零且无碳排放。蓄电池的充放策略差异也很有意思。场景A的蓄电池倾向于峰谷套利低谷充电高峰放电好处是省电费场景C因为在阶梯碳价下电网间接排放成本高企蓄电池的策略进一步强化了这种“峰谷搬移”高峰时段放电功率甚至比场景A高出一截——因为高峰时段用一度网电不仅电费贵还附带高碳成本储能放一度电替代网电省下的钱比场景A更多。蓄热罐在场景C中的作用也变大了。燃气轮机提高出力后余热产量增加蓄热罐把白天多余的热量存起来到夜间热负荷高峰再释放配合燃气轮机降低夜间的出力从而把整体碳排放控制在配额区间内避免进入更高的碳价惩罚区。5.3 为什么场景C能逼出更深度的减排阶梯门槛的“引力”这个结果背后有一个值得反复琢磨的细节场景C的碳排放量72.5吨恰好落在阶梯区间1的上半段距离区间2的门槛还有一段富余。为什么优化器会在这里“收手”原因在于阶梯碳价的不连续性。每多排1吨碳如果还在区间1边际碳成本是60元/吨一旦跨入区间2碳排放成本不只是多出的那吨按66元算而是区间2覆盖的所有排放量都按66元计算。这会造成一种“门槛效应”优化器宁愿通过调整运行策略、牺牲一点点经济性也不让总排放量越过门槛因为跨过门槛后整个区间的碳价都会被重置到更高的价格水平。换句话说阶梯式碳交易不只是“多排多付”它还给优化器一个强烈的信号把排放控制在门槛以内本身就是一项有价值的“经济决策”。这种“预防性减排”效果在传统固定碳价机制里是做不到的。6. 实际项目中最容易踩的坑数据、模型和工程边界6.1 碳配额基准线怎么取别拿“拍脑袋”的配额当输入做这类研究最容易翻车的地方是碳排放配额的设定。很多人在算例里随便给一个配额值然后得出一个“看似合理”的优化结果——但这个结果对政策参数极其敏感。配额给高了阶梯碳价几乎不会触发优化结果退化到场景B甚至场景A配额给低了所有时段都顶着最高碳价跑阶梯机制的优势也体现不出来。我建议的做法是配额量按系统所在地区的“基准线法”或“历史强度法”测算。按基准线法就是参考当地同行业平均能效水平对应的单位产品/产值的排放强度乘以系统实际供应的电量和热量。按历史强度法则是参考系统过去三年的平均排放强度考虑适当的下降系数比如每年下降2%3%来确定当年配额。确保配额量处于“不买碳不行、全买碳太贵”的中间区间这样阶梯碳价对优化决策的引导作用才能充分体现。6.2 碳排因子与气价电价的联动模型结果的“隐藏变量”这是做碳账最容易被忽略的细节。电网间接排放因子不是一成不变的——随着电网可再生能源占比提升这个因子每年都在下降。假设你用的是0.5810这个老数据但实际电网排放因子已经降到0.45那么模型会严重高估购电的碳成本给出“多烧气、少购电”的偏向性策略而现实中这个策略可能并不划算。反过来天然气价格受国际市场价格影响波动较大如果模型中气价设置偏高优化器会倾向于减少燃气轮机出力、增加购电但这样又会抬高碳排放可能触发更高的阶梯碳价。气价和碳价是一对跷跷板两者的相对关系直接决定最优运行策略的取向。做敏感性分析时一定要把气价和碳价同时变化观察最优解的转移路径而不是固定一个变量只动另一个。6.3 求解时长与模型规模的平衡别让“精度焦虑”毁掉可用性有些项目把模型搞得特别精细设备效率曲线按10段分段线性化储能SOC离散到分钟级负荷预测引入随机场景结果就是模型规模爆炸求解时间从几分钟变成几小时。要知道日前优化调度是有时效性的——如果下午4点要出第二天的调度计划求解器跑3小时计划也是“昨夜黄花”。我的经验法则是一个类型完备的园区级IES模型优化变量数量控制在5000以下其中二进制变量控制在150以下求解时间应该控制在10分钟以内。如果模型超过这个规模优先做场景削减而不是硬调参数。如果你需要更快的速度还可以引入滚动优化——每4小时利用最新预测数据重新优化一次而不是一次性优化48小时。6.4 设备启停次数约束优化结果“工程不可行”的头号元凶最后提一个特别常见的坑。不设置启停次数约束时优化器给出来的调度方案可能会让燃气轮机每天启停56次每次间隔才两三小时。数据显示频繁启停对燃机热通道部件的寿命损耗远大于连续运行。如果只在目标函数里放“启停成本”那本质上只是把启停当成一个固定罚金——优化器完全可以为了省几百块电费频繁启停把设备寿命损耗扔到九霄云外。所以在工程化落地的时候一定要加“单日最大启停次数”约束比如燃气轮机每天启停不超过2次电锅炉不超过3次。这个约束本质上是给优化解加一个工程可行性上限牺牲的经济性很小但对设备运维的意义是决定性的。6.5 多能流耦合处的最容易出错能量单位换算最后说一个看似低端但实际频繁出问题的点能量单位换算。天然气进系统是立方米出系统变成kWh蒸汽是吨制冷量是冷吨购电是MWh储能是kWh。写代码的时候一个不留神单位不对优化结果就会莫名其妙地偏离几百倍。我的习惯是全部统一到kWh作为能量基准单位所有设备的输入输出功率统一用kW时间步长统一用小时h购气量先按热值折算成kWh再进入能量平衡方程。这个习惯帮我省了无数个Debug的夜晚。最后再分享三句实用心得第一句阶梯式碳交易机制下的综合能源系统优化本质上是把一个环境政策信号转化为一个数学上的分段线性成本结构核心技术点在于阶梯区间的混合整数建模成败关键则在于对配额、排放因子、能源价格之间关系的敏感度分析。做这个方向建议先把上一节的6.2小节搞清楚再谈优化算法。第二句模型不是越精确越好满足工程决策需求就好。联合求解“低碳”和“经济”两个目标时不需要把设备机理建模到极致关键是把碳成本对运行策略的引导作用刻画清楚把“碳价格跳变引起的策略断点”找出来这就已经是很有价值的产出了。第三句做这类项目一定要养成“结果可解释”的习惯。每次跑完优化别急着画漂亮的图表先问自己三个问题燃气轮机为什么在这个时段开机蓄电池为什么在午后停止放电碳排放为什么恰好落在某个阶梯区间能把这几个为什么解释清楚说明模型优化逻辑符合物理常识后续向业主汇报、向审核专家介绍时也更有底气。