
配电网重构这事儿听着高大上,说白了就是停电的时候怎么快速调整线路结构让更多用户
恢复供电。33 节点系统算是电力系统里经典的测试案例了,今天咱们就拿它开刀,用
MATLAB 折腾个粒子群优化程序出来。
先得把网络结构整明白。33 节点配电网长得跟蜘蛛网似的,5 个联络开关平时都是断开
的。我们重构的目标就是把这些开关状态来回倒腾,找到网损最小的那套结构。这里有个
坑得注意:线路结构必须保持辐射状,绝对不能整出环网,不然保护装置得跟你急眼。
粒子群算法在这儿特别合适,每个粒子其实就是一组开关状态的排列组合。先看初始化部
分代码:
```matlab
switches = [33,34,35,36,37]; % 联络开关原始位置
nParticle = 50; % 粒子数量
pos = zeros(nParticle,5);
for i=1:nParticle
pos(i,:) = switches(randperm(5)); % 随机排列开关位置
end
```
这代码里 randperm 函数玩了个花样,每次随机打乱联络开关的位置,确保初始种群多样
性。不过得盯着点别让生成的网络结构出现孤岛,我之前就遇到过某个粒子把联络开关全
集中在一个区域,结果整个网络裂成两半的尴尬情况。
适应度函数是核心中的核心,直接关系到优化效果。咱们用前推回代法算潮流:
```matlab
function loss = fitness(particle)
% 构建邻接矩阵
node_map = load('node_33.dat'); % 节点坐标
branch = load('branch_33.dat'); % 支路参数
% 重构支路连接关系(此处省略具体实现)
% 前推回代法计算网损
V = ones(33,1); % 节点电压初始化
for iter=1:20 % 最多迭代 20 次
I = zeros(33,1);
% 从末端向前推算电流
for k=33:-1:2
parent = find(branch(:,2)==k);
I(parent) = I(parent) + I(k) + ... % 电流叠加计算
end