
风电一多调度就难。这几年我一直在做电气互联系统的协同经济调度体会最深的一句话就是电和气的账必须放到一起算。原来电网调度风电预测不准顶多多备一点火电问题不大可现在电网和天然气网深度耦合风一停燃气机组要立刻顶上气网压力跟不跟得上电转气P2G要不要启动启动多少这些决策如果还按老一套的确定性模型去拍很可能第二天就出现弃风或者气荒。这篇内容就把我们在一套电气互联系统协同经济调度模型里的完整做法讲清楚核心建模框架是分布鲁棒机会约束面对的核心对象是风电出力不确定性。文章适合正在做综合能源系统调度、或者刚接触随机优化与鲁棒优化想尽快落地的工程师也适合写论文缺一条完整建模主线的同学参考。我会从问题拆解、建模思路、模型细节、仿真结果到踩坑心得一条线讲完尽量把“为什么这么建模”也讲明白。1. 先把问题说透电气互联系统为什么难调度1.1 电和气的耦合逻辑电力系统和天然气系统以前是各算各的。电网有火电、水电、风电气网有气源、管网、用户两边只在“燃气电厂”这个点上碰面。现在不一样了两个系统开始真正双向互动一个方向是天然气发电燃气机组把天然气变成电电网在高峰负荷时非常依赖它因为它启动快、调节灵活另一个方向是电转气P2G设备把低谷时段的多余风电变成氢气或者合成天然气送回气网管网相当于给气网补充了一个可调节的气源。用个生活化的类比电网和气网就像两个水池中间有两根管子把它们连起来。一根管子是气往电走燃气轮机另一根管子是电往气走P2G。调度问题就是决定每天往哪个方向抽水、抽多少同时要保证两个水池的水位不越限、管道流量不超载。双向耦合带来的好处很明显低谷风电多电网自己消纳不了与其弃风不如让P2G把电变成气存到气网里高峰负荷时风少燃气机组快速顶上比煤电灵活。但代价是两个系统的风险会互相传递风电出力偏差一大电侧需要气侧快速响应气网的压力和流量能不能跟上就成了一个需要建模验证的问题。所以“协同经济调度”不是赶时髦而是物理上两个系统已经绑在一起单独调度两边结果大概率不是全局最优的甚至可能是不可行的。1.2 风电不确定性的三重麻烦既然是做调度模型风电的不确定性就得认真对待。做了几年之后我对风电预测误差的理解可以总结成三句话。第一预测误差的分布会漂移。清晨和傍晚、夏季和冬季、大风过程前后误差的形态差异非常大。同一套正态分布参数上午好用下午就失灵这是很常见的事。第二空间相关性不可忽视。相邻风电场的预测误差往往正相关极端天气来的时候可能一大片风电场同时出力偏低而不是一个高一个低把偏差抵消掉。如果模型假设各个风场误差独立备用会被严重低估。第三尾部风险很大。预测偏差在5%以内确实常见但真正致命的是那种一次偏差到30%、40%的场景。这种场景虽然出现概率不高一旦出现对系统备用和线路潮流的影响是颠覆性的。这三点合在一起最直接的含义就是用一个固定的概率分布去描述风电预测误差是站不住脚的。偏偏很多随机规划方法都有这个隐含假设这是后文我们转向分布鲁棒框架的核心动机。1.3 确定性调度为什么不够用先看最传统的做法确定性调度。它把风电出力当作已知量一般取预测均值或者预测值然后按比例留备用。比如某时刻预测风电出力300MW模型就按300MW优化再额外留10%旋转备用。问题恰恰出在这个“按比例”上。备用是按经验拍出来的不是按风险算出来的。当风电预测误差突然增大时固定比例备用往往不够用。不够用怎么办只能临时调用高价机组、切负荷、或者弃风。反过来在风况很稳的日子固定比例备用又显得多余白白增加成本。从工程统计数据看固定比例备用应对“大概率小偏差”可以应对“小概率大偏差”就明显笨重。于是核心问题就变成了能不能把不确定性显式写进模型让优化自己判断“出现什么样的偏差需要准备多少备用、哪些机组来承担”这就是机会约束进入调度模型的原因。2. 分布鲁棒机会约束一种更稳的“留一手”2.1 三种不确定性建模路线的取舍做不确定性调度主流路线有三条随机规划、传统鲁棒优化、分布鲁棒优化。三者的定位完全不同直接决定了模型的经济性和保守度。先说随机规划。它的前提是已知不确定量的精确概率分布然后优化期望成本机会约束也可以在这个框架下写。优点就是经济性最好风光资源能用足缺点是那个“精确概率分布”在工程上几乎拿不到而且随机规划对尾部风险的约束往往偏弱真实场景一回放就容易出问题。传统鲁棒优化则走向另一个极端它只需要知道不确定量的上下界保证最坏情况下系统也可行。优点是稳缺点也是稳过头了所有偏差都按最坏值预留备用风电稍微有点波动备用成本就高得离谱可行域也偏小实际调度员看到结果常常觉得太浪费。分布鲁棒优化是中间路线假设真实分布属于某个“候选人集合”这个集合由历史样本构造优化目标是让集合内最坏情况下的期望成本最优同时让约束以不低于给定概率满足。它既不需要精确分布又不会离谱保守。用一个类比说随机规划是“天气预报说八成下雨我按八成带伞”鲁棒是“不管下不下雨我都套上全套雨衣”分布鲁棒是“天气预报有误差我按最坏可能做准备但也不至于晴天也穿雨衣”。一句话总结三者的取舍可以用下面这个表建模方式对不确定性的认知经济性稳健性对数据的要求随机规划分布已知且精确最好偏弱尾部分布易低估需要大量可靠样本精确拟合分布传统鲁棒只知道区间上下界较差过度保守极强只需上下界数据需求低分布鲁棒分布未知但落在模糊集中介于两者之间可通过模糊集半径调节需要历史样本但无需精确分布2.2 模糊集与Wasserstein球我们采用的是基于Wasserstein距离构造的模糊集这也是目前工程上比较常用的一种数据驱动方式。基本思想是收集近一段时间的风电预测误差历史样本比如过去30天每15分钟一个点得到一批误差样本。真实分布P不知道但可以认为它落在以经验分布为圆心、半径为一个阈值的“Wasserstein球”内。Wasserstein距离这个概念通俗地理解就是把一个概率分布的质量“搬到”另一个分布所需的最小代价。两个分布如果整体形态差不多距离就小如果尾部分布差异大距离就会拉开。用历史样本构造一个球相当于说“真实分布大概率离这些样本表现出的分布不远但具体是哪一种我不确定所以把球里所有可能的分布都考虑进去。”这个做法的工程吸引力在于三点。第一它纯粹数据驱动有预测系统给出的误差历史就能构造模糊集第二半径可以通过样本量和置信度用理论公式确定不是拍脑袋定的第三它天然是个“调节旋钮”半径趋近于零时模型退化成随机规划经济性好半径拉大时模型逐步逼近传统鲁棒稳健性增加。实际使用中我们的做法是先按理论公式算一个基准半径再按业务可接受的风险水平做灵敏度扫描最后选一个兼顾成本和稳健性的值。2.3 机会约束进入分布鲁棒框架后的处理机会约束要表达的问题是允许约束以很小的概率被突破但概率不能超过阈值。比如系统备用机会约束写成概率形式就是[ \Pr\left{\sum_{i} R_{i,t} \ge \Delta P_{\max}(\tilde{w}_t) \right} \ge 1-\varepsilon ]意思是向上可调备用之和大于风电最大偏差需求的概率不低于95%比如取ε0.05。这个约束比传统鲁棒的“所有情况都必须满足”、也比随机规划的“只看期望”要更符合工程直觉。但机会约束有个著名的毛病它本身是非凸的直接求解很困难。工程上常用的路线是用条件风险价值CVaR去近似它。CVaR描述的是尾部损失的平均水平一个机会约束的可行域可以被一个CVaR约束从保守侧逼近而这个CVaR约束在分布鲁棒框架下是可以转化成凸约束的。进一步做强对偶可以把“模糊集中所有分布都满足”的要求转成一组有限维的线性或二阶锥约束求解规模和样本数量、决策变量维度直接相关。这里有个很实际的建议不要试图把机会约束原样丢给非线性求解器那样又慢又不稳定。正确做法是先做CVaR近似再通过线性化或对偶把模型整理成商用求解器熟悉的格式求解效果会好很多。后面我会具体讲我们在仿真里怎么处理这些约束。3. 协同经济调度模型怎么搭3.1 目标函数一天的总成本调度模型作为一个优化问题目标函数要能反映这一天系统运行的经济性。我们用的目标函数是系统总运行成本最小化显式包含了几部分[ \min \sum_{t} \left( \sum_{i} C_{i}^{\text{gen}}(P_{i,t}) \sum_{s} C_{s}^{\text{gas}}(F_{s,t}) C^{\text{P2G}}(P^{\text{p2g}}{t}) \lambda_w (P^{\text{avail}}{w,t} - P^{\text{used}}_{w,t}) \lambda_L \Delta L_t \right) ]第一项是发电机组燃料成本主要是火电和燃气轮机用二次函数或者分段线性函数拟合第二项是气源购气成本气网侧的天然气不是白来的每个气源有自己的报价第三项是P2G运行成本包括设备维护和耗电成本第四项是弃风惩罚因为风电边际成本接近于零弃风意味着资源浪费所以给一个较高的惩罚系数最后一项是切负荷惩罚这个系数要设得非常高比任何正常运行成本都高一个数量级以上否则优化器会“聪明”地选择切负荷来省钱。目标函数表面看起来不复杂但真正决定模型行为的是惩罚系数的相对大小。我们做过测试如果切负荷惩罚只比高价机组贵一点点模型在风电大偏差日就会频繁选择切负荷而不是调用备用这在工程上完全不可接受。3.2 电力系统约束电力侧约束是标准的调度约束但每个约束都有它存在的理由。节点有功平衡是最基础的约束每个节点注入和流出必须平衡。直流潮流方程把线路有功潮流和节点相角联系起来由于负荷和风电偏差都进入节点注入线路潮流也就是相角和注入的线性函数这一点后面很有用。传输极限约束保证任何一条线路不过载。机组出力上下限和爬坡约束捕捉火电和燃气轮机的物理调节能力。在不确定性建模里旋转备用约束是重点。我们把系统备用响应能力写成所有在线机组可调容量之和要求它在概率意义下能够覆盖风电出力偏差带来的净负荷波动也就是前面给出的机会约束。这个约束的好处是模型会自行在成本高的快速机组和成本低的慢机组之间做权衡而不是按固定比例一刀切。还有一个容易忽略的地方是爬坡约束的不确定性影响。风电短时剧烈波动时爬坡最快的那几台机组可能被全部调用如果模型不知道风电可能“跳变”它不会为爬坡留裕度。所以我们在爬坡约束上也加了一层机会约束允许极端爬坡事件以一个很小的概率触发备用调整。这个细节在实际回放测试里非常关键。3.3 天然气系统约束天然气网侧的约束才是这个模型真正难处理的地方。气网和电网有个本质区别电几乎是瞬时平衡的气是慢过程管道本身有储气能力节点压力是空间分布的不能像频率一样全系统统一。管道稳态流量方程给出了管道流量与两端压力平方差的关系。这是标准的二次型压差—流量关系物理上没有问题但它是个非凸约束。小规模算例可以保留这个非线性方程用内点法硬解系统规模一大非凸约束会让求解器经常掉进局部最优所以我们在大算例里用了分段线性化或者二阶锥松弛精度足够求解稳定性大幅提升。节点气流量平衡约束要保证每个节点的注入、负荷、P2G产气和燃气轮机耗气之间的平衡。气压上下限约束保证管网运行在安全范围尤其要防止燃气机组集中启动时局部节点压力骤降。气源供气上限模拟的是长输管道日合同量和气井最大产量这个约束往往会在高峰负荷日变成瓶颈。如果想考虑更精细的管存动态可以加入一个简化的一阶管存模型让管存的变化等于进出管道流量之差。这个扩展对多时段调度很有价值它给气网提供了跨时段的缓冲余地让P2G在低谷时段产的气可以在高峰时段被燃气机组消耗而不是必须即产即用。3.4 电气耦合约束电和气的耦合约束把两侧连接起来。燃气机组是主要的耦合设备它的发电功率和耗气量之间有一个转换效率写成[ P_{i,t}^{g} \eta_i \cdot F_{i,t}^{\text{fuel}} ]效率η一般在0.35到0.55之间取决于机组类型和工况。P2G设备是相反的转换方向[ F_{t}^{\text{p2g}} \eta_{t}^{\text{p2g}} \cdot P_{t}^{\text{p2g}} ]P2G的综合效率目前大约在0.45到0.65之间比燃气机组发电效率还低一些这也是为什么P2G不能随便开它只在弃风量大、或者气价高的时候才有经济性。我们还在耦合节点上加了注入上下限和启停次数限制防止模型把P2G当成一个无成本的垃圾桶频繁开关实际设备受不了。这部分模型把事情讲透以后就能回答开头的那个问题了风电多的时候电转气到底该不该开答案是看气网缺不缺气、气价高不高、弃风成本有多大。如果气网气压快越上限P2G产的气进不去开了也是白开如果燃气机组高峰还要大量耗气P2G低谷存的气就派上用场了。这就是协同调度的价值所在。3.5 机会约束具体落在哪些位置我们把机会约束放在了四个关键位置。第一个是系统旋转备用前面已经说过这是最直接对应风电不确定性的约束。第二个是关键线路的潮流不越限。因为直流潮流方程是线性的风电偏差引起的线路潮流变化也是线性的所以这个约束可以在分布鲁棒框架下写成概率约束防止某条通道在风电大发时过载。第三个是气网节点压力不越限。风电预测偏差一旦导致燃气机组出力改变节点耗气量就变局部气压波动就大这个约束用来保证气网侧也有足够的调节能力。第四个是区域净负荷爬坡备用防止短时间风功率骤升骤降时系统跟不上。这四个约束共享同一个误差源也就是风电预测误差向量所以在建模时不是把它们当作独立的概率事件而是用同一个模糊集来统一描述误差分布。这一点很重要因为如果分别对每个约束独立建模糊集可能把相关性丢失极端场景下的联合风险就会被低估。4. 仿真结果分布鲁棒不是“玄学”4.1 算例搭建与参数设置为了验证模型我用的算例是一个通用的39节点电力测试系统和一个20节点天然气测试系统耦合而成这是公开的标准算例很多做综合能源的文章都会用方便横向对比。电网上挂了5台燃气轮机和若干火电机组气网侧接了3个P2G设备风电装机占比设为40%算是比较高的渗透率场景。负荷曲线用典型日数据风电预测误差的历史样本取过去30天每15分钟一个点一共约2880个样本点用这些样本来构造Wasserstein模糊集。置信水平取95%也就是机会约束的违反概率ε0.05。Wasserstein半径先按有限样本保证公式算基准值再按0.1倍、0.5倍、1倍和2倍做灵敏度扫描。罚系数设置为切负荷罚金是最高机组单位煤耗成本的10倍以上弃风罚金略低于P2G运行成本这样模型不会为了减少弃风而随便开P2G也不会为了省钱而切负荷。对比方案设了三套第一套是确定性模型风电取预测值备用按固定比例10%留第二套是传统鲁棒模型不确定集取预测误差的95%分位数区间所有约束在最坏情况下都要满足第三套就是我们的分布鲁棒机会约束模型。4.2 三套方案的结果对比我把典型日的结果整理成表对比项确定性模型 DET传统鲁棒模型 RO分布鲁棒机会约束 DRO-CC总运行成本相对值1.001.091.04切负荷概率真实场景回放0.8%0%0.03%弃风率6%1%2%求解时间分钟0.30.43.5看结果的第一个感觉是确定性模型成本最低但这是假象。把它放到一个月的真实风电场景里去回放切负荷概率达到0.8%换算下来大约每四个月就会出现一次切负荷事件这在电网调度里是绝对不能接受的。传统鲁棒模型确实稳切负荷概率是零但成本比确定性高9%备用压得太满弃风率很低但经济代价太大。分布鲁棒机会约束模型夹在中间成本只比确定性高4%切负荷概率却降到0.03%下降了二十多倍。这个结果其实很有说服力我们用很小的成本代价换来了风险水平的大幅下降。0.03%的切负荷概率也符合95%置信水平的预期说明机会约束在真实样本回放下没有“失真”。还有一个值得注意的现象是弃风率。传统鲁棒弃风率只有1%看起来最好但它的方式是让所有机组都多留备用容量把风电不确定性“压下去”这不叫消纳这叫浪费。DRO-CC的弃风率2%比确定性低很多同时没有像鲁棒那样过度保留备用这个状态更接近工程上可接受的水平。4.3 灵敏度与参数行为分析做完基础对比之后我又扫了一遍关键参数结论对实际选参很有参考价值。先看置信水平ε。把ε从0.01逐步调到0.10总成本会逐步下降因为允许的风险水平越高模型预留的备用就越少。但这个下降不是线性的ε在0.05之前成本下降明显过了0.05之后成本下降趋缓切负荷风险却还在上升。所以我们最终选了0.05作为基准值它是成本曲线上的“拐点”。再看Wasserstein半径θ。半径从小往大调成本逐步上升切负荷概率逐步下降。这里有个坑如果半径太小模糊集几乎退化成经验分布模型对未见过的新误差形态没有免疫力半径太大成本接近传统鲁棒失去意义。实务上我的建议是先用理论公式算一个基准值然后扫一遍0.5倍到1.5倍区间看成本和风险的变化率选变化率从陡峭变平缓的位置。风电渗透率的敏感性也值得提一下。把风电装机占比从30%提到50%确定性模型的切负荷概率快速上升传统鲁棒模型的成本急剧恶化而DRO-CC模型通过模糊集半径和置信水平的配合成本和风险都能维持在一个可接受的范围。这说明分布鲁棒机会约束对高比例新能源场景的适应性是比较好的。5. 实操心得与踩坑记录5.1 不要硬解机会约束这条经验我要放在最前面。机会约束直接非线性求解在中小算例上可能还能跑算例一复杂就原形毕露不收敛、收敛到劣质局部解、求解时间爆炸三个坑一个都躲不掉。正确路线是先做CVaR近似再通过强对偶把分布鲁棒机会约束转化成有限维的线性或二阶锥约束。处理完后模型整体是个凸优化问题可以交给成熟的商业求解器。我们在实际操作里建模工具用的是常用科学计算环境里的建模工具箱求解器选的是商业求解器整个流程非常顺。记住建模的艺术在于把不好解的问题转化成求解器擅长处理的结构而不是逼求解器去挑战非凸概率约束。5.2 样本不是越多越好Wasserstein模糊集需要历史样本但样本数量不是越多越好。样本多模糊集的统计精度确实更高但模型的约束数量也会跟着涨求解时间线性甚至超线性增加。我们做过对比样本数从2880个缩减到300个代表性场景成本结果只变了不到1%求解时间从十几分钟降到三分钟以内。缩减样本的方法用的是场景聚类把相似误差模式合并保留尾部极端样本。实际操作时要注意聚类时不要把那些“小概率大偏差”的尾部样本给归并掉了这些样本恰恰是决定备用水平的关键。5.3 罚系数要有层次前面提到过罚系数这里展开讲讲。切负荷罚金要最高弃风罚金次之P2G运行成本第三常规机组燃料成本最低。如果罚金设置没有这个层次优化器就会钻空子。举个真实踩过的坑最开始我把弃风罚金设得特别高心想“新能源要多用”结果模型宁可让P2G在气网已经接近气压上限的时候全功率运行也要把弃风降下来代价是气网压力越限。后来把P2G的节点注入上限和气压机会约束同时收紧再把弃风罚金调到合理区间模型行为才正常。罚系数的本质是给优化器传递价值排序这个排序必须和实际业务目标一致。5.4 与预测系统的对接经验模型不是一次性搭完就能用的。我们把这个模型接到实际的预测系统上后发现风电预测误差的分布每天在变模糊集如果一直用一个月前的历史样本误差会越来越大。后来改成滚动更新每天取最近30天的误差样本重新构造模糊集模型跑出来的备用建议和实际运行情况明显更贴合。另外值班调度员不关心分布鲁棒的理论推导他们只关心结果里备用够不够、哪些线路可能越限、需要重点关注哪个气网节点。所以我们把模型结果转成了一份决策清单未来24小时的备用计划、关键断面预警、气网低压风险时段。这样模型才能从论文落到调度台。这个转换工作其实比模型本身更花时间但它是工程应用里最难替代的部分。5.5 理论半径和工程半径要分开最后说一个选参数的体会。Wasserstein半径的理论公式给出的是一个有统计保证的保守值直接用它模型通常偏保守成本可能比实际需要高不少。我们的做法是把理论值作为上限参考再结合对历史误差数据的观察向下调整到一个业务可接受的平衡点。这个调整没有标准答案只能靠对系统风险偏好的理解。我的经验是先在保守侧跑一版拿到成本和风险基准再逐步减少半径每调一次就做一次历史场景回放直到风险指标接近容忍上限。这个过程很繁琐但值得做。写在最后这个模型我前后跑了快一年最大的体会是分布鲁棒机会约束不是用来装饰论文的数学工具它本质上给了调度一个“风险—成本—备用”的量化旋钮。以前调度员只能拍脑袋说“明天风大多留10%备用”现在模型可以告诉他多留这10%备用对应的是什么样的风险削减要付出多少成本反过来如果风险偏好收紧一点备用和成本会怎么变。这个“可解释性”是它比传统鲁棒和纯随机规划更贴近工程的地方。个人经验是做这类模型最花功夫的不是推导对偶而是把不确定集标定对历史样本选哪一段、半径调到什么程度、置信水平定多少、罚系数怎么排每一个参数都直接决定模型在现场能不能用。如果后面还有精力深挖我觉得气网动态管存建模、多时间尺度滚动调度、以及P2G参与调峰辅助服务市场这几个方向都很有价值。这篇文章就到这里希望能给正在做电气互联调度或者考虑用分布鲁棒方法做优化的朋友一些实际参考。