基于二进制粒子群算法的配电网故障诊断- 附代码
基于二进制粒子群算法的配电网故障诊断- 附代码
文章目录
- 基于二进制粒子群算法的配电网故障诊断- 附代码
- 1.二进制粒子群算法
- 2.配电网故障区段定位原理分析
- 2.1.1 区段状态编码
- 2.1.2 节点状态编码
- 2.1.3 开关函数构建(辐射型电网)
- 3.适应度函数选择
- 4.算法流程
- 5.实验结果
- 6.参考文献
- 7.Matlab代码
摘要:基于二进制粒子群算法的配电网故障诊断相关知识。
1.二进制粒子群算法
具体原理参考我的博客:(https://blog.csdn.net/u011835903/article/details/119840815)
2.配电网故障区段定位原理分析
2.1.1 区段状态编码
在配电网中安装有断路器、分段开关、联络开关等设备,这些设备在区段定位中称之为节点。配电线路被这些开关设备分成多个小段,称之为区段。当配电网故障发生后,采集这些设备的故障信息就能判定出故障发生在哪个区段 。假设配电网线路的区段的状态用sis_isi来表示,其编码规则如下:
{si=1,区间存在故障si=0,区间不存在故障(1)\begin{cases} s_i=1,区间存在故障\\ s_i=0,区间不存在故障\end{cases}\tag{1} {si=1,区间存在故障si=0,区间不存在故障(1)
2.1.2 节点状态编码
假设配电网开关即节点的状态用IjI_jIj表示,针对传统的辐射型配电网,其编码规则如下:
Ij={1,有故障电流流过0,无故障电流流过(2)I_j=\begin{cases}1,有故障电流流过\\ 0,无故障电流流过\end{cases}\tag{2} Ij={1,有故障电流流过0,无故障电流流过(2)
2.1.3 开关函数构建(辐射型电网)
对辐射型配电网,当某个区段发生故障时,只有靠近主电源上游的节点产生故障电流,而远离电源的下游的节点不产生故障电流。于是辐射型配电网的开关函数其构建方式如下:
Ii∗=s1⋃s2⋃...⋃si(3)I_i^*=s_1\bigcup s_2\bigcup...\bigcup s_i \tag{3} Ii∗=s1⋃s2⋃...⋃si(3)
式中,Ii∗I^*_iIi∗代表节点iii状态的期望值,si∼si+ms_i\sim s_{i+m}si∼si+m代表处于相关节点iii下游的区段状态的假设值, ⋃\bigcup⋃代表逻辑或运算。以 1 图为例对该公式进行说明。
图1.辐射型电网模型
其中SSS 代表电源,k1∼k14k_1\sim k_{14}k1∼k14代表节点,s1∼s14s_1\sim s_{14}s1∼s14代表区段;现假设区段s10s_{10}s10发生故障,其他代表区段正常,则区段状态假说为:
[s1∼s14]=[00000000010000](4)[s_1\sim s_{14}]=[00000000010000]\tag{4} [s1∼s14]=[00000000010000](4)
根据式(5),计算出非故障支路上所有节点状态的期望值为:
{I1∗=s1⋃s2⋃s3⋃s4⋃s5⋃s6=0I2∗=s2⋃s3⋃s4⋃s5⋃s6=0I3∗=s3⋃s4⋃s5⋃s6=0I4∗=s4⋃s5⋃s6=0I5∗=s5⋃s6=0I6∗=s6=0I7∗=s7⋃s8⋃s9⋃s10⋃s11⋃s12⋃s13⋃s14=1I8∗=s8⋃s9⋃s10⋃s11⋃s12⋃s13⋃s14=1I9∗=s9⋃s10⋃s11⋃s12⋃s13⋃s14=1I10∗=s10⋃s11⋃s12⋃s13⋃s14=1I11∗=s11⋃s12⋃s13⋃s14=0I12∗=s12⋃s13⋃s14=0I13∗=s13⋃s14=0I14∗=s14=0(5)\begin{cases} I_1^*=s_1\bigcup s_2\bigcup s_3\bigcup s_4\bigcup s_5\bigcup s_6=0\\ I_2^*=s_2\bigcup s_3\bigcup s_4\bigcup s_5\bigcup s_6=0\\ I_3^* = s_3\bigcup s_4\bigcup s_5\bigcup s_6=0\\ I_4^* = s_4\bigcup s_5\bigcup s_6=0\\ I_5^* =s_5\bigcup s_6=0\\ I_6^* = s_6=0\\ I_7^* = s_7\bigcup s_8\bigcup s_9\bigcup s_{10}\bigcup s_{11}\bigcup s_{12}\bigcup s_{13}\bigcup s_{14}=1\\ I_8^* = s_8\bigcup s_9\bigcup s_{10}\bigcup s_{11}\bigcup s_{12}\bigcup s_{13}\bigcup s_{14}=1\\ I_9^* = s_9\bigcup s_{10}\bigcup s_{11}\bigcup s_{12}\bigcup s_{13}\bigcup s_{14}=1\\ I_10^* = s_{10}\bigcup s_{11}\bigcup s_{12}\bigcup s_{13}\bigcup s_{14}=1\\ I_11^* = s_{11}\bigcup s_{12}\bigcup s_{13}\bigcup s_{14}=0\\ I_12^* = s_{12}\bigcup s_{13}\bigcup s_{14}=0\\ I_13^* = s_{13}\bigcup s_{14}=0\\ I_14^* = s_{14}=0 \end{cases}\tag{5} ⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧I1∗=s1⋃s2⋃s3⋃s4⋃s5⋃s6=0I2∗=s2⋃s3⋃s4⋃s5⋃s6=0I3∗=s3⋃s4⋃s5⋃s6=0I4∗=s4⋃s5⋃s6=0I5∗=s5⋃s6=0I6∗=s6=0I7∗=s7⋃s8⋃s9⋃s10⋃s11⋃s12⋃s13⋃s14=1I8∗=s8⋃s9⋃s10⋃s11⋃s12⋃s13⋃s14=1I9∗=s9⋃s10⋃s11⋃s12⋃s13⋃s14=1I10∗=s10⋃s11⋃s12⋃s13⋃s14=1I11∗=s11⋃s12⋃s13⋃s14=0I12∗=s12⋃s13⋃s14=0I13∗=s13⋃s14=0I14∗=s14=0(5)
结合以上两式可以得出所有节点的期望值:
[I1∗∼I14∗]=[00000011110000](6)[I_1^*\sim I_{14}^*]=[00000011110000] \tag{6} [I1∗∼I14∗]=[00000011110000](6)
若真实故障发生在区段 10,则节点状态的实际值为:
[I1∼I14]=[00000011110000](7)[I_1\sim I_{14}]=[00000011110000] \tag{7} [I1∼I14]=[00000011110000](7)
对比两种可以发现,期望值与实际值相同,因此开关函数式(3)很好得描绘了辐射型配电网电流流向。
3.适应度函数选择
适应度函数按照节点状态采集值和期望值的最佳匹配原则进行:
minFit(s)=∑jD∣Ij−Ij∗∣(8)min Fit(s) = \sum_j^D|I_j-I_j^*|\tag{8} minFit(s)=j∑D∣Ij−Ij∗∣(8)
式中,IjI_jIj表示FTUFTUFTU采集的节点状态的实际值,Ij∗I_j^*Ij∗表示根据区段状态假说变量计算出来的节点状态的期望值,DDD表示配电网的节点总数。在某些情况下,存在多解的可能,对此,对上述适应度函数进行了相关改进:
minFit(s)=∑jD∣Ij−Ij∗∣+w∑iD∣si∣(9)min Fit(s) = \sum_j^D|I_j-I_j^*| + w\sum_i^D|s_i|\tag{9} minFit(s)=j∑D∣Ij−Ij∗∣+wi∑D∣si∣(9)
www为权系数,一般设为 0.5。
4.算法流程
整个算法的流程图如下图所示:
5.实验结果
设置二进制粒子群参数如下:
%实际最优解为:00000000010000
Iexp = [0,0,0,0,0,0,1,1,1,1,0,0,0,0];%故障节点状态编码
%% 二进制粒子群求解
dim = 14;%维度
pop = 20;%种群数量
MaxIter = 50;%迭代次数
Vmax = 4;%速度范围
Vmin = -4;%速度范围
fobj = @(x) fun(x,Iexp);%适应度函数
算法结果为:
得到的最优解为:[0 0 0 0 0 0 0 0 0 1 0 0 0 0]
可以看到二进制粒子群算法经过5次迭代就找到了最优解,最优解与实际故障信息是吻合的。表面了二进制粒子群算法的在该应用上具有较大的优势。
6.参考文献
[1]蔡华洵. 基于免疫算法的配电网故障定位研究[D].湖北工业大学,2020.
7.Matlab代码
基于二进制粒子群算法的配电网故障诊断- 附代码相关推荐
- 【二进制粒子群算法的配电网故障定位】
二进制粒子群算法的配电网故障定位 配电网坏了,有些节点的电流情况受到变化,有些节点的电流没有变化.我们采集了现在各个节点的电流情况,写一个程序,导入节点电流情况,用 0表示电流正常,1表示电流不对和平 ...
- 基于改进二进制粒子群算法的配电网重构(matlab实现)
目录 一.引言 1.问题背景 2.二进制粒子群算法 2.1简介 2.2 S i g m o i d Sigmoid Sigmoid函数 2.3二进制粒子群算法 2.4算法的改进 二.配电网重构模型 1 ...
- 改进粒子群算法的配电网故障定位(PythonMatlab代码实现)
目录 1配电网故障定位原理 1.1 故障信息的数学表示 1.2 二进制PSO算法的配电网故障定位原理 1.3 构造配电网故障定位评价函数 1.4 求期望函数 2 二进制粒子群算法的简单举例------ ...
- 【配电网重构】基于粒子群算法实现配电网重构含Matlab源码
1 简介 随着大规模,跨区域的配电网不断发展,对配电网运行的经济性和可靠性要求越来越高,在配电网发生大范围停电事故后,需要对配电网的拓扑结构进行重新组合,从而达到恢复供电的目的,这个重新组合配电网拓扑 ...
- 【配电网重构】基于matlab粒子群算法33节点配电网重构【含Matlab源码 1829期】
⛄一.配电网重构简介 1 配电网重构的数学模型 1.1 配电网重构的目标函数 配电网重构的数学模型实质就是多目标多约束的最优解问题, 配网重构的目标一般由以下几类: (1) 配电网最小网损为目标; ( ...
- 【选址优化】基于粒子群算法求解配电网抢修选址优化问题含Matlab源码
1 简介 基于粒子群算法求解配电网抢修选址优化问题. 2 部分代码 function DrawCircle(Circle1, Circle2, r, 3600, s)plot(model.trou ...
- 主题:基于改进粒子群算法的含源配电网静态重构 利用IEEE-33节点系统进行仿真计算
主题:基于改进粒子群算法的含源配电网静态重构 利用IEEE-33节点系统进行仿真计算 以网络最小损耗为目标函数 基于改进粒子群算法进行重构 可以加入不同数量的分布式电源 包含M文件.模型图.程序框图以 ...
- 基于多目标粒子群算法的配电网储能选址定容(含MATLAB程序)
一.主要内容 程序是对文章<基于多目标粒子群算法的配电网储能选址定容>的方法复现,具体内容如下: 以系统节点电压水平(电网脆弱性).网络损耗以及储能系统总容量为目标建立了储能选址定容优化模 ...
- 电力系统无功优化MATLAB程序基于粒子群算法IEEE30配电网
电力系统无功优化MATLAB程序基于粒子群算法IEEE30配电网 (1)该程序为基于粒子群算法的配电网无功优化程序,可达到有效降低网损的目的. (2)程序以IEEE-30节点为算例.以网损最小为目标函 ...
- 基于粒子群算法的配电网重构研究matlab程序
基于粒子群算法的配电网重构研究matlab程序 参考文献:基于改进灰狼算法的含分布式电源配电网重构研究 (本文未考虑分布式电源) 摘要:使用基本环矩阵编码的智能优化算法在处理配电网重构问题中,通常使用 ...
最新文章
- IBM websphere MQ远程队列的简单配置
- Ranger开源流水线docker化实践案例
- 【BZOJ3729】Gty的游戏,博弈+splay
- java springmvc 后台读取文件,springMVC
- compile error
- hibernate数据库扫描实体类的配置
- 帆软高级函数应用之其他函数
- 支付宝的授权回调目录只能配置一个域名吗_腾讯QQ授权登录(asp.net + angular)...
- 设计模式——仲裁模式
- 生成模型与判别模型详解
- Hduoj1011【树状DP】
- 技术专栏|室内定位不用愁,UWB来拯救!
- SATA Link Power Management的partial和slumber power state区别
- 测试平台开发:(14)测试用例管理功能设计
- 预测:2019年最值得关注的程序语言是什么?
- ​Intel 150亿美元买下Mobileye;雅虎原CEO梅耶尔离职了│IoT黑板报
- 高仿QQ讨论组头像拼图
- Oracle学习之建表
- excel的偏移函数offset与对应相乘函数sumproduct
- 无法将“XXX”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。 对这个问题的解决方法