【二进制粒子群算法的配电网故障定位】

二进制粒子群算法的配电网故障定位

配电网坏了,有些节点的电流情况受到变化,有些节点的电流没有变化。我们采集了现在各个节点的电流情况,写一个程序,导入节点电流情况,用 0表示电流正常,1表示电流不对和平时有出入。程序输出哪个节点是出故障了。程序主要思想是粒子群算法。

1.原理

1.生成初始种群
2.初始种群大小定位100(自选),表示有100个个体,每个个体的维度是节点数。这里我用到的图是33个节点故种群大小为[100,33]的0,1矩阵。0表示该节点正常,1表示坏了。
3.给一个开关的状态编码,表示33个节点(也可以理解是区段)的当前流过的电流是不是有故障的。0表示当前电流无异常,1表示当前电流出现异常。状态编码可以自己给,也可以用下面的代码仿真出来。
4.程序运行,生成初始种群,计算适应度值,根据适应度值和粒子群粒子位置更新原理,更新粒子群,不断迭代,寻找最优解。
5.适应度函数。根据当前个体的情况仿真出此时的状态编码,和给定的状态编码比较,相差越多,适应度值越低,越吻合则适应度大。用论文的话讲就是下图。
6.简单的讲原理。0表示正常,1表示坏了。一个个体是1*33的0-1数组,不断改变数组各个位置上值,直到此时的数组仿真后的状态编码和给的状态编码相同。就表示原来我们给出的状态编码对应的开关故障情况和现在的个体情况相同。

适应度函数说明

2.程序使用讲解

1.这里有几个文件BPSP是粒子群算法,Fault_jiedian是生成节点状态码的函数,你给出故障节点它返回节点状态码,fun函数是适应度函数。
2.直接运行主函数
在这里插入图片描述
3.修改主函数
fault=[4]; %给出错误节点(可修改)
Iexp = fault_jiedian(fault); % 自动仿真出该情况下的节点状态编码
这个4表示节点4坏了,把这个4改成5或者多节点[6,12]等等观察程序的结果。
4.电路图
在这里插入图片描述
5.修改fualt_jiedian和fun函数中的部分即可换电路图,这个你把程序看懂了自然就会了。
需要完整源码的请私聊我,需要更详细讲解的请私聊我

3.源码部分

1.主函数

下面展示 matlab

// matlab
%% 基于二进制粒子群算法的配电网故障诊断
%by 小江
clc;clear;close all;
%%配电网模型为传统辐射型配电网
%实际最优解中1表示故障节点
%Iexp = [1,1,1,1,1,0,0,1,1,1,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0];%故障节点状态编码
fault=[4];  %给出错误节点(可修改)
Iexp = fault_jiedian(fault); % 自动仿真出该情况下的节点状态编码
%% 二进制遗传算法求解
dim = 33;%维度
pop = 100;%种群数量
MaxIter = 300;%迭代次数
pc = 0.6;    %移位概率
pm = 0.05;    %变异概率
fobj = @(x) fun(x,Iexp);%适应度函数
x=0:(MaxIter-1);
%二进制粒子群寻优
[BestX1,BestF1,PSOCurve1] = BPSO(pop,dim,fobj,MaxIter,pc,pm);
[BestX2,BestF2,PSOCurve2] = BPSO(pop,dim,fobj,MaxIter,pc,pm);
[BestX3,BestF3,PSOCurve3] = BPSO(pop,dim,fobj,MaxIter,pc,pm);
figure(1)
plot(x,PSOCurve1,'k-',x,PSOCurve2,'r--',x,PSOCurve3,'b>-');
legend('第一次','第二次','第三次')
title('算法的3次测试结果')
xlabel('迭代次数');
ylabel('适应度值');
grid on;
disp(['开关状态:',num2str(Iexp)]);
disp(['得到的最优解为:',num2str(BestX1)]);
disp(['第一次故障节点为:',num2str(find(BestX1))]);
disp(['第二次故障节点为:',num2str(find(BestX2))]);
disp(['第三次故障节点为:',num2str(find(BestX3))]);

运行结果如图
在这里插入图片描述
在这里插入图片描述
参考博客
https://blog.csdn.net/u011835903/article/details/119872311?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165216968516781435495770%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=165216968516781435495770&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-2-119872311-null-null.142v9pc_search_result_control_group,157v4control&utm_term=%E4%BA%8C%E8%BF%9B%E5%88%B6%E7%B2%92%E5%AD%90%E7%BE%A4%E7%AE%97%E6%B3%95%E9%85%8D%E7%BD%91&spm=1018.2226.3001.4187

  • 13
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 22
    评论
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

好人嬴政

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值