1. 电气综合能源系统协同优化概述
电气综合能源系统(Integrated Energy System, IES)是通过配电网、天然气网、风机、光伏和冷热电联产(CCHP)系统实现多种能源互补梯级利用的复杂系统。这类系统能够有效整合可再生能源与传统能源,提高能源利用效率,降低碳排放。然而,新能源出力的不确定性给系统优化带来了巨大挑战。
在实际工程中,我们经常需要处理风电和光伏发电的预测误差问题。以华东地区某工业园区综合能源系统为例,其光伏发电的日预测误差可达15%-20%,这直接影响了系统的调度决策。因此,如何准确刻画新能源出力不确定性,并将其纳入优化模型,成为研究的核心问题。
2. 新能源出力不确定性处理
2.1 预测误差分布建模
新能源出力预测误差通常服从特定的概率分布。基于某风电场一年的历史数据,我们发现其预测误差近似服从均值为0、标准差为8%的正态分布。这种统计特性为我们建立预测误差模型提供了基础。
具体建模步骤包括:
- 收集历史预测数据和实际出力数据
- 计算预测误差序列:e_t = (P_actual - P_pred)/P_capacity
- 进行分布拟合检验(如K-S检验)
- 确定最优分布类型及参数
注意:不同地区、不同季节的预测误差特性可能差异很大,需要分别建模。例如,北方冬季风电预测误差通常比夏季更大。
2.2 时间相关性处理
新能源出力具有明显的时间相关性。通过分析某光伏电站数据,我们发现相邻时间点的预测误差相关系数可达0.6-0.8。忽略这种相关性会导致生成的场景偏离实际。
处理方法:
- 建立自回归模型:e_t = ρe_{t-1} + ε_t
- 估计协方差矩阵Σ
- 采用Cholesky分解生成相关随机变量
2.3 场景生成与削减
基于上述模型,我们可以生成大量可能的新能源出力场景。但直接使用所有场景会导致计算量过大,因此需要进行场景削减。
常用方法:
- 快速前代算法(Fast Forward Selection)
- K-means聚类
- 基于概率距离的削减
以某项目为例,初始生成1000个场景,经削减后保留10个最具代表性的场景,计算效率提升百倍,同时保留了90%以上的概率信息。
3. 系统建模与优化
3.1 电力子系统建模
采用直流潮流模型简化计算:
code复制P_mn = B_mn(θ_m - θ_n)
其中B_mn为支路电纳,θ为电压相角。
约束条件包括:
- 发电机出力上下限
- 支路潮流限制
- 节点功率平衡
3.2 天然气子系统建模
关键难点在于处理Weymouth方程的非线性:
code复制f_mn = sgn(p_m,p_n)·C_mn√|p_m² - p_n²|
其中C_mn为管道常数,p为节点压力。
我们采用分段线性化方法处理:
- 将非线性函数定义域划分为若干区间
- 在每个区间内用线性函数近似
- 引入二进制变量表示激活区间
3.3 热力子系统建模
热网模型需要考虑:
- 供水温度约束
- 回水温度约束
- 热媒流量平衡
CHP机组模型需同时考虑:
code复制P_CHP = η_elec·Q_gas
Φ_CHP = η_heat·Q_gas
其中η_elec和η_heat分别为电效率和热效率。
4. 混合整数非线性规划转化
原问题为MINLP,我们通过以下方法转化:
4.1 分段线性化
对Weymouth方程采用50段线性化,误差控制在1%以内。
4.2 二阶锥松弛
将电网中的交流潮流约束松弛为:
code复制||[2P_ij,2Q_ij,I_i-V_j]||_2 ≤ I_i + V_j
4.3 整数变量处理
引入二进制变量处理:
- 管道流向
- 机组启停
- 分段线性化选择
5. 算例分析
5.1 PJM-5节点系统案例
系统配置:
- 电力:5节点
- 天然气:7节点
- 热力:6节点
优化结果:
- 总成本降低12.7%
- 碳排放减少18.3%
- 计算时间45秒(Intel i7-11800H)
5.2 IEEE-39节点系统案例
系统配置:
- 电力:39节点
- 天然气:20节点
- 热力:6节点
关键发现:
- 燃气机组灵活调节弥补了新能源波动
- 热电解耦提高了系统灵活性
- 碳成本占总成本约15%
6. MATLAB实现要点
6.1 代码结构
matlab复制% 主程序框架
main.m
│
├── input/ % 输入数据
│ ├── power.mat
│ ├── gas.mat
│ └── heat.mat
│
├── model/ % 模型构建
│ ├── build_power.m
│ ├── build_gas.m
│ └── build_heat.m
│
└── solution/ % 求解与后处理
├── solve_milp.m
└── plot_results.m
6.2 关键函数
matlab复制function [scenarios] = generate_scenarios(pred, cov_matrix, n_scen)
% 生成相关随机场景
n_time = size(pred,1);
L = chol(cov_matrix,'lower');
scenarios = pred + pred.*(L*randn(n_time,n_scen));
end
6.3 求解配置
matlab复制options = optimoptions('intlinprog',...
'Display','iter',...
'MaxTime',3600,...
'Heuristics','advanced');
7. 实践建议
-
数据准备:建议至少收集1年的新能源出力历史数据,时间分辨率不低于15分钟。
-
参数调整:
- 分段线性化的段数:50-100段平衡精度与效率
- 场景数量:典型日优化建议10-20个场景
-
求解技巧:
- 先求解连续松弛问题获取初始解
- 合理设置MIPGap(建议0.1%-1%)
- 利用warm start加速求解
-
结果验证:
- 检查约束违例情况(特别是松弛约束)
- 对比不同初始点的解稳定性
- 进行灵敏度分析(如能源价格变化影响)
8. 常见问题排查
8.1 模型不可行
可能原因:
- 能源供需不平衡
- 网络约束过紧
- 耦合元件参数错误
解决方法:
- 检查节点平衡方程
- 逐步放松约束定位问题
- 可视化能流分布
8.2 求解时间过长
优化策略:
- 采用分解算法(如Benders分解)
- 简化非关键子系统模型
- 使用商业求解器(如Gurobi、CPLEX)
8.3 结果震荡
处理方法:
- 增加场景数量
- 调整随机数种子
- 加入正则化项
在实际项目中,我们曾遇到过分段线性化导致的解不稳定性问题。通过将分段数从30增加到50,并将目标函数中加入小幅二次项,有效提高了解的鲁棒性。