☰
阶梯式碳交易与电制氢在综合能源系统优化调度中的应用
2026/10/14 20:02:18 网站建设 项目流程

“以热定电”这四个字,我是在前年做某园区综合能源年度规划时,才对它有了带痛感的理解。热负荷上去了,热电联产机组就得跟着扛电出力,扛到这个冬天最冷的那天,机组几乎是被热负荷“绑架”着满发。当时我们想用碳交易成本去约束排放,可加入的是一个固定碳价,结果模型只肯小幅下调出力、把缺口扔给燃气锅炉,整个系统的实际碳排放反而更难看了。后来把阶梯式碳交易机制和电制氢同时放进优化模型,结果才真正对路。这篇文章把整套方案从机制原理到数学模型、从求解技巧到算例结果完整过一遍,最后再聊几个我实际踩过的坑,做综合能源系统调度、碳约束优化、氢储能并网相关课题或项目的朋友,可以直接拿来当参照。

1. 单一碳价压不住热电联产:阶梯碳价为什么才是正确思路

1.1 热电联产独特的“热-电绑定”让碳约束变得棘手

普通发电机组面对碳价时可以简单“少发电”,反正电力的缺口可以由电网、储能或者其他电源补上。但热电联产机组不行。热负荷由它承担,要降低电出力又不能停掉供热,于是它的工作点被限制在一个和热出力强相关的可行域内。冬季热负荷越高,机组的电出力下限就被抬得越高,排放几乎是个随热负荷被动走高的量。

在这种结构里,单一碳价和碳排放是线性关系:排1吨碳贵一个固定价格。优化模型会非常诚实地把这个成本“摊平”——它宁可让机组维持高排放、然后从别处微调几块钱的成本,也不愿意做出剧烈改变,因为任何剧烈改变都可能威胁到供热可靠性。线性成本本质上不会给模型一个“再想一想有没有别的技术路线”的强信号。

这里我要多说一句。固定碳价也不是完全无效,它只是对热电联产这类强耦合设备的边际约束很弱。真正有效的是让碳价本身“越来越贵”:你排得越多,每多排一吨的边际惩罚就越重。

1.2 阶梯式碳交易的运行逻辑:像阶梯水价一样分段涨价

阶梯式碳交易的核心思路是给碳排放量设定多个区间,每个区间对应一个递增的边际碳价。用一个园区典型日的参数举例:

排放区间(吨,相对配额)碳价(元/吨)
0~2000(配额内)0
2000~400080
4000~6000120
6000以上180

配额内的排放不用花钱,这在机制上相当于给企业一个免费排放额度;一旦超出配额,超出部分的碳价逐段抬高。这里要注意超额累进和全额累进的区别:超额累进只对“各自区间内的超出量”按该档价格计价,这是行业里更常见的做法,也是模型线性化时最方便的一种结构。

为什么采用阶梯式而不是直接给一个高碳价?因为两者虽然都能“增加减排压力”,但信号形状完全不同。固定高碳价对每一吨排放同等施加压力,相当于对所有人拔高门槛;阶梯碳价则只对那些排得多、且优化后仍排得多的方案下重手,反而给了系统内灵活性资源一个清晰的回报预期:如果我通过氢储能或储热把峰值排放压下来,省下的碳费按最高档价格算,那么收益非常大。

1.3 非线性碳价会改变模型选型的结果

把这种分段递增价格放进优化问题后,目标函数里碳成本不再是关于排放量的直线,而是折线。这类非线性的关键意义在于:系统可能因为“越过某个档位边界”而整体切换运行策略。

举个例子,在我跑过的算例中,固定碳价80元/吨时,模型给出的最优解是让一台热电联产机组满发,因为它的发电成本低,即便加上碳成本还是比燃气锅炉划算;但换成阶梯碳价后,系统总排放在档位边界附近时,继续满发会让一部分排放量落到120元/吨甚至更高价格区间,此时模型会主动降低该机组出力,同时启动电解槽把多余的电转成氢,用它来支撑晚高峰的供电和供热。一个不起眼的档位边界,直接改变了机组台数和氢系统的运行计划。

这也是我把标题里的“阶梯式”看得比“碳交易”更重要的原因。阶梯式碳交易本质上制造了一个“区间压力场”,它比单点价格更能逼出综合能源系统里那些跨时段、跨能源品种的协同能力。

2. 电制氢在综合能源系统里的“三重身份”

2.1 第一重身份:柔性负荷——专治弃风弃光

综合能源系统通常配有一定比例的风电和光伏,而且大多在配电网或园区微网场景里。这类场景最大的痛点不是发电能力不足,而是净负荷波动大:中午光伏大发时,热电机组因为热负荷不能停工,电又没地方去,只能弃掉。

电解槽在这里的第一身份是大功率柔性负荷。它功率调节范围宽(20%~100%),分钟级响应快,可以在风光出力高峰时加大制氢功率,把多余的电力变成氢。这一行为放在调度模型中,就是给电平衡方程增加一个“可调负电荷载”,并且这个负荷可以被安排在最需要消纳可再生能源的时段。

从成本结构看,电解槽的耗电成本主要是电价和碳价。风光大发时段电价通常低,同时这部分电力对应的碳排放因子也低,所以在碳约束下用弃电制氢是一笔非常划算的“碳套利”:便宜的电、干净的氢。

2.2 第二重身份:能量搬移——储氢罐的跨时段能力

氢一旦被制出来,就可以存进储氢罐。这个罐子让电制氢系统拥有了“能量时间的搬移能力”:白天多发的光伏、半夜多发的风电,都可以先变成氢,等到晚高峰或热负荷尖峰时再用。

这和抽水蓄能、电化学储能的思路相似,但有两个显著差异。第一,氢的能量密度高,大规模、长时间储能的成本更有优势,适合跨日甚至跨周搬移;第二,氢的终端应用更灵活,既可以重新发电,也可以作为工业原料、交通燃料或者直接掺烧供热,这意味着它不必受制于“再变回电能”的效率损失。

在热电优化模型中,储氢罐的建模非常友好:它只需要一个储氢量的状态变量,每小时满足连续性约束,即当前时刻储氢量等于上一时刻储氢量加上制氢量再减去用氢量,并且储氢量不能超过上下限即可。相比电池模型,它少了复杂的充放电效率和衰减问题,反而更容易处理。

2.3 第三重身份:热电联产源——燃料电池的余热不容小觑

很多人对电制氢的理解止步于“把电变成氢”,然后忘记氢还能变回电和热。实际上,在热电联产系统里,燃料电池是电制氢系统中极其关键的一环:它消耗储氢罐里的氢来发电,同时产生大量可回收余热,这部分余热可以直接进入热力管网。

算一笔简单的账:如果燃料电池的电效率为50%,那么它输入的氢能有大约40%~50%会转化为热。在电效率之外回收其中70%的余热,燃料电池的综合能量利用率很容易做到80%以上。换句话说,燃料电池本质上是一台小型热电联产机组,只是它的“燃料”是绿氢。

进入优化模型后,燃料电池会同时出现在三个平衡方程里:电平衡里它是发电设备,热平衡里它是热源设备,氢平衡里它是氢负荷。一个设备同时影响三条能量流,这是综合能源系统“多能互补”最典型的体现。我在帮学生理清模型结构时总说一句话:你把燃料电池当成“会发热的发电机”,把电解槽当成“会发热的制氢机”,很多平衡方程就豁然开朗了。没错,电解槽运行时的热损失也可以回收。这个问题我在第6章会专门讲,因为它是很多人建模时最容易漏掉的项。

3. 模型怎么搭:目标函数、约束条件和参数基准

3.1 目标函数:四块成本怎么累加

整个优化模型的目标是系统在一个调度周期(典型日24小时)内的总运行成本最小化。基于我做的事情,目标函数一般包含四块:

  • 购电成本:从上级电网购电的费用,按分时电价计算
  • 碳交易成本:基于阶梯式碳价函数计算的碳费
  • 氢系统运行维护成本:电解槽、储氢罐、燃料电池的运维费用,有些模型里还会折算设备折旧成本
  • 弃风弃光惩罚成本:让模型优先消纳可再生能源

写成文字就是:

min C = C_buy + C_carbon + C_hydrogen + C_penalty

不是所有模型都要把四块全部纳入。如果你只关心调度而不涉及容量规划,设备造价可以不加;如果你关心氢系统的经济性,运维成本必须分设备单独列。这里关键是要把“碳成本”这一项的表达式写对,它才是整篇的题眼。

3.2 热电联产机组的可行运行域怎么线性化

热电联产机组的核心约束是电出力和热出力之间的可行域。抽凝式机组的可行域通常是一个凸多边形,由若干个线性不等式围成。模型里不能只写“电出力大于等于最小出力”,还必须体现“热出力高时,电出力下限和上限都会被抬高”这一物理规律。

最实用的做法是把可行域写成一组线性不等式:

  • P_min + α1 * Q ≤ P ≤ P_max - α2 * Q 之类,具体系数由机组的特性曲线拟合得到
  • 如果机组是多台,还要加入启停状态变量,保证停机时出力为0,启动后出力处于可行域内

这个约束一旦写错,模型就会给出“机组在低热负荷时仍带很高电出力”这种不合理的解。我自己的习惯是先把单台机组的可行域画出来,拿几个极点坐标验证不等式是否吻合,再放进模型跑。

3.3 电解槽-储氢罐-燃料电池的动态约束怎么写

三件套的动态约束是整个氢能链路的骨架。电解槽部分:

0 ≤ P_P2H(t) ≤ P_P2H_max M_H2(t) = η_P2H * P_P2H(t)

也就是制氢功率受容量限制,产氢速率和耗电功率成正比,效率取电解槽的氢基效率(LHV基准,一般在55%~75%)。

储氢罐部分:

S_H2(t+1) = S_H2(t) + M_H2_in(t) - M_H2_out(t) S_H2_min ≤ S_H2(t) ≤ S_H2_max

燃料电池部分:

P_FC(t) = η_FC * M_H2_consume(t) Q_FC(t) = η_FC_heat * M_H2_consume(t)

还要保证同一时刻储氢罐不能同时充氢和放氢,这通常用一个0-1变量加大M约束实现:充氢时放氢为0,放氢时充氢为0。如果你把储氢罐的损耗忽略,模型会系统性低估氢气成本,所以我建议在连续性方程里加一个小损耗系数,比如每时段0.5%~1%。

3.4 电/热功率平衡和碳核算边界

电功率平衡是节点的,所有电源发电量加购电量,等于电负荷加电解槽耗电,再加网损:

P_CHP(t) + P_FC(t) + P_wind(t) + P_pv(t) + P_buy(t) = P_load(t) + P_P2H(t)

热功率平衡相对容易漏项。热负荷必须由热电联产热出力、燃料电池回收热、电解槽回收热、燃气锅炉补燃共同满足:

Q_CHP(t) + Q_FC(t) + Q_P2H_recover(t) + Q_boiler(t) = Q_load(t)

特别强调电解槽回收热这一项。电解槽的效率不是100%,电功率中大约20%~30%会变成热。这部分热如果直接散失,热平衡里当然可以忽略;但只要系统有集中供热管网,这部分热就是“免费热源”,回收它能让燃气锅炉少烧不少气。建模时给它一个回收系数,再乘上电解槽耗电功率即可,成本极低、收益明显。

碳核算边界上,我采用“直接排放+间接排放”口径:热电联产机组和燃气锅炉的燃料燃烧产生直接排放,外购电按电网平均碳排放因子折算间接排放。系统总排放量大于免费配额后,进入阶梯碳价计费函数。

4. 阶梯碳价函数的分段线性化:求解前的关键一步

4.1 为什么不能直接写分段函数

如果目标函数里直接写“80元/吨适用2000吨,120元/吨适用4000吨”,这在数学上是一个分段线性函数,形式上自然,但对求解器不友好。它会在档位边界处引入非凸性,很多MILP求解器可能找不到全局最优解,或者计算时间猛增。

正确做法是把阶梯碳费改写成一个增量成本模型。假定排放量E、各档边界为E0、E1、E2,各档边际价格为p0、p1、p2,则碳交易成本可以写成:

C_carbon = p0 * ΔE1 + p1 * ΔE2 + p2 * ΔE3

其中ΔE1是第一档超出量,ΔE2是第二档超出量,等等,每一档的取值受边界约束,且必须先填满低档才能进入高档。这个结构只要引入少量0-1变量,就能保证分段线性函数的凸性,求解器可以高效处理。

4.2 SOC、启停、充放互斥这些逻辑约束的统一处理

模型里除了阶梯碳价,还有大量逻辑约束。最常见的三个:储氢罐不能同时充放氢、机组启停与出力上下限的关系、燃料电池最小运行时间。

这些约束统一靠“0-1变量+大M系数”处理。以储氢罐为例:

M_H2_in(t) ≤ M_in_max * u_in(t) M_H2_out(t) ≤ M_out_max * (1 - u_in(t))

u_in(t)为1表示充氢,为0表示放氢。大M系数的取值很讲究,我建议取“该设备允许的最大功率或流量乘以1.2”,不要贪大。大M过大不会改变最优解,但会让线性松弛变差,明显拖慢求解速度。

4.3 求解器选择和规模估算

我常用的模型规模大概是:24个时段,2台热电联产机组、1套电解槽、1个储氢罐、1台燃料电池,加上阶梯碳价3个区间,大约需要50~80个0-1变量,连续变量在2000~3000之间。这个规模对主流的MILP求解器来说都算轻量级,几秒到几十秒能给出稳定解。

如果你用开源求解器,CBC基本能应付;SCIP也可以用来验证结果。跑大容量规划问题时,往往要扩到8760小时,这时就别直接上整年小时级了,建议用典型日聚类或者把时间粒度做成15分钟、再配合滚动优化,不然求解时间会让人怀疑人生。我一般先跑一个24小时典型日确认逻辑,再扩展到更长时间尺度。

5. 算例设计、典型日结果和两组灵敏度分析

5.1 典型日的构建与基础参数

算例我设计的是一个含有2台抽凝式热电联产机组、1套风电、1套光伏、1套电制氢+储氢+燃料电池系统的园区。典型日曲线模拟冬季某日的负荷变化:夜间热负荷高、电负荷低,光伏为0,风电后半夜大、中午小;白天电负荷有两个峰。基础参数如下:

项目数值
热电联产总容量2×100 MW
风电场150 MW
光伏80 MW
电解槽容量100 MW
储氢罐容量30 MWh能量当量
燃料电池容量50 MW
免费碳配额3500 吨/日
阶梯碳价区间0~2000/2000~4000/4000+,对应0/80/120元/吨
电网购电分时电价峰时1.2元/kWh、谷时0.4元/kWh

上调碳区间的具体数值之前,我先用零碳价跑了一遍基线,确保系统能够满足所有负荷,再逐步加约束。

5.2 阶梯碳交易 vs 单一碳价:结果对比

同一组基础参数下,我对比了三种场景:场景A是无碳约束,场景B是固定碳价80元/吨,场景C是阶梯碳价(档位设置如上)。结果如下:

场景总碳排放(吨/日)弃风弃光率总运行成本(万元/日)
无碳约束48609.8%112.6
固定碳价80元/吨45207.4%122.4
阶梯碳价41853.2%128.1

固定碳价只让排放降了约7%,弃风率还有7%以上;阶梯碳价把排放压低了约14%,弃风率几乎降到了原来的三分之一。成本增加是客观的,从112.6万涨到128.1万,但这中间的差值主要被“少买碳配额”和“多消纳绿电”抵消了一部分。

更有意思的是氢系统的利用率:阶梯碳价下,燃料电池在晚高峰基本满发,储氢罐在凌晨和中午光伏大发时充满,系统自发地把“低成本绿电→氢→高峰热电”这条链路走起来了。固定碳价下,燃料电池出力则小得多,系统觉得直接买电加燃气锅炉更省。

5.3 电解槽容量的边际效益曲线

我做了第二组灵敏度:保持其他参数不变,把电解槽容量从0逐步加到200 MW,看系统总成本和碳排放的变化。

结果是一条先陡后平的曲线。从0到80 MW,碳排放快速下降,并同时拉低弃风率,总成本也明显下降;超过80 MW之后,再加电解槽容量对碳排放和弃风率的影响越来越小,总成本在100 MW附近触底后开始反弹。

原因不难理解:电解槽容量越大,可消纳的绿电越多,但每个时段的风光出力是有限的,储氢罐的容量也是有限的。当“源”和“储”都到瓶颈后,再大的电解槽就只能闲置,设备折旧和维护成本却一分不少。这个“边际效益拐点”就是容量规划时最应该关注的数字,而不是一味追求“氢越装越多越好”。

5.4 阶梯区间划分对减排深度的敏感性

最后一组灵敏度,我把碳价档位边界改窄了50%:原来2000吨一档,现在变成1000吨一档,更高档位对应的碳价维持不变。

结果非常直接:系统会更早进入高碳价区,模型为了防止排到高档位,会更激进地使用氢系统,碳排放进一步下降,但总成本上升的幅度也变大。也就是说,阶梯的“陡峭程度”决定了系统减排的力度和成本。碳价曲线整体抬高的效果,不如让曲线变陡的效果明显。

这组灵敏度对政策制定和园区碳配额设计都有参考意义:想让系统多消纳新能源,与其把碳价整体抬高,不如压缩配额、加密区间,让碳价的变化方向更陡。应该说明的是,这只是我的算例结论,实际场景中还要结合区域电网碳排放因子和氢源成本重新校核。

6. 落地过程中最容易踩的五个坑

6.1 电解槽余热不计入热平衡,结果直接偏掉

这是我身边不少人踩过的坑。电解槽的耗电功率有一部分以热量形式损失,常见效率70%上下的电解槽,意味着30%的输入能量成了热。在纯电力系统里这部分是废热,但在热电联产系统里,它就是可供应的热源。

我第一次跑模型时没有加入电解槽余热回收项,结果热负荷全压在燃气锅炉上,燃气锅炉出力比预期大了很多,总成本也偏高了将近8%。加了一项简单的回收约束后,燃料消耗回归正常。所以如果你在园区里装电制氢,请务必确认热网能否接上电解槽冷却系统,然后在热平衡方程里给它留一个位置。

6.2 碳核算边界一直没分清

碳排放核算的边界决定了计算结果的可行性。只算本地机组燃烧的排放,完全不考虑外购电的间接排放,结论必然偏乐观。实际操作中应该把两者拆开:直接排放由燃料燃烧产生,间接排放由外购电量乘以电网平均碳排放因子得到。然后注意,间接排放的碳排放因子在不同省份、不同年份都不一样,要用目标年份的区域均值。

我之前给某学生改模型时就发现他把购电一律当成零碳电力,结果模型让系统大量购电、电解槽全力生产,排放数字却奇低。把电网碳排放因子补进去之后,最优解立刻发生了明显改变。

6.3 量纲换算:MW、MWh、吨碳、公斤氢的换算乱麻

这个坑看起来低级,但非常容易出。功率和能量要区分清楚:调度模型里每个时段是一个小时,所以功率数值直接等于该时段的能量数值,但你要是把时间粒度改成15分钟,就得乘0.25。

氢的单位更麻烦。常见的有kW对应产氢速率、kg/h表示产量、MWh表示氢能量。它们之间要经过氢的低热值换算,约33.33 kWh/kg(低热值)。把产氢速率和储氢罐容量写成同一单位,是起步前就该做好的事。我的习惯是模型内部全部统一为“MW/MWh(能量单位)”,输入输出层再去处理氢的千克数,避免公式里反复换算。

6.4 模型验证:退化测试是我必做的一步

每写完一版模型,我都会做几个“退化测试”:把全部碳价设为0,模型应退化为纯经济运行,结果应该和没有碳约束时一致;把电解槽容量设为0、储氢罐容量设为0,模型应退化为传统热电联产加碳交易调度。任何一个测试跑出来对不上,说明要么约束漏写了,要么某个等式有问题,这时别急着加新功能,先把逻辑拧清楚。

这类测试的价值在于:它可以快速定位模型的根本性错误。我在调试过程中多次发现“最优解里储氢罐同时充氢和放氢”这类物理上不可能的方案,就是因为互斥约束没写全,退化测试一跑就露馅。

6.5 求解时间爆炸时别急着换机器

当模型规模变大,求解时间拉长到几分钟以上时,我不建议立刻上高性能服务器,而是按三个顺序排查。第一看整数变量数量,把冗余的0-1变量压缩掉,比如可以合并同一时段多个相同设备的启停变量;第二看大M取值,M过大会造成数值病态,适当收紧可以明显提速;第三看目标函数的系数缩放,把成本和碳费放在同一量纲下,避免百万和千分之一的系数同时存在于一个方程里。

实在还慢,就把MIPGap从默认的1e-4放宽到1e-3。对于典型日调度这种研究级场景,1e-3的精度完全够用,求解时间能降一个数量级。

最后说一点个人体会

整套模型跑下来,我最大的感受是:碳价曲线的“形状”,比碳价本身的“高度”更能决定综合能源系统的转型路径。阶梯式碳交易制造的不是一个静态成本,而是一连串“越界警告”,它让系统在热、电、氢之间反复权衡,而这种权衡恰恰是综合能源系统设计最核心的价值所在。电制氢在这个机制里承担的角色非常灵活——当弃电多时它是负荷,当风光不足时它是储能,当高峰热电紧张时它又是一台额外的热电联产机组。如果后续你想把这个框架延伸到更长时间尺度,建议重点细化储氢罐的寿命模型,以及加入氢气对外销售的阶梯价格。最后分享一个总结不出来的小技巧:做任何灵敏度分析前,先跑一个“碳价全为0、氢系统关闭”的极端基线,然后逐层打开碳机制和氢系统,观察每一步的可行域变化,这个方法比直接看最终结果更能帮你理解模型的内在机理。

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

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

立即咨询