基于二进制粒子群算法的配电网故障诊断- 附代码

文章目录

  • 基于二进制粒子群算法的配电网故障诊断- 附代码
    • 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​=1I1​0∗=s10​⋃s11​⋃s12​⋃s13​⋃s14​=1I1​1∗=s11​⋃s12​⋃s13​⋃s14​=0I1​2∗=s12​⋃s13​⋃s14​=0I1​3∗=s13​⋃s14​=0I1​4∗=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代码

基于二进制粒子群算法的配电网故障诊断- 附代码相关推荐

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

    二进制粒子群算法的配电网故障定位 配电网坏了,有些节点的电流情况受到变化,有些节点的电流没有变化.我们采集了现在各个节点的电流情况,写一个程序,导入节点电流情况,用 0表示电流正常,1表示电流不对和平 ...

  2. 基于改进二进制粒子群算法的配电网重构(matlab实现)

    目录 一.引言 1.问题背景 2.二进制粒子群算法 2.1简介 2.2 S i g m o i d Sigmoid Sigmoid函数 2.3二进制粒子群算法 2.4算法的改进 二.配电网重构模型 1 ...

  3. 改进粒子群算法的配电网故障定位(PythonMatlab代码实现)

    目录 1配电网故障定位原理 1.1 故障信息的数学表示 1.2 二进制PSO算法的配电网故障定位原理 1.3 构造配电网故障定位评价函数 1.4 求期望函数 2 二进制粒子群算法的简单举例------ ...

  4. 【配电网重构】基于粒子群算法实现配电网重构含Matlab源码

    1 简介 随着大规模,跨区域的配电网不断发展,对配电网运行的经济性和可靠性要求越来越高,在配电网发生大范围停电事故后,需要对配电网的拓扑结构进行重新组合,从而达到恢复供电的目的,这个重新组合配电网拓扑 ...

  5. 【配电网重构】基于matlab粒子群算法33节点配电网重构【含Matlab源码 1829期】

    ⛄一.配电网重构简介 1 配电网重构的数学模型 1.1 配电网重构的目标函数 配电网重构的数学模型实质就是多目标多约束的最优解问题, 配网重构的目标一般由以下几类: (1) 配电网最小网损为目标; ( ...

  6. 【选址优化】基于粒子群算法求解配电网抢修选址优化问题含Matlab源码

    1 简介 基于粒子群算法求解配电网抢修选址优化问题​. 2 部分代码 function DrawCircle(Circle1, Circle2, r, 3600, s)​plot(model.trou ...

  7. 主题:基于改进粒子群算法的含源配电网静态重构 利用IEEE-33节点系统进行仿真计算

    主题:基于改进粒子群算法的含源配电网静态重构 利用IEEE-33节点系统进行仿真计算 以网络最小损耗为目标函数 基于改进粒子群算法进行重构 可以加入不同数量的分布式电源 包含M文件.模型图.程序框图以 ...

  8. 基于多目标粒子群算法的配电网储能选址定容(含MATLAB程序)

    一.主要内容 程序是对文章<基于多目标粒子群算法的配电网储能选址定容>的方法复现,具体内容如下: 以系统节点电压水平(电网脆弱性).网络损耗以及储能系统总容量为目标建立了储能选址定容优化模 ...

  9. 电力系统无功优化MATLAB程序基于粒子群算法IEEE30配电网

    电力系统无功优化MATLAB程序基于粒子群算法IEEE30配电网 (1)该程序为基于粒子群算法的配电网无功优化程序,可达到有效降低网损的目的. (2)程序以IEEE-30节点为算例.以网损最小为目标函 ...

  10. 基于粒子群算法的配电网重构研究matlab程序

    基于粒子群算法的配电网重构研究matlab程序 参考文献:基于改进灰狼算法的含分布式电源配电网重构研究 (本文未考虑分布式电源) 摘要:使用基本环矩阵编码的智能优化算法在处理配电网重构问题中,通常使用 ...

最新文章

  1. IBM websphere MQ远程队列的简单配置
  2. Ranger开源流水线docker化实践案例
  3. 【BZOJ3729】Gty的游戏,博弈+splay
  4. java springmvc 后台读取文件,springMVC
  5. compile error
  6. hibernate数据库扫描实体类的配置
  7. 帆软高级函数应用之其他函数
  8. 支付宝的授权回调目录只能配置一个域名吗_腾讯QQ授权登录(asp.net + angular)...
  9. 设计模式——仲裁模式
  10. 生成模型与判别模型详解
  11. Hduoj1011【树状DP】
  12. 技术专栏|室内定位不用愁,UWB来拯救!
  13. SATA Link Power Management的partial和slumber power state区别
  14. 测试平台开发:(14)测试用例管理功能设计
  15. 预测:2019年最值得关注的程序语言是什么?
  16. ​Intel 150亿美元买下Mobileye;雅虎原CEO梅耶尔离职了│IoT黑板报
  17. 高仿QQ讨论组头像拼图
  18. Oracle学习之建表
  19. excel的偏移函数offset与对应相乘函数sumproduct
  20. 无法将“XXX”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。 对这个问题的解决方法

热门文章

  1. MySQL 8个character_set变量的基本作用
  2. 带你了解HTTP协议(一)
  3. 微服务学习之消费模块【Hoxton.SR1版】
  4. 算法的时间复杂度和空间复杂度(java)
  5. python赋值运算符_解释一下python中的赋值运算符
  6. c语言的api_为什么C语言依然是必学的编程语言?
  7. 电脑系统哪个好用_火绒杀毒,真有那么好用吗?
  8. JavaScript:判断两个日期之间的差距天数
  9. 实战Vue:ToDoList
  10. CSS:实现闪烁效果动画