
MATLAB中基于粒子群算法求解IEEE 33bus最优潮流模型(包含牛顿迭代法及多源交
易模拟的仿真研究)
最近在搞电力系统优化的时候,突然想试试用粒子群算法(PSO)怼一波IEEE 33节点的最优潮流模
型。这个模型里塞了柴油发电机、储能系统,还要算电网购电成本,结果出图效果贼拉风,特别是电压分布
曲线和功率流动的热力图,拿去做汇报绝对唬得住人。
先说牛顿迭代法写的潮流计算核心。这玩意儿其实就是把节点功率方程写成雅可比矩阵,然后反复
迭代直到收敛。MATLAB里直接向量化操作效率贼高:
```matlab
function [V, iter] = newton_33bus(Pd, Qd, V0)
V = V0;
for iter = 1:20 % 最多迭代20次
[dP, dQ] = calc_power_mismatch(V, Pd, Qd);
J = form_jacobian(V); % 雅可比矩阵生成
mismatch = [real(dP); imag(dQ)];
delta = -J \ mismatch; % 解线性方程组
V(2:end) = V(2:end) + delta(1:end/2) + 1i*delta(end/2+1:end);
if norm(mismatch) < 1e-5
break;
end
end
end
```
这里有个骚操作——把电压实部虚部分开处理,避免复数运算搞出幺蛾子。calc_power_mismatch函
数里藏着节点功率不平衡计算,要特别注意PV节点和平衡节点的处理。
轮到PSO出场了。目标函数既要算网损,又要考虑柴油机发电成本、储能充放电损耗,还得和上级电
网砍价。适应度函数长这样:
```matlab
function cost = fitness(particle)
% 粒子编码:[柴油机出力, 储能充放电状态, 购电量]
diesel = particle(1:3); % 假设3台柴油机