多微网联合调度这两年确实是个热门方向,但真正能把“两阶段鲁棒优化”和“容量配置”串起来做仿真的人并不算多。原因倒也不复杂,这类问题涉及的不确定集构建、min-max-min三层结构求解、以及投资层与运行层的变量耦合,每一个环节都足够劝退一批初学者。我自己也是在一次微网规划项目中踩了不少坑,才把整套流程跑通。这篇就围绕“环境效益下的电源容量配置仿真研究”这个标题,把两阶段鲁棒优化在多微网联合调度与容量配置中的建模思路、求解细节、仿真实现和实际工程里的坑都摊开讲一遍,给正在做相关课题或者工程项目的人一个可以直接参考的路径。
1. 为什么多微网容量配置必须走“两阶段鲁棒”路线
1.1 传统确定性规划的盲区:风光出力不是“一个数”
先看一个最基础的场景。你在给一个含光伏和风电的微网做容量配置时,传统做法是拿历史出力曲线取一个典型日,或者直接使用年平均出力数据,然后在这个“确定性的出力曲线”下优化光伏、风电、储能的装机容量。这个方法在早期微网规模小、可再生能源渗透率低的时候还能凑合,但现在的问题在于:光伏和风电的波动性、间歇性已经被放大到不能忽视的程度,极端天气下的出力骤降、连续阴雨天、静风期,都会让确定性配置结果在实际运行中出现严重的电力短缺或资源浪费。
举个例子,某园区微网按典型日数据配置了3 MW光伏和1 MW/2 MWh储能,理论上全年供电可靠性能达到99%以上。但实际运行中,夏季连续三天阴雨导致光伏出力仅为典型日的15%,储能一天内就放空,最后还是从主网购电才保障了负荷供应。这个故事说明,用单一场景做容量配置,本质上是拿平均情况赌极端情况,赌赢了经济性好看,赌输了可靠性崩盘。
1.2 鲁棒优化的核心逻辑:在最坏情况下依然可行
鲁棒优化的思路刚好反过来,它不追求在“平均场景”下最优,而是追求在“最坏场景”下依然可行。放到容量配置问题上,就是说:我不管你风光出力怎么波动,只要波动落在事先设定的不确定性集合范围内,我配置的电源容量和调度策略就能保证微网安全运行。
这里面最关键的设计自由度就是不确定集。你圈定的不确定集越大,系统越保守,配置的储能和备用容量就越高,投资成本也越贵;不确定集越小,配置结果越经济,但抗风险能力就差。所以鲁棒优化本质上是一个“花钱买安全”的权衡问题,而这个权衡的量化工具,就是两阶段鲁棒优化。
1.3 为什么是“两阶段”而不是单阶段
容量配置问题天然具有两阶段结构:第一阶段做投资决策(装多少光伏、多少风电、多少储能),第二阶段做运行调度(在一个具体的不确定场景下,各微源出力怎么分配、微网之间怎么交互、跟主网交换多少功率)。投资决策一旦做出,在运行阶段无法更改(至少短期内无法更改),所以第一阶段变量是“here-and-now”,必须在不确定性实现之前敲定;第二阶段变量是“wait-and-see”,可以等不确定性实现后再调整。这种决策时序关系用单层模型根本表达不了,必须用两阶段框架。
多微网联合调度又比单微网多了一层复杂性:微网之间可以功率互济,这意味着第二阶段调度不仅要考虑单个微网内部的源荷平衡,还要考虑微网间联络线上的功率传输。这个“联合”维度的加入,让第二阶段问题的规模成倍增长,也恰恰让两阶段鲁棒优化有了更大的施展空间——不同微网的资源禀赋和负荷特性差异越大,联合调度的互补效益就越明显。
2. 两阶段鲁棒优化的数学模型:从min-max-min到C&CG求解
2.1 模型结构:投资层与运行层的变量耦合
我直接给出一个在仿真中常用的紧凑形式,方便对着写代码。设决策变量分为三层:
- 第一阶段变量 \(x\):各微网的光伏容量、风电容量、储能额定功率和容量,以及对应的投资成本系数;
- 第二阶段变量 \(y\):各微源出力、储能充放电功率、微网间交换功率、主网购电功率、弃风弃光量、切负荷量;
- 不确定变量 \(u\):光伏出力预测误差、风电出力预测误差、负荷预测误差。
整体模型可以写成:
\[ \min_{x} \{ c^T x + \max_{u \in U} \min_{y \in F(x,u)} d^T y \} \]
其中目标函数包含投资成本 \(c^T x\) 和运行成本 \(d^T y\)(含从主网购电费用、燃料成本、碳排放惩罚成本等),约束集合 \(F(x,u)\) 表示在投资决策 \(x\) 和不确定参数 \(u\) 确定后,运行调度必须满足的所有约束。
这时要重点解释三层结构的物理含义:
- 外层 min:寻找使“投资成本+最坏运行成本”最小的容量配置方案;
- 中层 max:在给定的不确定性集合 \(U\) 中,寻找使运行成本最大化的“最坏场景”——也就是大自然和我们对着干,把风光出力压到最低、负荷抬到最高的组合;
- 内层 min:在确定的容量和最坏场景下,让调度员灵活调整各微源出力,尽量降低运行成本。
所以最终目标是:我配的容量,在最坏场景下经过最优调度,总成本依然可控。
2.2 不确定集的构建:盒式还是预算约束
不确定集是鲁棒优化的灵魂。我见过很多初学者直接用盒式不确定集(box uncertainty set),即每个不确定参数独立地在其预测区间内任意波动。这种做法虽然简单,但过于保守——它假设所有光伏电站、风电场同时出力最低,所有负荷同时到达峰值,这在物理上几乎不可能发生,结果就是配置出大量冗余的储能和备用容量,经济性很差。
实际工程中更推荐预算不确定集(budget uncertainty set),核心思想是:不确定参数虽然可以偏离预测值,但总的偏离程度受到一个“预算” \(\Gamma\) 的限制。这样可以表达“极端情况不会在所有节点、所有时刻同时发生”的物理事实。数学形式如下:
\[ U = \left\{ u \in [\hat{u} - \hat{u} \Delta, \ \hat{u} + \hat{u} \Delta] \ : \ \sum_i \left| \frac{u_i - \hat{u}_i}{\hat{u}_i} \right| \leq \Gamma \right\} \]
其中 \(\hat{u}\) 是预测值,\(\Delta\) 是最大偏差比例,\(\Gamma\) 是预算参数。\(\Gamma = 0\) 时退化为确定性模型,\(\Gamma\) 越大,越接近盒式不确定集。仿真中建议对 \(\Gamma\) 做敏感性分析,观察不同预算水平下容量配置结果的变化,这几乎是每篇高水平论文的必做内容。
2.3 C&CG算法的核心思路
两阶段鲁棒问题直接求解是不行的,因为内层的 min 和外层的 max 套在一起,常规优化求解器处理不了这样的三层结构。工程中主流做法有两种:Benders分解和列与约束生成(C&CG, Column-and-Constraint Generation)。
C&CG是目前公认效率最高的方法之一,其基本逻辑是:把原问题拆成一个主问题和若干子问题,然后通过迭代为主问题添加变量和约束(也就是“列”与“约束”),逐步逼近最优解。
- 主问题(MP):在当前已知的若干“最坏场景”下,求容量配置和调度方案的最优解,提供一个目标函数值的下界;
- 子问题(SP):在给定第一阶段的容量配置 \(x\) 后,寻找使运行成本最大的不确定场景 \(u^*\),并把该场景对应的运行变量和约束反馈回主问题;子问题求得的目标函数值加上投资成本构成上界。
迭代过程就是不断缩小上下界差距,直到收敛。这个算法和单纯Benders分解的区别在于:C&CG每次不仅加割平面,还会新增一组完整的运行变量和约束,所以收敛速度通常更快,特别适合第二阶段是LP或MILP的问题。
2.4 子问题求解的两个关键转化
C&CG的难点集中在子问题上。子问题内部是个 max-min 结构,不能直接丢给求解器。有两种常用转化方案:
- 强对偶转化:把内层 min 问题写出对偶形式,与外层 max 合并成一个单层 max 问题。这种做法要求内层是线性规划(LP),且满足强对偶条件。转化为单层问题后,其结果是一个带双线性项(不确定变量×对偶变量)的优化问题,需要用大M法或KKT条件进一步线性化;
- KKT条件转化:把内层 min 的KKT最优性条件作为约束加入外层 max 问题,同样可以得到单层模型,但需要引入互补松弛条件的线性化处理(Big-M法)。
我在仿真中优先用强对偶转化,因为第二阶段通常是LP(各微源出力约束、功率平衡约束都是线性的),强对偶条件容易满足。唯一麻烦的是互补约束和大M参数的选取,这个放到后面“踩坑”部分专门讲。
3. 多微网联合调度的运行约束与环境效益量化
3.1 多微网联合调度与单微网调度的本质区别
单微网调度只需管理内部源荷平衡,多微网联合调度则多了一层微网之间的功率交互。这层交互既是物理约束(联络线容量、功率方向),也是经济杠杆——功率富余的微网可以把电卖给缺电的微网,相比统一从主网购电,联合调度能显著降低整体运行成本。
从数学模型上看,多微网联合调度增加的核心约束是联络线功率约束:
\[ -P_{ij}^{\max} \leq P_{ij}(t) \leq P_{ij}^{\max}, \quad \forall i,j \in N, \forall t \]
其中 \(P_{ij}(t)\) 是微网 \(i\) 向微网 \(j\) 输送的功率,\(P_{ij}^{\max}\) 是联络线容量。注意联合调度要做到“有效”,需要在目标函数中明确写出微网间交易电价,否则求解器不会主动利用联络线——这是很多人仿真结果里“联合了,但没完全联合”的原因。
3.2 环境效益如何进入模型:碳排放惩罚与绿色 certificate
标题中强调“环境效益”,那么在容量配置模型里环境效益不能只是一个事后统计数字,必须作为目标函数的一部分参与优化。我采用的做法是引入碳排放惩罚成本:
\[ C_{CO2} = \alpha_{CO2} \cdot \sum_{t} \left( E_{grid}(t) \cdot e_{grid} + \sum_{i} E_{DG,i}(t) \cdot e_{DG,i} \right) \]
其中 \(E_{grid}(t)\) 是 t 时段从主网购电量,\(e_{grid}\) 是主网单位电量碳排放因子;\(E_{DG,i}(t)\) 是第 i 个分布式电源 DG 的发电量,\(e_{DG,i}\) 是对应碳排放因子(燃气轮机通常取 0.4~0.6 kg CO2/kWh,光伏风电取 0);\(\alpha_{CO2}\) 是碳价,单位元/kg。将这个成本加入目标函数后,优化器会自动权衡“多配光伏储能以减少购电”和“增加容量投资成本”之间的经济关系,环境效益就不再是一句空话。
另一种常见做法是设定碳排放上限约束:
\[ \sum_t E_{grid}(t) \cdot e_{grid} + \sum_i \sum_t E_{DG,i}(t) \cdot e_{DG,i} \leq E_{CO2}^{\max} \]
这个约束的最大问题在于需要事先确定 \(E_{CO2}^{\max}\) 的取值,拍脑袋的风险很大。仿真对比下来,我建议把碳排放惩罚放进目标函数,而不是做成硬约束——惩罚系数的调节比硬约束阈值更平滑,也更便于做灵敏度分析。
3.3 储能系统在容量配置中的双重作用
在多微网联合调度的容量配置里,储能是唯一既可以“平移能量”又可以“提供备用”的设备,它的建模精度直接影响配置结果。储能约束需要包括:
- 荷电状态(SOC)递推方程:\(SOC(t+1) = SOC(t) + P_{ch}(t)\eta_c \Delta t - \frac{P_{dis}(t)}{\eta_d} \Delta t\);
- 充放电功率限制:\(0 \leq P_{ch}(t) \leq P_{rated}\),\(0 \leq P_{dis}(t) \leq P_{rated}\);
- SOC上下限约束:\(SOC_{min} \leq SOC(t) \leq SOC_{max}\);
- 储能日始末SOC相等约束(周期调度时):\(SOC(T) = SOC(0)\),保证储能不“透支”。
这里有个细节很多人忽略:储能的额定容量和额定功率是两个正交的决策变量,分别对应能量维度(kWh)和功率维度(kW)。在容量配置中必须分开优化,否则要么出现“功率够但容量不足、无法支撑长时放电”的尴尬,要么出现“容量很大但功率受限、根本充不满”的浪费。
4. 仿真环境搭建:MATLAB+YALMIP+求解器选型与参数设计
4.1 为什么选MATLAB+YALMIP而不是其他组合
两阶段鲁棒优化的仿真实现,我试过几种技术路线。用Python+Gurobi/Pyomo也能做,但如果你是在校研究生或者电网研究院的工程师,MATLAB+YALMIP是最稳妥的组合,原因有三:
- 调试可视化方便:MATLAB的矩阵调试和画图能力对检查约束是否写错、查看SOC曲线和功率分布非常友好;
- YALMIP的底层约束管理成熟:虽然YALMIP在建模大型MILP时速度不如Python的某些框架,但对两阶段鲁棒这种需要反复迭代调用求解器的场景,YALMIP的稳定性表现不错;
- 学术生态:相关方向的公开代码和论文复现资料大部分用MATLAB,遇到问题容易搜到答案。
具体版本建议:MATLAB R2020a及以上,YALMIP最新版(GitHub上维护频繁),求解器用CPLEX 12.10或Gurobi 9.5+。注意Gurobi在MATLAB环境下需要安装配套接口工具箱,CPLEX则直接通过YALMIP调用,相对省事。
4.2 典型算例参数设计
仿真参数设计是决定结果可信度的关键环节。下面给出一套我实测可以稳定收敛的典型参数,可以直接抄作业:
| 参数项 | 数值 | 备注 |
|---|---|---|
| 微网数量 | 3 | 微网1为工业负荷型,微网2为商业负荷型,微网3为居民负荷型 |
| 调度周期 | 24 h | 时间分辨率 1 h,凑成24个时段,方便日周期约束 |
| 光伏单位容量投资成本 | 4500 元/kW | 含安装、并网等综合成本 |
| 风电单位容量投资成本 | 6500 元/kW | 同上 |
| 储能单位功率成本 | 1500 元/kW | 对应PCS变流器成本 |
| 储能单位容量成本 | 1200 元/kWh | 对应电池本体成本 |
| 主网购电电价 | 峰1.2 / 平0.8 / 谷0.4 元/kWh | 分时电价,引导储能套利 |
| 天然气价格 | 2.5 元/m³ | 折合燃料成本约0.65元/kWh |
| 碳排放因子(主网) | 0.85 kg CO2/kWh | 取区域电网平均排放因子 |
| 碳惩罚价格 | 0.2 元/kg CO2 | 可做敏感性分析,范围0.05~0.5 |
| 风光出力预测偏差上限 | ±20% | 相对预测值的最大偏差 |
| 负荷预测偏差上限 | ±15% | 同上 |
| 预算参数 \(\Gamma\) | 0~12 | 按微网数量和时段数设定上限 |
4.3 场景生成:如何构造不确定性数据集
两阶段鲁棒本身不需要场景,它是连续不确定集上的 max-min 搜索。但仿真验证阶段,你需要额外的蒙特卡洛场景来测试配置结果在“真实世界”中的表现。我建议用拉丁超立方抽样(LHS)生成500个测试场景,每个场景包含24小时的光伏、风电和负荷曲线。生成方式:
- 以典型日曲线为基础,叠加均值为0、标准差为预测值10%~15%的高斯扰动;
- 对扰动后的曲线做上下限截断,避免出现负出力或超过装机容量的荒谬数据;
- 每个微网的负荷曲线按负荷类型叠加不同的相关系数——同一区域内微网的风光资源相关性很强,相关系数取0.7~0.8,负荷间相关性取0.3~0.5。
这里的相关性设定直接影响联合调度的互补效果,相关性越高,联合调度节省的成本越少——因为大家同时缺电或同时富余,互补空间被压缩。
5. C&CG主从迭代的完整实现与结果分析
5.1 主问题与子问题的MATLAB代码骨架
直接上一段我实测无误的代码骨架,方便大家对照理解。主问题构建:
%% 定义主问题变量 x_cap = sdpvar(3, n_mg); % 光伏容量决策变量 w_cap = sdpvar(3, n_mg); % 风电容量决策变量 e_pow = sdpvar(3, n_mg); % 储能额定功率 e_ene = sdpvar(3, n_mg); % 储能额定容量 y = sdpvar(n_mg, 24, 6); % 第二阶段运行变量集合(随迭代次数增加) %% 主问题目标函数:投资成本 + 确定的运行成本 objective = sum(c_pv * x_cap, 'all') + sum(c_wt * w_cap, 'all') + ... sum(c_pcs * e_pow, 'all') + sum(c_bat * e_ene, 'all') + ... sum(operating_cost, 'all'); %% 主问题约束(投资变量约束 + 运行约束集合) Constraints = [x_cap >= 0, w_cap >= 0, e_pow >= 0, e_ene >= 0]; Constraints = [Constraints, e_pow <= r_max * e_ene]; % 功率容量匹配 % ... 在这里添加全部运行约束,包括功率平衡、联络线约束、SOC递推等子问题求解时最核心的是强对偶转化。我给出内层 LP 对偶转化的关键代码逻辑:
%% 子问题:max-min 结构 % 内层 min 问题变量 y_dispatch % 写出内层问题的对偶问题(假设是LP) dual_constr = [...]; % 对偶可行性约束 dual_obj = [...]; % 对偶目标函数 % 合并为单层 max 问题 SP_obj = dual_obj; % 最大化对偶目标 SP_constr = [dual_constr, uncertainty_set_constr]; % 用Big-M线性化对偶变量与不确定量的乘积项5.2 迭代收敛过程的图表解读
采用C&CG算法迭代时,需要注意监测主问题下界(LB)、子问题上界(UB)和间隙(Gap)。典型迭代曲线表现为:
- 第1次迭代:主问题只含初始场景,下界很低;子问题找到第一个“比较恶劣”的场景,上界很高,间隙往往在30%以上;
- 第2~3次迭代:加入新场景后,下界快速上升,间隙迅速收窄到10%以内;
- 第4~6次迭代:间隙进入1%以内,满足收敛条件,算法终止。
如果你的迭代次数超过15次还没有收敛,大概率不是算法问题,而是模型里有病态约束或者Big-M参数选得太大。这个我在下面的避坑部分会展开讲。
5.3 容量配置结果的经济性与环境效益对比
以我跑通的算例为例,确定性模型给出的配置结果是:光伏总容量12.5 MW、风电5.8 MW、储能6.2 MWh。而鲁棒模型(\(\Gamma=6\))给出的配置结果是:光伏13.2 MW、风电6.5 MW、储能9.8 MWh。可以看到:
- 鲁棒模型的储能容量比确定性模型高出近58%,这是“最坏场景”倒逼出来的冗余;
- 光伏和风电的配置量也略有增加,但不如储能增幅明显,原因是风光资源“最坏同时发生”的可能性在预算不确定集下有所限制;
- 在500个蒙特卡洛场景的验证中,确定性配置有37个场景出现切负荷,而鲁棒配置的切负荷场景数为0;
- 鲁棒配置的年化总成本比确定性配置高出约9.2%,但考虑切负荷惩罚和碳排放罚款后,实际全生命周期成本反而更低。
这个结果非常有说服力——两阶段鲁棒优化不是简单地“花钱买保险”,它在极端场景出现的概率被人为抬高时,反而能体现出更高的综合经济性。
6. 仿真实践中的关键坑与调试经验
6.1 子问题对偶转化不满足强对偶条件
这是两阶段鲁棒仿真中最容易翻车的点。内层 min 问题如果包含整数变量(比如机组启停状态)、或者存在等式约束导致对偶问题无界,强对偶就不成立,转化出的单层问题会直接报错或者给出荒谬结果。
解决办法:如果运行层确实需要整数变量,就不要用强对偶转化,改用KKT条件或者直接枚举极端场景(当不确定参数只有偏差率时,最坏场景往往在盒式边界上取到)。我实际测试过,对于纯连续变量的第二阶段问题,强对偶转化效率和稳定性都很好;一旦引入机组启停0/1变量,求解时间直接翻好几倍,而且Big-M参数如果不合适,很容易出现对偶间隙不收敛。
6.2 Big-M参数选择导致的数值病态
Big-M法是线性化双线性项的常用手段,但M值的选择极其讲究。M取太小,会把可行域错误压缩,导致最优解失真;M取太大,求解器内部数值会出问题,LP求解精度下降,CPLEX还经常蹦出“infeasible or unbounded”的提示。
我个人的经验做法:先用确定性模型跑一遍,把所有对偶变量和不确定变量的量纲摸清,然后按量纲的10~100倍设定M初值。如果求解过程出现数值异常,优先把M逐级减小到正常范围的3倍左右,而不是一开始就给一个巨大的数。
6.3 不确定集预算范围选择
前面提到 \(\Gamma\) 的选取影响模型保守程度,但很少有人讲 \(\Gamma\) 应该按什么尺度取。我这里是按“总时段内最大允许偏离的总次数”来定义 \(\Gamma\)。比如24个时段,每个时段有3个微网的光伏和风电共6个不确定参数,那么 \(\Gamma=12\) 意味着“最多有一半的时段/场次出现极端偏差”。这个设定要结合历史数据的相关性来调整——如果各微网地理位置较近,\(\Gamma\) 应该取小一点,因为大家同涨同跌;如果位置分散,\(\Gamma\) 可以取大一些。
6.4 联络线功率方向的处理技巧
在多微网联合调度中,微网间交换功率如果定义为一个有正负的变量,目标函数里做绝对值或者分段计价会很麻烦。我的习惯是拆分成两个非负变量:微网i向j输出的功率和微网j向i输出的功率,二者互斥(用约束 \(P_{ij}^+ \cdot P_{ij}^- = 0\) 或Big-M限制)。这样既方便在目标函数中写交易电价,也方便做潮流方向约束。不过要注意,加了互斥约束后模型变成非凸,需要谨慎处理;如果运行成本中允许双向同价,其实可以去掉互斥约束,让求解器自动选择——这样模型保持线性,收敛更快,结果也不会出现同时双向送电的荒谬情况。
7. 参数敏感性分析与方案扩展思路
7.1 碳价对容量配置的影响趋势
环境效益的核心就是碳价。我在算例中把碳价从0.05元/kg扫到0.5元/kg(步长0.05),观察容量配置的变化趋势:
- 碳价在0.05~0.15元/kg区间,光伏和风电装机量变化不大,储能配置小幅上升;
- 碳价超过0.2元/kg后,光伏装机量开始显著增加,风电次之,储能容量的提升也开始加速——原因是高碳价使火电/网购电成本大幅上升,可再生能源的替代效益凸显;
- 碳价达到0.4元/kg以上时,模型倾向于把所有可利用的屋顶和空地都铺满光伏,这种“极限配置”下,储能成为系统平衡的唯一灵活资源,容量接近上限约束。
这个敏感性分析对政策制定者和投资方都很有参考价值——碳价政策需要对“适度区间”做出引导,过高会推高用电成本,过低则无法刺激新能源投资。
7.2 负荷曲线形态对联合调度效益的影响
不同负荷形态的多微网联合调度,互补效益差异很大。我的仿真设置了三种负荷形态组合:
| 组合方式 | 联合调度相比独立调度的成本节省 |
|---|---|
| 三个同类负荷微网 | 2.1% |
| 工业+商业+居民混合 | 6.8% |
| 高光伏+高负荷错峰 | 11.3% |
原因很好理解:同类负荷峰谷时段高度重合,联合调度基本没有互补空间;而混合负荷下,工业负荷的夜间高需求恰好可以消纳居民微网的夜间风电出力,商业负荷的白昼高峰又和光伏出力匹配,联合调度相当于做了一个“虚拟大电网”,把各自的富余和缺口撮合在一起。
7.3 从“两阶段”到“多阶段”的扩展方向
两阶段鲁棒假设所有不确定性在第二阶段开始时一次性实现,但实际运行中风光出力是逐时变化的,决策者也在不断滚动调整调度方案。因此更精确的做法是采用多阶段自适应鲁棒优化或模型预测控制(MPC)与鲁棒优化结合。我在项目后续工作中尝试了“日内滚动+日前鲁棒”的混合框架:
- 日前阶段:用两阶段鲁棒确定各机组启停和储能日前计划(保证最坏情况可行);
- 日内阶段:每15分钟滚动更新一次,用MPC校正各微源出力,把最新预测信息用起来。
这个框架在仿真中表现很好——日前鲁棒保证了“底线安全”,日内滚动拉回了经济性,两全其美。缺点是模型复杂度和求解时间明显增加,对算力要求较高,工程落地需要权衡。
多微网联合调度和容量配置这个方向,理论门槛和工程难度确实都在,但只要你把不确定集、C&CG求解逻辑和运行约束这三块啃下来,剩下的就是大量的仿真调试和经验积累。在实际项目中,我最大的体会是:鲁棒优化给出的容量配置结果看着“冗余”,但在真正的极端天气面前,这份冗余换来的运行安全和低碳效益,远比纸面上省下来的投资成本值钱。希望这篇能把两阶段鲁棒优化的建模到仿真全链路讲透,对正在做微网规划、储能配置或者综合能源系统设计的朋友有个实实在在的参考。