在电-气综合能源系统的优化调度研究中,不确定性始终是难以回避的核心挑战。传统鲁棒优化方法往往基于“最坏情况”进行建模,导致调度方案过于保守,经济性严重受损,甚至影响实际工程应用的可行性。本文所介绍的方法通过引入分布鲁棒优化框架,并结合条件风险价值(CVaR)理论,有效缓解了这一问题,在保障系统安全的同时显著提升了调度灵活性。
本模型的核心思想在于:利用Wasserstein距离构建不确定变量的概率分布模糊集,从而避免对不确定性分布形式的强假设。该方法仅依赖历史风电出力等数据样本生成经验分布,并以Wasserstein球的形式界定真实分布的可能范围,增强了模型对分布偏差的适应能力。
function epsilon = calcWasserstein(samples, alpha)
N = size(samples, 1);
d_hat = mean(pdist2(samples, samples).^2); % 经验距离计算
epsilon = sqrt(-log(alpha)/(2*N)) + d_hat; % Wasserstein半径
end
上述代码段实现了基于Wasserstein距离的模糊集构造过程。其中关键步骤是计算历史数据对应的经验分布与候选分布之间的距离度量,进而确定模糊集的半径参数。该参数通常设置为较小值(如0.05),表示允许真实分布与经验分布在一定范围内存在偏差,既防止过拟合,也避免集合过大导致结果失去意义。
pdist2
alpha
在电-气耦合环节,能量转换关系需精确建模。特别是燃气轮机、电转气设备等关键组件,其运行受到电力系统与天然气网络双重约束的影响。以下为典型的气电转换物理约束实现:
for t = 1:T
constraints = [constraints, ...
gas2power(t) == C_ge * gas_flow(t) + D_ge * pressure(t)]; % 气转电物理方程
end
其中,
D
和
ge
分别为压力与流量之间的非线性转换系数,反映了管道流动特性。值得注意的是,若忽略气压越限可能导致的设备失稳问题(如燃气轮机喘振),仿真结果可能出现不合理甚至崩溃的情况。因此,必须在模型中嵌入如下类型的隐式安全约束:
pressure(t) <= 4.2MPa
此类约束虽不显眼,却能在极端场景下有效抑制系统失稳风险,提升整体鲁棒性。
风险量化方面,本文采用CVaR(Conditional Value at Risk)作为风险测度工具,将其融入目标函数中,实现对尾部风险的精准控制。相关代码实现如下:
beta = 0.95; % 置信水平
eta = sdpvar(1); % 风险阈值
xi = sdpvar(N_scen,1); % 辅助变量
constraints = [constraints, ...
xi >= 0, ...
mean(xi) <= (1-beta)*eta ]; % CVaR转换条件
obj = obj + 0.3*eta + (1/(1-beta))*mean(xi); % 目标函数改造
其中设定的风险水平系数(如0.3)具有重要调节作用——它决定了决策者愿意承担的风险比例,实质上是在系统可靠性与运行成本之间进行权衡。该参数可根据实际运行需求灵活调整,体现策略的可配置性。
变量设计上,引入辅助变量用于刻画在最差α%场景下的期望超额成本,相当于为系统配置了一种“风险保险机制”:在多数正常情况下保持低成本运行,在极端事件发生时也能维持基本稳定性。
xi
求解器配置对大规模混合整数规划问题尤为关键。推荐使用高性能商业求解器(如Gurobi)以提高收敛效率。典型配置如下:
ops = sdpsettings('solver','gurobi','verbose',1);
ops.gurobi.MIPGap = 1e-4; % 间隙控制在0.01%
ops.gurobi.TimeLimit = 3600; % 1小时保命设定
将相对间隙容限设为1e-4可确保较高精度解的获取。实测表明,在相同硬件条件下,Gurobi相较CPLEX在本类问题上平均提速约30%。然而,当系统规模扩大至节点数超过200时,单线程求解将面临严重的时间瓶颈,此时应主动启用并行计算功能:
parpool
以避免计算时间呈指数级增长,确保模型具备实际应用价值。
最终效果可通过对比实验直观展现。下图展示了不同优化方法在风电波动环境下的调度成本表现:
! 对比曲线
图中实线代表本文提出的分布鲁棒优化方法,虚线为传统鲁棒优化结果。可以观察到,在风电出力剧烈波动时段(X轴15–20),传统方法调度成本飙升达18%,而本文方法增幅控制在5%以内。这充分体现了Wasserstein模糊集与CVaR联合建模的优势:既能有效应对不确定性,又避免过度保守,实现了稳健性与经济性的良好平衡。
此外,在跨能源系统协同优化中,极易出现“各自为政”的建模缺陷。例如曾有案例因未在天然气网络方程中耦合电压约束,导致仿真中出现燃气轮机在低电压条件下仍满负荷发电的荒谬现象。为此,建议在代码中设置必要的交叉校验逻辑:
if any(gas_flow < 0)
error('天然气倒流啦!快检查压缩机参数!');
end
这类防御性编程措施虽增加少量开发成本,但能极大提升模型的鲁棒性和可信度,避免因边界条件遗漏而导致错误结论。