最近在复现一个综合能源系统优化调度的课题,标题是“面向绿证-碳交易的综合能源系统鲁棒优化方法”。说是课题,其实就是把绿色电力证书、碳交易这两个市场机制,同时塞进传统的电-热-气综合能源系统模型里,再用鲁棒优化去处理风光出力的不确定性。第一版跑出来的时候,结果丑得没法看——碳价稍微调一调,机组出力直接换了套逻辑;绿证价格拉高之后,系统居然会为了拿绿证而硬着头皮多消纳风电,哪怕弃风更划算。到后来把鲁棒预算参数调大,总成本又蹭蹭往上涨。这一连串问题倒逼着我把整套模型从目标函数到约束逐行理了一遍,才发现这类问题真正难的不是写代码,而是怎么把市场机制和不确定性“翻译”成数学语言。
这篇文章把整个项目从模型设计到Python落地,再到结果解读的完整链路梳理一遍,适合正在做综合能源系统、碳交易/绿证机制建模,或者想用鲁棒优化处理风光不确定性的同学参考。我会把目标函数怎么搭、碳交易阶梯定价怎么线性化、鲁棒对等约束怎么推、Gurobi代码怎么写这些细节全部展开,也把我调参踩过的坑一并交代清楚。
1. 为什么要同时考虑绿证和碳交易:双市场机制下的模型变革
1.1 绿证和碳交易在模型中分别管什么
绿证和碳交易经常被放在一起讨论,但它们其实管的是两码事。绿证是“可再生能源配额制”的配套工具——你消纳了一定量的可再生能源电力,就能拿到对应数量的绿色电力证书,这个证书可以在绿证市场上交易。放在综合能源系统模型里,绿证通常变成了一部分收益:系统每消纳1MWh可再生能源发电,可以获得一定数量的绿证,绿证按市场价折算进目标函数;反过来,如果系统有强制配额要求,没完成配额就得掏钱买绿证,或者接受惩罚。
碳交易管的是碳排放。系统里的燃气轮机、燃气锅炉、P2G设备(如果考虑上游碳排放)都会产生碳排放量。在碳交易机制下,政府会给系统发放一定量的免费碳排放配额。实际碳排放量超出配额的部分,需要到碳市场购买;低于配额的部分,可以把盈余配额卖掉赚钱。很多论文里还会进一步做成阶梯碳价:排放量越高,超出配额的部分适用的碳价也越高,这样惩罚是非线性的,建模的时候要单独处理。
把两者放在同一个模型里的意义在于:它们会互相影响。燃气轮机发电虽然成本低于某些外购电场景,但会带来碳排放成本;风电光伏虽然边际成本低,但波动性大,可能导致弃风弃光。绿证收益的存在会激励系统多消纳新能源,而碳交易成本会抑制高碳机组的出力。两个机制同时作用,机组组合和调度策略就会呈现出只考虑单一市场时看不到的权衡。
1.2 双市场引入后,优化模型的结构发生了哪些变化
传统的综合能源系统经济调度,目标函数一般是“购能成本 + 设备运维成本 - 售能收益”。加入绿证和碳交易以后,目标函数至少多了两块:
- 绿证收益项:
绿证价格 × 可再生能源实际上网电量对应的绿证数量 - 碳交易成本项:
碳价 × max(实际碳排放量 - 免费配额, 0),阶梯碳价下还要分段处理
这两个加进去以后,原来单纯的线性规划问题很容易变成混合整数问题。比如阶梯碳价需要引入0-1变量来判断当前处于哪个排放区间;如果要考虑绿证配额约束,可能还要引入额外变量来表示绿证购买量。这些问题乍看不复杂,但代码写起来会有一堆隐性细节。比如“可再生能源上网电量”到底是按风电光伏出力算,还是按扣除弃电后的实际并网量算?免费配额是按整个系统的总负荷还是按机组类型分别计算?这些口径不统一,结果差异会非常大。
还有一点容易被忽略:引入碳交易后,系统的“电气热”多能互补逻辑会发生变化。燃气轮机发电时产生的高温余热可以供热,但如果碳价很高,系统可能更倾向于用燃气锅炉供热,或者从外部电网买电再用电锅炉供热,因为这样碳排放核算口径不同。这类机组出力结构的“翻转”,只有在双市场机制同时建模时才能体现出来。这也是文章标题里“综合能源系统”真正的意义所在——不只是一个多能耦合模型,而是市场和物理系统深度耦合后的优化决策问题。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 鲁棒优化方法选型:单阶段还是两阶段,不确定集怎么设计
2.1 为什么不用随机规划,而用鲁棒优化
处理风光出力的不确定性,最常见的有两个流派:随机规划和鲁棒优化。随机规划需要知道不确定变量的概率分布,然后生成大量场景来逼近期望值;鲁棒优化不需要精确分布,只需要知道不确定变量的变化范围,然后保证在最坏情况下系统仍然可行。
我选择鲁棒优化,主要是因为它和碳交易、绿证这种机制性模型配合起来更稳。综合能源系统里设备种类多,场景法一旦加了碳交易阶梯定价这种非线性机制,需要的场景数量会成倍增长,求解负担很大。而鲁棒优化对数据的需求低,只需要风电、光伏、负荷的预测区间,工程上更容易落地。代价是结果可能偏保守,不过这个保守度可以通过不确定预算参数来调节——你要多强的鲁棒性,就往模型里塞多大的预算参数,两者之间的权衡关系非常直观。
具体实现上有两个路线:单阶段鲁棒和两阶段鲁棒。单阶段鲁棒又叫鲁棒对等模型,把“最坏情况”直接内嵌到约束里,决策在不确定变量实现前一次性定下来,并保证所有不确定情况都可行。两阶段鲁棒则是“先决策、后调整”:第一阶段先定机组启停这类“慢决策”,第二阶段在不确定变量实现后,再调整机组出力、储能充放电这类“快决策”。两阶段鲁棒更贴近实际调度流程,但求解难度高不少,通常需要用C&CG(列与约束生成)算法迭代求解主问题和子问题。
2.2 盒式不确定集和预算参数的工程含义
不确定集最常用的形式是盒式不确定集,每个不确定参数都在预测值附近一个区间内波动:
P_w ∈ [P_w_forecast - ΔP_w, P_w_forecast + ΔP_w]
这里的ΔP_w就是波动范围,通常取预测值的10%~30%。直接使用盒式不确定集求解,得到的是最保守的结果,也就是所有不确定参数同时取到最坏值。这种情况在现实中几乎不会发生——风电不可能全天候按最大偏差偏离预测值。所以实际中会引入一个预算参数Γ(通常读作Gamma),约束“所有不确定参数偏离预测值的总数不能超过Γ”。
Gamma的物理含义可以理解成:未来24小时内,最多允许多少个时段的风电出力同时达到最坏偏差。Gamma=0时,模型退化为确定性模型;Gamma=24时,所有时段都可
