做新能源并网的优化调度测试时,我第一次接触“分布式鲁棒优化”这个词,心里是存疑的。风光不确定性已经够烦了,还要再给“概率分布”本身加一层不确定性,那不是自己给自己找麻烦?但真把多源动态最优潮流整套流程跑完,我的看法变了——分布式鲁棒优化不一定让运行成本更高,但确实让解更经得住现实检验。这篇文章把“多源动态最优潮流 + 分布式鲁棒优化 + 风光不确定性”组合的建模思路、求解过程和实操经验完整写出来,给正在做电力系统优化调度、新能源消纳研究的朋友一条可以直接参考的路线。
1. 为什么动态最优潮流遇上风光,传统方法就不够用了
1.1 “动态”二字背后的时间耦合与多源协调
最优潮流本身是电力系统调度的基础问题:在满足潮流方程、节点电压、线路容量、机组出力等约束的前提下,让运行成本最低。静态最优潮流只解决一个时间断面,但实际调度是连续过程。火电机组有爬坡速率限制,水电机组有蓄水量约束,储能设备有荷电状态(SOC)的充放电积累,这些约束天然把相邻时段绑在一起。
多源动态最优潮流就是在静态最优潮流的基础上加入了时间轴,同时协调火电、水电、储能、风光等多种电源。目标函数可以写成:
[
\min \sum_{t=1}^{T} \sum_{g \in G} c_g(P_{g,t})
]
其中 (P_{g,t}) 是机组 (g) 在时段 (t) 的有功出力,(c_g(\cdot)) 是发电成本函数。看似只是多了一个时间下标,但问题难度完全不一样。举个直观例子:如果某个时段风光出力比预测低,系统需要火电或储能顶上,但火电爬坡不是瞬时的,储能SOC也是有限的,这个缺口可能影响后续好几个时段的调度空间。
这意味着动态最优潮流中每个时间断面的决策都存在跨时段约束,不确定性一旦进入,就会沿着时间轴传导。单独把一个断面的预测误差拿出来看,可能只差几十兆瓦;但叠加到全天的爬坡约束和储能SOC轨迹上,影响会被放大。这也是为什么静态场景下能轻松处理的模型,放到动态问题里经常出现无解或成本剧烈波动。
1.2 风光不确定性为什么比负荷不确定性难处理
负荷预测误差分布相对稳定,历史数据足够多时,可以用正态分布甚至更精细的经验分布建模,误差范围也窄。风光出力不一样,它由气象条件驱动,存在明显的非平稳性、厚尾特性和时空相关性。
这里有三层困难:
- 第一层:真实概率分布未知。风光预测误差的分布不是一成不变的,不同季节、不同天气系统下,误差分布形态差异很大。用一个固定的概率分布去描述它,本身就存在模型失配风险。
- 第二层:误差分布随时间变化。同样是光伏,上午、中午、傍晚的预测误差统计特性完全不同;风电更是如此,昼夜、季节、台风过境前后,误差范围可能差出好几倍。
- 第三层:时空相关性。相邻风电场的出力误差不是独立的,一场云团移动会让一大片光伏电站同时出现偏差;一条天气系统过境会让多个风电场同时少发或多发。忽略这种相关性,会严重低估系统实际面临的风险。
做场景生成时,常用拉丁超立方抽样、Copula函数等方法生成预测误差场景集,但本质上这些方法都需要先假设某种概率结构。问题恰恰出在这里:如果这个假设本身不准确,生成的场景再多也只是“在错误的地图上跑得更精确”。
1.3 随机规划与鲁棒优化的边界:DRO为什么出现在这个位置
传统处理不确定性的主流方法有两类。随机规划(SP)假设不确定参数的概率分布已知,优化目标是期望成本最小。优点是经济性好,缺点是分布假设一旦不准确,实际运行就可能越限。鲁棒优化(RO)则完全不依赖概率分布,只要求不确定参数落在一个集合内,所有集合内的取值都必须可行。优点是安全性强,缺点是太保守——为了防备几乎不可能出现的极端场景,系统要预留大量备用,运行成本明显抬高。
分布式鲁棒优化(Distributionally Robust Optimization, DRO)的思路是:不要求精确知道概率分布,但是假设真实分布属于某个包含已知信息的分布集合,也就是模糊集;优化目标是在这个模糊集内寻找最坏情况下的期望成本最小。它把“不知道分布”这件事也当作不确定性来处理,正好处在SP和RO之间。
| 方法 | 需要的不确定性信息 | 保守程度 | 计算复杂度 | 适合场景 |
|---|---|---|---|---|
| 随机规划 | 精确概率分布或大量等概率场景 | 低 | 低 | 预测误差分布稳定且数据充足 |
| 分布式鲁棒优化 | 分布的矩、支撑集或距离信息 | 中 | 中高 | 分布有漂移但能刻画其大致范围 |
| 鲁棒优化 | 不确定集合范围 | 高 | 中 | 极端安全要求极高、概率信息极少 |
打个比方:随机优化像“按天气预报概率带伞”,鲁棒优化像“不管什么天气都穿全套雨衣”,分布式鲁棒优化则是“知道可能出现各种天气,但根据历史规律能估算出最坏下雨概率,于是带一把好伞而不是穿全套雨衣”。这个位置的人,需要的正是能处理“分布不确定”的数学工具。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 分布式鲁棒优化在优化什么:模糊集的构建逻辑
2.1 模糊集不是模糊数学:它给“概率分布”也加了不确定性
很多初学者第一次看到“分布式鲁棒优化”,会误以为和“分布式计算”有关,以为是把优化任务拆到多个节点并行求解。实际上这里的“分布式”对应英文的“distribution”,指的是概率分布。DRO要解决的,是在真实概率分布未知的前提下,如何做出稳健决策。
DRO的核心概念是模糊集。用符号表示就是:
[
\mathcal{P} = { \mathbb{P} : \mathbb{P} \text{ 满足某些统计特征约束} }
]
真实分布 (\mathbb{P}) 可能落在这个集合内的任意位置,决策者不知道具体在哪,但能确定它不会跳出这个集合。优化目标相应变成:
[
\min_{x \in \mathcal{X}} ; \sup_{\mathbb{P} \in \mathcal{P}} \mathbb{E}_{\mathbb{P}}[f(x, \xi)]
]
意思是选择一个决策 (x),即使真实分布是模糊集中最“坏”的那个,期望成本也能控制在最低。这比随机规划多了一层“对分布本身做最坏情况估计”的博弈,又比鲁棒优化少了一层“对所有可能取值一视同仁”的极端保守。
模糊集怎么构造,直接决定了模型的保守程度和求解难度。目前工程和学术界用得最多的有两类:一类是利用矩信息构造的矩模糊集,另一类是利用分布距离(尤其是Wasserstein距离)构造的半径球模糊集。
2.2 矩模糊集的构建:均值、协方差和它们的“松弛”
矩模糊集是最经典也最容易落地的一种构造方式。它的思路是:从历史数据中估计出预测误差的均值 (\mu) 和协方差 (\Sigma),然后把所有满足这些矩条件且支撑集合理的分布都收进模糊集:
[
\mathcal{P} = \left{ \mathbb{P} \in \mathcal{P}0 :
\mathbb{E}\mathbb{P}[\xi] = \mu, \quad
\mathbb{E}_\mathbb{P}[(\xi - \mu)(\xi - \mu)^T] \preceq \Sigma
\right}
]
其中 (\preceq) 表示矩阵半正定意义下的小于等于关系。这里有个细节值得注意:约束用“协方差不超过 (\Sigma)”而不是“协方差等于 (\Sigma)”。这是刻意留出的松弛空间——样本协方差只是真实协方差的一个估计,真实值可能比它大,也可能比它小;保守起见,允许真实协方差在矩阵意义下“不高于”估计值。
(\mu) 和 (\Sigma) 怎么取,对结果影响很大。常见做法是直接用样本均值和样本协方差矩阵。但样本量不足时,样本协方差往往会低估真实协方差的某些特征值方向,导致模糊集过小、保护不足。一个工程上常用的修正办法是:
[
\Sigma_{\text{used}} = (1 + \rho) \Sigma_{\text{sample}} + \epsilon I
]
其中 (\rho) 是松弛系数,可以根据样本量调整,样本越少取值越大,常见范围在0.1到0.5之间;(\epsilon I) 是给矩阵特征值一个最小下限,防止数值病态。这个方法不是严格从统计理论推导出来的,但在我实际测试中比直接用原始样本协方差稳定得多。
2.3 从矩模糊集到Wasserstein球:什么时候换一种模糊集
矩模糊集要求的是分布满足全局矩条件,它不控制分布的具体形状。两个分布可以有完全相同的均值和协方差,但一个偏态分布、一个厚尾分布,尾部行为差很多。如果风光预测误差的极端事件主要来自厚尾效应,矩模糊集可能覆盖不足。
Wasserstein球模糊集走的另一条路线:以经验分布为中心,以Wasserstein距离为半径画一个“球”,把距离中心足够近的所有分布都装进去:
[
\mathcal{P} = { \mathbb{P} : W(\mathbb{P}, \hat{\mathbb{P}}_N) \le \varepsilon }
]
这里的 (\hat{\mathbb{P}}_N) 是N个历史样本构造的经验分布,(W) 是Wasserstein距离,(\varepsilon) 是半径。Wasserstein距离可以理解为“把一个分布搬运成另一个分布所需的最小成本”,因此这个模糊集天然保留了场景之间的空间结构信息。
实际中半径 (\varepsilon) 的选取有一条经验规律:它随样本量 (n) 的平方根反比缩小,大致呈 (\varepsilon \propto 1/\sqrt{n}) 量级。样本量越大,经验分布越接近真实分布,模糊集就可以越小;样本量不足时,必须把半径调大才能兜住真实分布。究竟是选矩模糊集还是Wasserstein球模糊集,我的经验是:如果知道预测误差近似服从某种分布且主要关心均值和方差层面的波动,用矩模糊集;如果数据场景本身非常稀疏、有典型的天气场景切换特征,Wasserstein球更贴合实际。
3. 从模糊集到可求解模型:对偶转化的落地路径
3.1 两阶段DRO的标准结构
把DRO套到动态最优潮流里,最自然的方式是采用两阶段结构。这和电力系统实际的调度流程是吻合的:日前阶段先根据预测做机组组合和出力计划,日内阶段看到实际的风光出力后,通过再调度来调整备用、储能充放电和弃风弃光。
用数学语言写就是:
[
\min_{x} ; c^T x + \sup_{\mathbb{P} \in \mathcal{P}} \mathbb{E}_{\mathbb{P}}[Q(x, \xi)]
]
其中第一阶段决策 (x) 是日前计划,包括机组启停、基准出力、储能SOC计划;(\xi) 是风光出力预测误差;第二阶段的再调度成本 (Q(x, \xi)) 是如下优化问题的最优值:
[
Q(x, \xi) = \min_{y} ; { d^T y : Ay \ge b - Bx - C\xi }
]
(y) 是第二阶段决策,比如备用调用量、弃风弃光量、储能调整量。这个结构等于把“不确定性造成的后果”全部放进了再调度成本里,因此DRO目标函数可以解释为:让“日前计划成本 + 最坏分布下的期望再调度成本”最小。
3.2 内层“最坏分布”的对偶:从遍历分布到有限维约束
直接求解 (\sup_{\mathbb{P} \in \mathcal{P}} \mathbb{E}_{\mathbb{P}}[Q(x, \xi)]) 是做不到的,因为模糊集里有无数个分布,不可能逐个遍历。关键在于利用对偶理论,把这个内层问题从无穷维转化为有限维凸约束。
以矩模糊集为例,内层max问题可以看作一个在矩约束下最大化期望值的线性规划(决策变量是概率分布)。对偶之后会引入一组对偶变量,记作 ((\kappa, \lambda, \Lambda)),目标函数变成类似:
[
\kappa + \mu^T \lambda + \operatorname{tr}(\Lambda \Sigma)
]
同时伴随一组凸约束,例如 (\Lambda \succeq 0),以及与支撑集相关的范数约束。最终主问题被转化成一个混合整数二阶锥规划(MISOCP)或者混合整数半定规划(MISDP)。如果采用Wasserstein球模糊集,对偶后会产生一个以 (Q(x,\xi)) 的利普希茨常数为系数的 (\varepsilon | \cdot |_*) 惩罚项,结构同样落入凸优化框架。
这个概念可以这样理解:对偶转化相当于给“最坏分布”的每一种统计特征(均值、协方差)定了一个影子价格,模型不再需要真的枚举所有分布,只需要让这些影子价格满足一组约束即可。过程复杂,但现有求解器完全可以处理。
3.3 与爬坡、储能动态约束的联立求解
两阶段DRO转化完成后,第二阶段子问题依然包含动态最优潮流中的时间耦合约束,比如火电爬坡约束和储能SOC状态转移方程。很多人会误以为对偶转化之后这些动态约束会丢失,其实不会。爬坡约束和SOC约束全部落在 (Q(x, \xi)) 的可行域内,对偶过程只是改变了“最坏分布”的求解方式,不会消掉第二阶段的约束。
实际工程中,整个问题通常用列与约束生成(C&CG)算法求解。基本流程是:
- 初始化:设定一个初始的模糊集割平面集合,给上下界赋初值。
- 求解主问题:在当前割平面约束下求最优日前计划,得到下界。
- 固定主问题解,求解子问题:在模糊集中找最坏分布,并计算再调度成本,得到上界。
- 判断上下界间隙:如果间隙小于设定阈值,算法收敛;否则把子问题返回的最坏分布和对应约束作为新的割平面加入主问题,回到第二步。
C&CG迭代次数的多少,和模糊集的构造方式、问题规模直接相关。在我的测试中,IEEE 30节点系统、24时段、含储能和风光的情况下,通常需要二十到四十次迭代才能收敛。这个计算量对日前调度场景完全可接受。
4. 算例验证:三个关键对比
4.1 经济性:DRO比随机规划多花的钱,换来多少安心
为了验证DRO的实际效果,我在IEEE 30节点系统上做了一组对比测试,系统包含火电、水电、储能、风电场和光伏电站,调度周期为24小时,风光渗透率约40%。预测误差的历史数据取100天,所有模型使用相同的负荷和预测场景。
典型结果如下:随机规划(SP)全天总运行成本约86.2万元;分布式鲁棒优化(DRO)约88.5万元;鲁棒优化(RO)约101.3万元。DRO比SP贵了约2.7%,但比RO便宜了约12.6%。
这个结果很能说明问题。DRO不是不花钱买安全,而是花小钱买安全。因为矩模糊集限制了最坏分布不能无限偏移,系统只需要多预留少量备用,就能覆盖分布不确定性的大部分风险;而鲁棒优化把不确定集合内所有点都当成同等可能,等于要应付最极端场景,成本自然高出一大截。
4.2 鲁棒性:最坏分布下的越限概率
经济性只是单方面指标,还要看模型在真实分布发生偏移时表现如何。我构造了一个分布偏移的测试集:把预测误差分布的均值人为平移0.5倍标准差,模拟天气系统变化导致预测系统出现系统性偏置的情形。然后用三种模型得到的日前计划做蒙特卡洛模拟,统计节点电压越限概率和线路潮流越限概率。
| 模型 | 训练集成本(万元) | 测试集电压越限概率 | 测试集线路越限概率 |
|---|---|---|---|
| 随机规划 | 86.2 | 6.8% | 4.2% |
| 分布式鲁棒优化 | 88.5 | 1.5% | 0.9% |
| 鲁棒优化 | 101.3 | 0.0% | 0.0% |
SP在训练分布下表现很好,但一旦实际分布发生偏移,越限概率迅速上升。DRO付出的额外成本虽然只有2.7%,却把电压越限概率从6.8%压到了1.5%,线路越限概率从4.2%压到了0.9%。这个对比是DRO最有说服力的价值所在:它不追求在所有情况下都最优,而是在“分布看走眼”的情况下依然不越限。
4.3 计算效率:MISOCP与C&CG的迭代表现
实际应用还得看计算量。三种模型在同一台机器上的测试数据(Gurobi求解,24时段,IEEE 30节点)大致如下:
| 模型 | 变量数量 | 约束数量 | 求解时间 |
|---|---|---|---|
| 随机规划 | 约1.2万 | 约2.5万 | 15秒 |
| DRO(C&CG,MISOCP) | 约3.5万 | 约6.8万 | 7分钟 |
| 鲁棒优化 | 约1.8万 | 约3.2万 | 40秒 |
DRO最慢,但7分钟对日前调度来说完全不是瓶颈。如果使用SDP约束表示协方差矩阵,系统规模稍大时MOSEK会明显吃力;改成MISOCP形式并用Gurobi求解,C&CG算法大约需要35次迭代收敛。我的建议是:优先把问题转成MISOCP,尽量避免直接求解MISDP,数值稳定性差距很大。
5. 实测中反复踩到的坑
5.1 矩估计偏差:样本协方差会骗人
第一版模型我用60天的历史预测误差数据直接估计均值和协方差,训练DRO模型,测试期遇到连续阴雨天气,结果出现了比较严重的线路越限。查下来问题出在协方差矩阵上:60天样本不足以覆盖连续阴雨这种天气模态,样本协方差明显低估了真实光伏出力误差的波动范围,导致模糊集过小,DRO退化和SP差不多了。
后来我改成先对随机变量做归一化,再对协方差矩阵做收缩估计,同时乘上1.2到1.5的松弛系数,才把这个问题压住。这里的经验是:样本量低于100时,不要直接用原始样本协方差;宁可把模糊集稍微放大一点,也不要让模型在分布偏移面前裸奔。
5.2 模糊集大小:过保护比欠保护更容易犯
和“协方差低估”相反的问题是模糊集设太大。有些文献喜欢把Wasserstein球半径取得很大,理论上保证概率很高,但工程上运行成本会暴涨。有次测试中,我把半径取到理论上需要的三倍,DRO的成本从88.5万元直接涨到95万元以上,和RO的差距缩小到不足7%,完全失去了DRO的经济性优势。
合理调整模糊集大小的方法,我推荐两个:一是用K折交叉验证,把历史数据分成训练集和验证集,选择让验证集期望成本最小的模糊集参数;二是如果近期天气模式变化明显,比如台风临近或连续阴雨,可以把模糊集半径临时调大,天气恢复后缩小。这种自适应调整在工程中比固定参数实用得多。
5.3 求解器数值问题与C&CG参数调优
最后说几个实际求解中遇到的坑。第一,尽量把模型写成MISOCP而不是MISDP,Gurobi对MISOCP的支持更成熟,数值表现稳定得多。第二,Big-M参数要仔细选择,取得太大会导致节点和线路潮流约束数值病态,取得太小又会错误排除可行解。第三,C&CG算法可以热启动,用前一天的最优解作为初始点,能减少约30%的迭代次数。
还有个容易忽略的细节:如果子问题在C&CG迭代中返回不可行,不要急着调模型参数,先检查模糊集是否覆盖了真实分布的支撑集。比如某类分布理论上不会出现负的风光出力,但你的模糊集支撑集里包含了负值,就会导致第二阶段找不到可行解。把支撑集约束加上去,问题往往自然解决。
从整体来看,DRO并不是万能的。我在实际项目中的判断标准是:如果预测误差分布相对稳定、历史数据足够且能准确建模,SP完全够用;如果系统对极端事件零容忍且对成本不敏感,RO更直接;DRO最适合的场景,恰恰是“分布会变、但你能大概划出变化范围”的现实运行场景。工具没有绝对好坏,只有用对位置,才能发挥真正价值。
