在电力系统规划中,储能系统的选址和容量配置是一个典型的多目标优化问题。我们面对的是一个33节点配电网络,需要同时考虑三个关键指标:电网脆弱性(反映系统安全裕度)、网络损耗(影响运行经济性)以及储能系统容量(决定投资成本)。这三个目标往往相互冲突——例如增加储能容量可以降低电网脆弱性,但会提高投资成本。
传统单目标优化方法无法有效处理这种多目标权衡问题。本项目采用改进的多目标粒子群算法(MOPSO),通过寻找Pareto最优解集,为规划人员提供多种非劣解决方案。最终基于信息熵的TOPSIS方法从解集中选出综合最优方案。
关键挑战:如何在52维决策空间(2个位置变量+2个容量变量+48个时段出力变量)中高效搜索,同时满足各类电力系统运行约束。
基础网络采用标准IEEE 33节点测试系统,包含:
网络拓扑结构呈现典型辐射状分布,节点32为平衡节点。储能系统允许安装在任意负荷节点(除平衡节点外),每个节点最多配置1套储能装置。
建立三目标最小化问题:
matlab复制function [f1, f2, f3] = objective_function(x)
% x: 决策变量向量[位置1,位置2,容量1,容量2,出力1...出力48]
f1 = calculate_vulnerability(x); % 电网脆弱性
f2 = calculate_loss(x); % 网络损耗
f3 = max(x(3:4)); % 最大储能容量
end
其中电网脆弱性指标GV计算过程如下:
matlab复制function GV = calculate_vulnerability(x)
[V_M, ~] = power_flow(x); % 潮流计算获取节点电压
vti = abs(V_M - 1) / 0.07; % 标准化电压偏差
BV = mean(vti); % 平均脆弱度
J = 1 - (2*sum(vti(1:31)) + 1)/32; % 脆弱均衡度
GV = 0.5*BV + 0.5*J; % 综合指标
end
动态调整惯性权重和学习因子,平衡探索与开发能力:
matlab复制w = 0.9 - (0.9-0.4)*iter/maxIter; % 线性递减惯性权重
c1 = 2.5 - 2*iter/maxIter; % 个体认知递减
c2 = 0.5 + 2*iter/maxIter; % 社会认知递增
采用三级筛选机制维护Pareto前沿:
matlab复制function cd = crowding_distance(F)
[N, M] = size(F);
cd = zeros(N,1);
for m = 1:M
[~, idx] = sort(F(:,m));
cd(idx(1)) = inf; cd(idx(end)) = inf;
for i = 2:N-1
cd(idx(i)) = cd(idx(i)) + (F(idx(i+1),m)-F(idx(i-1),m))/(max(F(:,m))-min(F(:,m)));
end
end
end
储能状态(SOC)动态更新与越限修正:
matlab复制for t = 1:24
% SOC更新
E(t+1) = E(t) - P(t)*deltaT/eta;
% 越限修正
if E(t+1) < 0.2*E_max
P(t) = (E(t) - 0.2*E_max)*eta/deltaT;
E(t+1) = 0.2*E_max;
elseif E(t+1) > 0.9*E_max
P(t) = (E(t) - 0.9*E_max)*eta/deltaT;
E(t+1) = 0.9*E_max;
end
end
其中η取0.95(充放电效率),deltaT=1小时。
通过分析24小时出力序列确定最小额定容量:
matlab复制E_max = max(cumsum(P.*(P>0)*deltaT/eta) - cumsum(P.*(P<0)*deltaT*eta));
采用前推回代法加速计算:
matlab复制function [V, loss] = power_flow(x)
% 初始化
V = ones(33,1);
V(32) = 1.05; % 平衡节点
% 迭代计算
for iter = 1:20
% 前推计算电流
I = conj((P + 1j*Q)./V);
% 回代更新电压
for k = 33:-1:2
parent = find(parents == k);
V(k) = V(parent) - I(k)*Z(k);
end
% 收敛判断
if max(abs(V - V_prev)) < 1e-6
break;
end
end
% 计算网损
loss = real(sum(I.^2 .* R));
end
matlab复制F_norm = F ./ sqrt(sum(F.^2, 1));
matlab复制p = F ./ sum(F, 1);
e = -sum(p .* log(p), 1) / log(size(F,1));
w = (1 - e) / sum(1 - e);
matlab复制D_pos = sqrt(sum((F_norm - ideal_pos).^2 .* w, 2));
D_neg = sqrt(sum((F_norm - ideal_neg).^2 .* w, 2));
score = D_neg ./ (D_pos + D_neg);
| 方案 | 脆弱性 | 网损(kW) | 容量(kWh) | 位置 |
|---|---|---|---|---|
| 安全优先 | 0.12 | 85.6 | 1200 | 6,18 |
| 经济优先 | 0.21 | 72.3 | 800 | 8,25 |
| 均衡方案 | 0.15 | 78.2 | 950 | 7,22 |
Pareto前沿三维分布显示三个目标存在明显trade-off关系,验证了多目标优化的必要性。
潮流计算不收敛
算法早熟收敛
TOPSIS决策敏感
本项目代码采用模块化设计,主要包含以下核心函数:
mopso_main.m:算法主框架evaluate.m:目标函数计算update_archive.m:外部集维护topsis_decision.m:最终方案选择plot_pareto.m:结果可视化实际应用中可根据具体电网参数调整network_data.xlsx中的基础数据。建议先运行test_case.m验证各模块功能正常后再进行完整优化。