在电力系统规划领域,分布式电源(Distributed Generation, DG)的优化配置是一个关键课题。随着光伏、风电等可再生能源渗透率不断提高,传统配电网面临电压波动、潮流反向等新挑战。如何科学合理地配置分布式电源,既保证系统安全运行,又实现经济性最优,成为电力工程师必须解决的现实问题。
本项目针对IEEE 33节点配电网系统,建立了考虑光伏和微型燃气轮机的分布式电源优化配置模型。核心创新点在于:
传统交流潮流方程可表示为:
code复制P_i = V_i Σ V_j (G_ij cosθ_ij + B_ij sinθ_ij)
Q_i = V_i Σ V_j (G_ij sinθ_ij - B_ij cosθ_ij)
其中θ_ij=θ_i-θ_j。这些方程本质上是非凸的,直接求解困难。我们通过引入辅助变量进行二阶锥松弛:
code复制l_ij = I_ij = (I_ij)^2
u_i = V_i^2
P_ij = V_i V_j cosθ_ij
Q_ij = V_i V_j sinθ_ij
经过变量代换和松弛处理,原非凸问题转化为可高效求解的二阶锥规划问题。关键转换步骤包括:
code复制u_i - u_j = 2(r_ij P_ij + x_ij Q_ij) - (r_ij^2 + x_ij^2)l_ij
code复制||[2P_ij; 2Q_ij; l_ij - u_i]||_2 ≤ l_ij + u_i
code复制P_i^inj = Σ P_ij - Σ (r_ij l_ij) + p_i^g - p_i^d
Q_i^inj = Σ Q_ij - Σ (x_ij l_ij) + q_i^g - q_i^d
年化社会总成本包含五个主要部分:
code复制C_inv = Σ (c_pv N_pv + c_mt N_mt)
code复制C_om = Σ (c_om_pv p_pv + c_om_mt p_mt)
code复制C_fuel = Σ c_fuel p_mt
code复制C_carbon = Σ e_mt p_mt c_carbon
code复制C_loss = Σ c_loss (r_ij l_ij)
总目标函数:
code复制min C_total = C_inv + C_om + C_fuel + C_carbon + C_loss
matlab复制% 季节负荷数据归一化处理
pload1 = pload1/max(pload1(:));
pload2 = pload2/max(pload2(:));
pload3 = pload3/max(pload3(:));
pload4 = pload4/max(pload4(:));
% 构建全年负荷矩阵
ploadz = [pload1; pload2; pload3; pload4];
% 节点导纳矩阵计算
Y = zeros(nbus,nbus);
for k = 1:nl
i = branch(k,1);
j = branch(k,2);
Y(i,j) = -1/(branch(k,3)+1j*branch(k,4));
Y(j,i) = Y(i,j);
end
for m = 1:nbus
Y(m,m) = -sum(Y(m,:));
end
使用YALMIP定义决策变量:
matlab复制% 整数变量
Npv = intvar(8,1,'full'); % 8个候选节点的光伏安装数量
Ng = intvar(6,1,'full'); % 6个候选节点的微燃机安装数量
% 连续变量
V = sdpvar(nbus,4*T*N); % 节点电压平方
I = sdpvar(nl,4*T*N); % 支路电流平方
P = sdpvar(nl,4*T*N); % 支路有功功率流
Q = sdpvar(nl,4*T*N); % 支路无功功率流
% 分布式电源出力
pv = sdpvar(nbus,4*T*N); % 光伏有功出力
qv = sdpvar(nbus,4*T*N); % 光伏无功出力
pg = sdpvar(nbus,4*T*N); % 微燃机有功出力
matlab复制% 光伏安装容量约束
Constraints = [Constraints, 0 <= Npv <= 100];
% 光伏出力与安装数量关系
for i = 1:8
Constraints = [Constraints, pv(candidate_pv(i),:) == ...
Npv(i)*repmat(dw_pv(i,:),1,4*T)*unit_pv/10];
end
% 光伏功率因数约束
for i = 1:nbus
for t = 1:4*T*N
Constraints = [Constraints, cone([pv(i,t); qv(i,t)], sv(i,t))];
end
end
matlab复制% 节点功率平衡
for i = 1:nbus
for t = 1:4*T*N
Pin = -upstream_P(:,t) + upstream_I(:,t).*r + dnstream_P(:,t);
Qin = -upstream_Q(:,t) + upstream_I(:,t).*x + dnstream_Q(:,t);
Constraints = [Constraints, ...
Pin + P2(i,t) - Pg(i,t) - pv(i,t) - pg(i,t) == 0, ...
Qin + Q2(i,t) - Qg(i,t) - qv(i,t) == 0];
end
end
matlab复制% 计算各节点电压支撑权重
WV = zeros(nbus,1);
for i = 1:nbus
WV(i) = B4(i,5)*Npv(1)*unit_pv + ... + B4(i,31)*Npv(8)*unit_pv;
end
% 添加约束
Constraints = [Constraints, WV >= Wref*sum(Npv)*unit_pv];
matlab复制% 设置CPLEX求解器参数
ops = sdpsettings('verbose', 1, ...
'solver', 'cplex', ...
'cplex.timelimit', 3600, ...
'cplex.mip.tolerances.mipgap', 1e-4, ...
'cplex.mip.strategy.heuristicfreq', 100);
% 求解优化问题
sol = optimize(Constraints, objective, ops);
% 检查求解状态
if sol.problem == 0
disp('求解成功');
else
disp('求解失败');
disp(sol.info);
end
某次运行的优化结果如下:
| 节点 | 光伏安装数量 | 微燃机安装数量 |
|---|---|---|
| 6 | 42 | 0 |
| 12 | 35 | 0 |
| 18 | 0 | 3 |
| 24 | 28 | 0 |
| 30 | 0 | 2 |
成本构成分析:
电压改善效果:
matlab复制penalty = 1e-3*sum(sum(I - (P.^2 + Q.^2)./V));
objective = objective + penalty;
matlab复制assign(V, V0.^2); % V0来自潮流计算
assign(P, P0);
assign(Q, Q0);
binvar替代intvar简化模型matlab复制% 采用鲁棒优化处理光伏出力不确定性
P_pv = sdpvar(nbus,4*T*N);
Constraints = [Constraints, ...
pv <= P_pv + 0.2*repmat(dw_pv,1,4*T*N), ...
pv >= P_pv - 0.2*repmat(dw_pv,1,4*T*N)];
matlab复制% 多阶段规划模型
for y = 1:YEAR
Npv(y) = intvar(8,1);
Constraints = [Constraints, Npv(y) >= Npv(y-1)];
objective = objective + CRF*sum(c_pv.*(Npv(y)-Npv(y-1)));
end
matlab复制% 可中断负荷建模
d = binvar(nbus,4*T*N); % 中断决策变量
Constraints = [Constraints, ...
P_load_actual = P_load_nominal.*(1-0.3*d), ...
sum(d,1) <= 0.1*nbus]; % 最大中断比例10%