改进蚁群算法在配电网故障定位中的应用
2022-05-02吴恬微
吴恬微
(安徽理工大学 电气与信息工程学院,安徽 淮南 232000)
0 引言
配电网是电力系统的重要组成部分,是保证供电质量、提高电网运行效率的关键环节[1].一旦发生故障,会给人们的生活带来极大的不便,因此快速、精准地定位配电网故障对于提升电网运行的可靠性具有重要的意义.随着配电网自动化程度的日益提高,通过FTU上传的故障信息来确定故障区段的算法成为了研究的热点[2],即:根据馈线上安装的FTU对线路故障信息进行检测,再把检测结果上传到SCADA终端,通过故障定位算法定位出故障区段.
目前,解决故障定位的算法主要有两种:矩阵算法和智能算法.矩阵算法的原理是把配电网拓扑结构与故障信息相结合,生成故障判别矩阵,通过对故障判别矩阵的综合分析获得故障区段的位置.矩阵算法计算速度快,但对上传的故障信息准确度要求高,容错性差[3].智能算法有遗传算法、蚁群算法等.遗传算法容错性较高,但搜索过程复杂,效率较低[4];蚁群算法能够快速发现可行解,避免出现早熟收敛,但是搜索时间较长,容易出现停滞现象[5].
本文针对这一问题对传统蚁群算法进行改进,提出了改进的ACOP算法,设置了初始信息素,并采用动态自适应调整信息素的方法,引入负信息素更新机制,整体采用正负信息素更新机制.经过仿真验证表明了该算法的有效性和可行性.
1 蚁群算法的基本原理
蚁群算法(ACO)是Dorigo提出的一种模拟进化算法,其基本思想是使用一些本质上类似于真实蚂蚁的人工蚂蚁来寻找最优路径,根据蚁群在搜索食物过程中所体现出的寻优能力来解决一些系统优化中的困难问题.
(1)
蚂蚁每完成一次搜索后,需要对路径上残留的信息素进行更新,在t+n时刻路径(i,j)上的信息素浓度为
τij(t+n)=
(1-ρ)τij(t)+Δτij(t),
(2)
(3)
式中:ρ表示信息素挥发因子;1-ρ表示信息素残留因子;Δτijk(t)表示蚂蚁k在完成一次迭代之后路径(i,j)上的信息素量.
根据AntCycle模型,Δτij(t)的计算公式为
(4)
其中:Q表示信息素强度;Lk表示蚂蚁k在本次循环中所走路径的总长度.
2 改进的蚁群算法
2.1 蚁群算法运用于配电网故障定位的基本原理
蚁群算法是一个寻优算法,容错能力较高,当故障信息出现畸变的时候,仍然可以准确地找出故障区域.蚁群算法最先应用于解决旅行商问题(TSP),在随后的发展中,也成功地解决了其他多个组合优化问题.配电网的故障定位同样是一个组合优化问题,本质上就是假设出各设备的故障状态,使它最能符合FTU上传的故障信息.
为了使用蚁群算法来实现故障定位,本文把配电网故障定位转化为TSP问题来求解.TSP问题可以描述为:如果一个推销员要访问一系列城市,如何找到一条最短的路线不重复地经过所有城市.对应到配电网中,假设每一条馈线相当于一个城市,每条馈线都有无故障和故障两个状态(用0和1来表示),蚂蚁通过判断这两个状态上的信息素浓度,按照“轮盘法”选择出每条馈线的状态,蚂蚁选择所有馈线状态的组合是一个可能解,接着计算该可行解的评价函数值. 假设有n个节点,每个馈线对应两种状态,那么一只蚂蚁访问完n个节点就有2n个可能解,在计算完每个可能解的评价函数值之后,根据评价函数值的大小来选择各馈线状态上释放信息素的浓度大小.当评价函数值越小时,说明该状态的组合越符合FTU上传的故障信息,释放的信息素也就越多;反之,当评价函数值越大时,释放的信息素就越少.
2.2 构造评价函数
在配电网故障定位中,构造评价函数是为了反映FTU上传的故障信息与假设的故障状态之间的差异,得出的评价函数值可以验证该算法是否取得了最优解,本文构建的评价函数如下[6]:
(5)
式中,F(i)表示第i个解对应的适应度.
未发生故障时,
(6)
考虑到发生多点故障时,上述评价函数可能会导致误判,本文在评价函数中引入故障诊断理论中最小集的概念[7],进一步降低误判的概率,使期望的状态组合与FTU上传的故障信息之间的误差最小.
(7)
2.3 算法的主要流程
在实际配电网中,大多为单点故障,发生三点以上故障的概率很低,本文对三点故障及以下同时故障的情形进行分析.配电网故障定位蚁群算法流程图如图1所示.
图1 配电网故障定位蚁群算法流程图
2.4 改进的蚁群算法
本文将从以下两个方面出发,提出一种基于设置初始信息素浓度、动态信息素更新的高速收敛蚁群优化算法,简称ACOP算法.
(1)设置初始信息素
在蚁群算法中,每一次循环都需要蚂蚁从起点出发,通过一系列寻优行为到达终点,由于算法初始化时信息素比较匮乏,导致初始解不具备优越性,很难在较短时间内找到一条较好的路径.
当配电网中某一个区段发生故障时,假设共有n个区段,对每个区段不同路径的初始信息素浓度进行设定,发生故障区段初始信息素浓度为a0,未发生故障区段的初始信息素浓度为b0,则
(8)
由于评价函数值越小,最终的解和最优解就最接近,同时FTU上传的故障信息中含有的启发因素可以指导蚂蚁的搜索,因此蚂蚁倾向于选择评价函数值小的故障点,将其转变为初始信息素,Fi为第i个区段发生故障时的评价函数,构造公式如下:
(9)
将公式(7)、(8)相结合,构造初始信息素公式如下:
(10)
(11)
其中,τi(a0)表示第i个区段上发生故障路径的初始信息素浓度;τi(b0)表示第i个区段上未发生故障区段路径的初始信息素浓度.
(2)动态更新信息素浓度
由于蚂蚁间的相互联系以及搜索主要靠信息素,信息素的更新策略是决定收敛速度的关键.针对蚁群算法易陷入局部最优并出现停滞现象的特点,本文采用动态自适应调整信息素的方法[8],使尽可能地扩大搜索空间和快速找到最优解达到一种平衡.
公式(4)中的信息素强度Q为常数项,本文采用时变函数Q(t)来代替Q,Q(t)会随着蚂蚁搜索过程的变化而做实时的调整,即:
(12)
由公式(1)可得,当信息素强度影响因子α为0时,即忽略信息素的影响,只有路径的信息起作用,相当于最短路径寻优,有
(13)
当能见度因子β为0时,即启发函数的作用为0,此时相当于没有目的的随机搜索.有
(14)
在搜索的过程中,信息素会随之蒸发或增多.选取时变函数Q(t)来代替Q,从而达到在解空间中的随机搜索和受信息素启发作用的平衡状态,设置阶梯函数如下:
(15)
为了避免在搜索的初期得到局部最优解,需要对正反馈机制进行一定的抑制,设定Q(t)为负数,使系统中加入负反馈信息,使算法的搜索范围进一步扩大.
3 算法仿真
本文使用如图2所示的IEEE33节点配电网系统模型来验证此算法,使用MATLAB 2018b仿真软件,编写相应的算法程序,测试算法性能.
图2 IEEE33节点配电网系统
该节点配电网系统包括33个节点和33支路,S表示主电源;节点S1~S32表示开关(包括分段开关和断路器),并且安装有FTU;S1~S32节点之间的区段L1~L32表示配电网的馈线区段.根据ACOP算法的原理,在编写的MATLAB程序中设置相关参数:信息素强度影响因子α=1,能见度因子β=1,信息素挥发因子ρ=0.5,权重系数ω=0.07.
3.1 单点故障验证
当区段发生单点故障时,开关上安装的FTU把故障信息上传到SCADA中心,根据ACOP算法的故障定位方法得到故障区段,并显示出定位的结果.假设发生了2次单点故障,同时考虑到FTU上传数据存在误差,对含畸变的FTU单点故障也进行了仿真分析.每个测控点的状态值为输入量,各设备的状态为输出量,1表示检测到过电流信息,0表示未检测到过电流信息,测试结果如表1所列.
表1 单点故障测试结果
假设节点2与节点3之间的馈线区段发生故障,则故障信息为:11000 00000 00000 00111 10000 00000 000,运行算法程序,各设备的状态为:01000 00000 00000 00000 00000 00000 000,说明L2区段发生了故障.假设节点10和节点11之间的馈线区段发生故障,则故障信息为:11111 11111 00000 00111 11111 11111 111,当FTU上传的信息发生故障,假设节点12的故障信息发生了畸变(0畸变成1),节点30的故障信息发生了畸变(1畸变成0),故障信息就变成了:11111 11111 01000 00111 11111 11110 111,运行程序后,各设备的状态为:00000 00001 00000 00000 00000 00000 000,即L10区段发生了故障,FTU畸变的信息对于算法运行的结果没有影响.综上所述,无论FTU上传的有没有发生畸变,该算法都能准确地定位出故障区段的位置,容错性较好.
3.2 多点故障验证
尽管在配电网中,发生的故障大多为单点故障,但是不能忽略发生多点故障的可能性.假设发生两点故障和三点故障各两次,将FTU采集的故障信息上传到控制中心,分别代入到ACOP算法程序中,得到故障区段结果.两组故障均设置了FTU发生畸变时的对照组,测试结果如表2所列.
表2 多点故障测试结果
发生两点故障时:假设节点4与节点5、节点28与节点29间的馈线区段发生故障,则故障信息为:11111 10000 00000 00111 11111 11100 000,运行算法程序,各设备的状态为:00010 00000 00000 00000 00000 00100 000,说明L4区段和L28区段发生了故障.
同理,假设节点19和节点20、节点23和节点24之间的馈线区段发生故障,则故障信息为:11000 00000 00000 00110 01100 00000 000,当FTU上传的信息发生故障,假设节点16的故障信息发生了畸变(0畸变成1),故障信息就变成:11000 00000 00000 10110 01100 00000 000,运行程序后,各设备的状态为:00000 00000 00000 00010 00100 00000 000,即L19区段和L23区段发生了故障,与预期结果一致.
发生三点故障时的分析过程同上.
根据表2的多点故障测试结果可知, ACOP算法同样适用于两点故障和三点故障,并且在FTU上传的信息出现畸变时,仍然能够准确地定位出故障区段的位置.
3.3 算法性能对比
用MATLAB编写经典的蚁群算法(ACO)、遗传算法(GA)和粒子群算法(PSO)的程序,与改进的蚁群算法(ACOP)从平均迭代次数、迭代时间和算法精确度3个方面进行对比,以单点故障为例,每个算法程序运行50次,各算法的收敛特性对比如图3所示,数据的总体运行结果如表3所列.结果表明,改进的蚁群算法可以最快找到最优解,优越性较高.
由图3可以看出,在算法运行的过程中,适应度值随着迭代次数的增加而减少,直到达到最小的适应度值,其中,ACOP算法的迭代次数为15次,其他算法的迭代次数分别为:26次、37次和42次,改进的蚁群算法的迭代次数远远小于其他3种算法,最快找到最优解.
图3 算法收敛特性对比
由表3可知,在运行了50次程序后,相比于传统的蚁群算法、遗传算法和粒子群算法,改进的蚁群算法的平均迭代次数最少,迭代时间最短,正确度最高,具有较高的稳定性,有效地提高了配电网故障定位的效率和准确性.
表3 算法性能测试结果
4 结语
本文通过比对TSP问题与配电网故障定位中相近的地方,用改进的蚁群算法来解决配电网故障定位问题.改进后的算法解决了扩大搜索空间和快速找到最优解的矛盾,避免了陷入局部最优,由于蚁群算法具有并行搜索及信息正反馈的特点,提高了寻找最优解的速度.通过33节点配电网算例分析表明,改进的蚁群算法适用于单点故障及多点故障类型,并且在FTU上传信息出现少量畸变时仍能找到正确的故障区段,但是该方法对FTU等设备采集信息的精度要求较高,在算法性能上仍有改进的空间.