做微电网调度优化的朋友,这几年应该都有个共同的感受:目标函数里的碳排放成本项,权重一年比一年重。以前算经济调度就是"燃料成本+购电成本+网损",现在打开任何一篇相关文献,基本都在讲低碳、碳交易、碳捕集这些词。我去年帮某园区做了一套含风电、光伏、燃气轮机、储能的多能微网调度方案,初期只考虑了碳交易成本,结果评估报告被打回来,批注只有一句话:"P2G和碳捕集为什么不同时考虑?这两者耦合起来才是完整的碳循环。"这句话直接改了我后面小半年的研究方向。这篇博客就围绕这个题目展开,把我在建模、求解、调参过程中踩过的坑和想明白的事,完整梳理一遍。
先说这个题目的定位:它是一个典型的微电网低碳经济调度问题,核心决策变量是"怎么安排内部各设备的出力、储能充放电、与外部电网/气网的交互功率",使得运行成本(含碳成本)最低,同时满足负荷需求和碳减排目标。与常规调度相比,最大的区别是引入了两个"碳相关"设备:P2G(电转气)和带碳捕集装置的机组。这两个设备单独建模不难,难的是把它们耦合进同一个优化框架里,处理好能量流(电、热、气)和碳流(排放、捕集、利用)之间的关系。
这篇文章适合这几类人看:刚入微电网调度坑的同学,准备用MATLAB/YALMIP或Python搭算例;做园区综合能源规划、想评估P2G和碳捕集经济性的工程师;还有写论文需要快速理清模型结构和对比逻辑的朋友。基础部分我会讲原理,重点部分我会直接给出建模步骤和参数取值经验,保证你能照着复现。
1. 这个题目到底在解决什么问题
1.1 传统微网调度为什么"不够低碳"
先从一个最简单的微网场景说起。假设系统里有风电机组、光伏、燃气轮机组、电储能,通过联络线跟大电网做功率交换。传统经济调度的目标函数写出来大概是这样:
min Σ (购电成本 + 燃气轮机的燃料成本 + 储能运行维护成本)
约束就是电功率平衡、机组出力上下限、爬坡约束、联络线传输极限这些。这个模型用MILP一求,几十秒就出结果,但如果把"碳排放"这个维度放进去审视,它有一个结构性的缺陷:燃气轮机烧的是天然气,排出的CO2是直接排放;从大电网买的电,如果上游火电占比高,那这部分购电对应的隐性碳排放也没有被体现在成本里。换句话说,传统模型只对"能量"负责,不对"碳"负责,碳排放是纯滞后核算项,调度决策根本不会主动去管它。
引入碳交易机制之后,情况就变了。碳排放变成有价格的资源。经典的处理方式是在目标函数里加一项碳交易成本:实际碳排放量与免费配额的差值乘上碳价。这样一来,燃气轮机的运行成本里就隐含了一个"碳压力",调度器会本能地压低火电出力、多用风电和光伏。这个方向是对的,但还不够——因为它只是"少排",并没有"处理排出来的碳"。如果有强制性的深度减排指标,光靠少用火电机组是达不到的,因为你还有负荷要供,有调峰需求,火电不可能完全退出。这就是碳捕集机组出现的价值:让火电继续发,但把排烟里的CO2抓回来一部分。
1.2 为什么把P2G和碳捕集放在一起考虑
单独把碳捕集机组加进调度模型的思路已经很多了,模型框架也成熟:机组出力分两路,一路供电,一路供给碳捕集系统的再沸器热耗和压缩电耗;捕集到的CO2要么封存、要么外售。但这里有个问题——捕集下来的CO2怎么办?如果只封存,那一吨CO2的捕集成本就纯是沉没成本;如果能把它利用起来,变成可销售的副产品,经济性就有救了。P2G就是对CO2最好的消纳出口。
P2G(Power to Gas)的技术链路是:富余电力(尤其是弃风弃光电)驱动电解水制氢,氢气有两种用途——直接作为氢能产品,或者与CO2发生甲烷化反应生成合成天然气。注意最后一步恰好需要CO2作为原料。你把这两个技术放在一起看,会发现它们形成了互补闭环:
火电碳排放 → 碳捕集装置捕集CO2 → 一部分进入P2G甲烷化反应器 → 生成合成天然气 → 再回到燃气轮机燃烧 → 再产生CO2 → 再捕集。
这个循环里,碳不是被"消灭"了,而是被"循环"了。同时P2G消耗了大量原本要弃掉的风光电力,相当于给系统加了一个大容量的柔性负荷。所以在同一个调度模型里,P2G和碳捕集可不是两个独立的设备相加,它们之间隔着一条"碳流"通道:碳捕集的产出是P2G的原料输入。这就是这个题目的核心创新点所在,也是建模中首先需要打通的关系。
2. P2G与碳捕集机组的工作原理与耦合逻辑
2.1 P2G(电转气)技术链路与运行约束
P2G系统一般包括三大部分:电解水制氢单元、储氢/储气单元、甲烷化反应单元。在调度模型里,没必要把每一步化学机理建出来,通常做的是黑箱建模,但基础参数你要心里有数。
电解水制氢的效率一般在60%到80%之间(按低位热值算),取0.65到0.7作为典型值比较稳妥。电解槽的功率范围约束很关键:它有个最小启动功率,比如额定功率的20%到40%,低于这个值直接停机,这就引入了二进制变量。如果不加这个约束,优化器会让电解槽在极低功率下"磨蹭",实际设备根本做不到。
甲烷化反应这一步,消耗的氢气与CO2的化学计量比约为4:1(主反应CO2 + 4H2 → CH4 + 2H2O),考虑到反应不完全和副反应,实际工程上氢气与CO2的摩尔配比一般取3.5到4.2。很多初建模型的人会漏掉这个配比约束,结果解出来P2G产气量很高,但CO2消耗量对不上,算出来没问题,实际上是错的。建议在模型中加一个线性约束:输入P2G的CO2流量不超过甲烷化单元对CO2的接收上限,且等于产气量乘以一个转化系数,这个系数直接从化学计量比换算。
P2G系统的响应速度比火电机组快得多,在1小时级调度步长下基本可以忽略爬坡约束,但效率和出力的非线性关系值得注意。如果要求高精度,可以采用分段线性化的方式描述电解槽效率曲线;如果精度要求一般(典型论文场景),直接当成恒定效率的线性模型也完全够用。
2.2 碳捕集机组的运行特性
碳捕集方式很多:燃烧前捕集、富氧燃烧、燃烧后捕集。做调度优化,绝大多数文献用的是燃烧后化学吸收法,这条技术链成熟、可调性也好。
化学吸收法的核心是吸收塔和再生塔。烟气进入吸收塔,与贫胺液接触,CO2被吸收到胺液中变成富胺液;富胺液进再生塔加热(主要是再沸器蒸汽提供的热耗),重新释放出高浓度CO2,胺液恢复成贫胺液循环使用。所以碳捕集装置的能耗分成两部分:再沸器的热耗(用于解吸)和辅助设备的电耗(泵、风机、压缩机)。
建模时的核心变量就是捕集率(capture rate)和烟气分流比。烟气分流的意思是:机组排烟可以分成两股,一部分进吸收塔,一部分直接排空。分流比定下来,捕集量也就定了。在调度模型中,为了让碳捕集系统具备灵活性(比如电价高时少捕集,电价低时多捕集),通常采用"可调捕集率"建模,并加一个能量时移的选项:储液罐存富液,把捕集能耗和CO2产出时间错开。这个富液存储建模会给模型引入储液罐的容量状态约束,稍微增加复杂度,但非常实用。
我建议的碳捕集机组出力模型是这样的:
机组总产出 = 净上网功率 + 碳捕集系统消耗的电功率(包括压缩电耗等)。这看起来简单,但要注意:如果机组是抽凝式热电联产(CHP),还要分配热负荷与电负荷之间的关系,再沸器的热耗需要的蒸汽从哪里来,这直接影响机组的运行点。很多论文里把碳捕集热耗简单外购,但在微网场景中不合适,我们应该把热耗纳入热功率平衡统一计算。
2.3 "碳-气-电"三网耦合的核心逻辑
把这个模型拼起来看,整个系统的能量流和碳流是交织的。我用一个很简单的方式梳理:
- 电力流:风电、光伏、火电(含碳捕集)出力,加上外购电,共同承担负荷和P2G电解槽的用电,电储能负责缓冲;
- 热力流:CHP或燃气锅炉产热,供给热负荷和碳捕集再沸器的热耗;
- 天然气流:从气网购气、P2G产的合成天然气,共同供给燃气机组和燃气锅炉;
- 碳流:燃气机组和CHP燃烧排碳,一部分直接被大气吸收(未捕集),一部分被碳捕集装置捕获;捕获的CO2一部分外售或封存,一部分送到P2G甲烷化单元做原料,变成天然气回到系统。
这里最漂亮的一步是:碳捕集的CO2产量和P2G的CO2需求量之间建立等式或不等式关系。你可以让P2G的CO2消耗量严格等于碳捕集单元供给的量(闭环),也可以允许P2G从外部气源补充CO2(更有弹性)。从论文呈现的角度,前一种更能体现"耦合创新性";从工程落地的角度,后一种更接近真实。
所以当你说"考虑P2G与碳捕集机组的多能微网低碳经济调度",本质上是在解一个含"电-热-气-碳"四类平衡约束的混合整数优化问题。这个认识一旦建立,看任何同类文献都会觉得"骨架相似",差别只在细节:碳交易机制怎么建模、不确定参数怎么处理、求解算法是精确解还是启发式。
3. 低碳经济调度模型怎么建
3.1 目标函数:成本构成与碳交易机制建模
目标函数建议按时间步(比如24小时、每小时一段)累加以下成本项:
购电成本:从电网买电的费用,电价取分时电价即可;如果允许卖电,用独立的售电价来算,一般不直接取负数。
燃料成本:燃气轮机、燃气锅炉消耗天然气的成本。天然气来源有两个:购气网、P2G自产气。P2G产气的成本不建议单独重复计算,因为它的原料(电、CO2)已经在前面的购电成本和碳捕集成本里计过了。处理方式有二:要么不计P2G产气成本,要么按合成天然气的热值折算成一个固定成本进入目标函数。大多数文献用前者,干净利落。
碳捕集成本:包括再沸器热耗对应的燃料成本(如果是CHP自供热)、压缩电耗对应的购电成本,再加上胺液损耗等固定运行成本。
P2G运行成本:电解槽启停和维护成本,通常简化为与产氢量成正比的单位运行成本。
碳交易成本:这是核心新项。主流建模采用基准线法——系统给定免费配额,实际净排放超过配额的部分按碳价购入。净排放要算清楚:燃气机组燃烧排放加外购电力的间接排放,再减去碳捕集装置捕集到的CO2量。对,捕集起来的这部分要从排放中扣掉,这是一个容易漏掉的减法。
弃风弃光惩罚成本:为了让P2G和储能发挥消纳作用,目标函数里通常加弃风弃光惩罚项,比如弃风每千瓦时罚0.2到0.5元。惩罚值直接影响P2G的利用率和电解槽容量配置结果,建议做灵敏度分析。
把这些写成一个公式就是:
min Σ[ 购电成本 + 燃料成本 + 碳捕集成本 + P2G运行成本 + 碳交易成本 + 弃风弃光惩罚 ]
3.2 约束条件:从功率平衡到碳流平衡
我按顺序把约束列一遍,建模时对照检查,一个都不能漏:
电功率平衡:风电 + 光伏 + 碳捕集机组净出力 + 储能放电 + 购电 = 电负荷 + P2G电解槽用电 + 储能充电 + 弃风弃光(表达成松弛变量)。注意储能充放电不能同时进行,用二进制变量或线性互补约束处理。
热功率平衡:CHP热出力 + 燃气锅炉热出力 = 热负荷 + 碳捕集再沸器热负荷。热负荷是刚性需求,碳捕集热负荷是决策变量,这里实现了热-碳耦合。
气功率平衡:购气量 + P2G产气量 = 燃气机组耗气 + 燃气锅炉耗气。如果P2G产气不即时消耗,引入储气罐状态约束。
机组运行约束:每台机组的出力上下限、爬坡约束、最小启停时间约束。如果时间粒度是小时级且机组频繁调节,最小启停时间建议加上,否则启停频次会非常夸张。
储能约束:SOC递推方程、充放电功率限值、SOC上下限、始末SOC相等约束。
碳捕集系统约束:捕集量 = 捕集率 × 进入吸收塔的烟气CO2量;捕集能耗 = 热耗系数 × 捕集量 + 电耗系数 × 捕集量;富液/贫液储罐的容量状态递推。捕集率可以取0.7到0.95之间连续可调,也可以设为几个档位(引入整数变量),从计算效率和工程合理性看,分档建模更实际。
P2G系统约束:电解槽功率区间(含最小启停功率)、产氢量计算、储氢/储气容量状态、甲烷化的CO2消耗约束。
碳平衡约束:总排放 = 燃烧排放 + 外购电间接排放 − 碳捕集量。这个可以直接代入目标函数,也可以显式写成等式。
3.3 非线性项的处理与线性化技巧
实际操作中最花时间的往往不是建模思路,而是把非线性项处理成MILP可解的形式。这里有几个我踩过坑的线性化技巧,值得单独列出来:
第一,燃烧排放与捕集量的关系。烟气中的CO2量正比于燃料消耗量,而燃料消耗量又与机组出力相关。如果机组燃料消耗用线性近似(煤耗特性为线性或凸分段线性),那么烟气CO2量就是机组出力的线性函数。捕集量是"烟气CO2量 × 捕集率",这两个变量的乘积是非线性的。解决方案:如果捕集率是连续变量,可以用McCormick包络法线性化;如果捕集率是离散档位,则直接用大M法加多个线性约束,实现"档位选择"。
第二,弃风弃光惩罚项。弃风量 = 风电预测可用出力 − 实际消纳出力。目标函数中对该松弛变量进行惩罚,它本身是非负的,只要满足上限约束,不需要取绝对值,直接在线性目标中加正系数即可。
第三,外购电的隐排放。外购电力的间接碳排放 = 购电量 × 电网平均碳排放因子。因子是常数,乘积是线性的,没问题;但如果考虑购电来源峰谷的差异,可以引入多个购电状态,每个状态配不同排放因子,用二进制变量选择,这里会引入整数变量,没必要就不要加。
第四,热-电耦合带来的运行域约束。抽凝式CHP的可运行域是一个多边形(电出力-热出力平面),直接用顶点坐标做凸组合约束来表达,比用一堆线性不等式更不容易出错。我早期用过简化的"以热定电"线性关系,求解快,但在低热负荷工况下误差明显,后来改成凸包建模,效果好了很多。
4. 求解工具链与不确定性处理
4.1 MILP求解器选型与建模平台
建模语言我推荐MATLAB+YALMIP或Python+Pyomo,两种我都实际跑过,各有取舍。
MATLAB+YALMIP:上手最快,写约束直观,调试时显示错误位置比较清楚。搭配的求解器常用CPLEX或Gurobi。对于24小时×30个节点的算例,求解时间通常在一分钟以内,非常舒服。缺点是MATLAB本身有版权问题,且YALMIP只能做建模前端,真正求解还是靠外部求解器。
Python+Pyomo:完全开源,跨平台友好,跟数据处理的生态(Pandas读取负荷数据、时序数据)可以无缝衔接。Pyomo支持CPLEX、Gurobi、CBC、GLPK等多个求解器,其中GLPK和CBC虽然免费,但性能跟CPLEX/Gurobi差距明显,问题规模一大(比如引入储液罐状态后的整型变量增加),求解时间可能从几秒飙到几分钟甚至不收敛。能用Gurobi就别用CBC,这是我在一个机组数较多的算例上实测出来的,开源求解器在线性代数预处理上差了不止一个量级。
Gurobi还有一个对于调度问题特别实用的能力:它能直接输出对偶变量和对偶价格,写灵敏度分析或求节点电价非常方便。如果论文需要做价格分析,强烈推荐Gurobi。
4.2 风电/光伏不确定性的处理方式
微网调度中风电和光伏出力天然带随机性,不考虑不确定性也可以(确定性调度),但审稿人大概率会问,所以至少要有一个处理方案。我建议按以下递进路线选:
第一个层级,场景法。用蒙特卡洛抽样生成若干风电光伏场景(比如从历史数据拟合分布),再用快速前向选择或同步回代消除法把上千个场景削减到10到30个代表性场景,然后做两阶段随机规划。这个路线信息量最大,但模型规模也最大。
第二个层级,鲁棒优化。用盒式不确定集合描述风电出力的波动区间,做成鲁棒对应模型。优点是计算规模小,解永远是保守可行的;缺点是结果偏保守,可能为小概率的极端场景付出过高成本。配一个预算参数Γ来控制保守度就够了:Γ=0时退化为确定性模型,Γ取上限时是最保守的静态鲁棒。
第三个层级,分布鲁棒优化(DRO)。用矩信息(均值和方差)定义模糊集合,兼顾了随机和鲁棒。这种方法的建模复杂度明显高,如果不是主攻这个方向,不推荐在微网低碳调度里硬加。建议主模型先做确定性MILP,不确定性处理放一个场景法对比,就完全够一篇高质量论文或一个工程评估报告的分量了。
5. 算例设计及结果讨论
5.1 典型日系统与参数设置
我复现的一个标准算例设置大概长这样,你可以直接用:
系统里包含一台200MW的燃煤碳捕集机组(或燃气CHP配碳捕集)、一台燃气轮机、100MW风电、50MW光伏、20MW/80MWh电储能、一套10MW的P2G系统(含4MW电解槽和甲烷化装置)、一个储氢罐、外加与电网和气网的双向联络线。微网内的负荷曲线用某典型工业园区的春夏季典型日数据,峰谷差率大约40%。风电数据取一个春季典型日的预测出力曲线,弃风高峰出现在凌晨2点到5点。
参数上,碳价取60元/吨,免费碳排放配额按整个微网发电量的基准排放强度计算,比如每MWh配0.45吨CO2的额度。碳捕集装置的热耗取3.8 GJ/tCO2,电耗取0.15 MWh/tCO2,捕集率档位设置为0.7/0.85/0.95三档。P2G的电解效率取0.65,甲烷化的CO2转化效率按化学计量比折算。电网外购电的间接排放因子取0.581 tCO2/MWh,这个数接近全国电网平均排放因子的水平。
5.2 方案对比与关键结果
我做了四个方案的对比:
方案A:无碳捕集、无P2G,传统经济调度(带碳交易成本但无捕集),作为基准。
方案B:只加碳捕集(CCS),捕集到的CO2全部外售或封存。
方案C:只加P2G,P2G的CO2需要外购补充。
方案D:碳捕集+P2G联合运行,碳捕集捕到的CO2直接供给P2G甲烷化,构成闭环。
结果上(归一化后的数据,具体数值取决于你的参数),主要有三个现象:
第一个现象:碳排放量从方案A到方案B、C、D逐级下降,方案D比方案A减排大约55%到70%。方案B能减排但代价是运行成本上升明显,因为碳捕集能耗吃掉了机组效率的很大一部分,而且捕集下来的CO2找不到好出路。方案C的弃风率降得最明显,但外购CO2的成本让它不划算。方案D的运行成本只比方案A略高,甚至在某些碳价水平下能实现更低的综合成本,因为碳交易成本省下来的钱覆盖了P2G和碳捕集的运行费。
第二个现象:P2G的制气量在凌晨时段明显增加。凌晨风电大发、负荷低谷,电价为谷段,P2G电解槽全功率运行把弃风电变成天然气;到了白天负荷高峰,气价高的时候,储气罐放气供燃气轮机发电。这个"电-气-电"的时空搬移逻辑跑通了,储气罐起到的角色跟电储能互补:电储能适合短时(小时级)搬移,储气罐适合日间(跨数小时)搬移。
第三个现象:碳捕集装置与P2G的协同运行呈现出明显的"捕集-利用"联动。当P2G的CO2需求量大时(一般在弃风时段),碳捕集系统的捕集率会调到高档,捕集能耗增加,但这部分能耗正好可以用弃风的低价电来平衡。换句话说,P2G这个大用户反哺了碳捕集的经济性。如果只建碳捕集模型而不建P2G,捕集下来的CO2没有用户,碳捕集就变成一个纯成本项;联合建模后,它变成了一个"低成本碳源",整个系统的碳循环被激活了。
5.3 结果背后的机理分析
我反复跑了几组灵敏度分析(碳价从30到120元/吨,P2G效率从55%到80%)后,发现两个值得在论文里重点讨论的点:
一是碳价是联合投运与否的"开关"。碳价低于某个阈值(在我的算例里大约40元/吨),P2G和碳捕集的联合运行无法覆盖设备运行成本,系统会更倾向于简单弃风;碳价超过这个阈值后,P2G+碳捕集的组合才在经济上成立,而且碳排放约束越紧,联合系统的优势越大。这个阈值对工程投资决策非常有价值。
二是P2G的CO2来源敏感性。方案C中外购CO2的价格设为400元/吨,方案D中用碳捕集自产CO2(边际成本约为100元/吨),这直接决定了甲烷化工艺的经济性。如果碳捕集装置不建,P2G要维持同样的产气量,光CO2采购就会把利润吃掉。所以工程评估中,判断一个P2G项目是否可行,第一个问题不是电解槽多贵,而是"CO2从哪来、多少钱一吨"。
6. 实操中的常见问题与避坑指南
6.1 模型调试与求解性能
我建模初期遇到最大的坑是整型变量爆炸。24小时调度、每台机组带启停机变量、碳捕集分档变量、储液/储气状态变量,全部乘起来动辄上千个二进制变量。求解器默认参数就这样直接跑,求解时间会指数级增长。我的经验是:
先跑确定性小规模版本(比如只用1个典型日、3台机组),确认结果合理后再扩大规模。每加一批变量,都要计时对比,不要一次性全部加满。
设置求解器的MIP Gap参数到0.5%或1%,不要再低了。微网调度模型的目标值本身就受预测误差影响,追求0.01%的精度没有工程意义,相反可以让求解时间缩短数倍。
给储能和储气SOC设置合理初值。始末SOC如果不要求相等,模型会在最后一小时把储能放空或充满,结果看起来"最优"其实不具备可操作性。我在初版算例里犯过这个错误,第一天的调度结果里储能在凌晨全部放空,导致白天负荷高峰无储能可用。
6.2 数据单位与口径统一
微网调度模型最容易翻车的地方是单位。功率是MW,能量是MWh;天然气用量可能是m³,燃气热值可能是MJ/m³;碳排量可能是tCO2,但是换算关系五花八门。我建议统一用标准量:
- 功率统一用MW,时间步长统一用h,能量就是MWh;
- 天然气统一折算成MWh(用热值除以3.6换算,1 MJ = 1/3.6 kWh);
- CO2排放量统一用吨;
- 碳价用元/吨;
- 购电价用元/MWh。
我给每个设备写一个参数配置字典,所有参数都从字典里读,所有换算都写在计算函数里,绝不在约束表达式里写裸数字。这样调试时一旦数值不合理,优先怀疑单位换算,而不是模型逻辑。
6.3 碳交易参数怎么取
碳交易模型参数最容易被审稿人质疑。我的建议是:
碳配额不要凭空设,优先参考政策文件的基准线法,比如某区域电网的排放强度基准。如果你做的是前瞻性研究,可以按"基准年配额逐年收紧"的方式设置,比如配额每年下降2%到5%,这样能体现出碳减排政策的动态趋势。
碳价做单点取值是不够的,一定要画碳价灵敏度。30、60、90、120元/吨四条曲线,基本能覆盖国内碳市场近几年的价格区间,审稿人看到这个图会认为你的结论稳健。
外购电的间接排放因子也要说明来源。电网排放因子每年发布,不同区域差异还很大,有的区域之间数值能差出30%。如果你的微网在可再生能源占比高的区域,不要直接采用全国平均因子,按所在区域电网的数值取更合理。
最后再分享一个我在项目验收时被问到过的点:联合模型的收益到底怎么拆?我自己用边际贡献法拆过,把碳捕集和P2G作为两个参与者,分别计算单独投运和联合投运的增量收益差。拆完之后发现,P2G从碳捕集那里获得的"低价碳源"收益,往往比它自己直接消纳弃风的收益还大。这个结论如果放进报告里,对投资决策的参考价值比单给一个最优成本数值要实在得多。如果你也想在论文或方案里把P2G与碳捕集的协同效果说清楚,一定要把碳流路径和成本分摊写明白,那才是这个题目真正的亮点所在。