基于MATLAB神经网络的电能表故障分类方法及其装置
技术领域
本发明涉及电能表技术领域的一种故障分类方法,尤其涉及一种基于MATLAB神经网络的电能表故障分类方法,还涉及应用该方法的基于MATLAB神经网络的电能表故障分类装置。
背景技术
智能电网的发展对智能电能表功能设计提出越来越多的要求,软件的规模及复杂性随之增加,同时由于软件引起的设备故障率逐步攀升。由于软件故障涉及到的对外接口众多,自身体系庞大,编程指令复杂等,导致故障种类繁多,所以,如果能够快速地检测出智能电能表的各种故障,分类整理,最后由相关专业的人员根据类别进行故障排除,就会非常有利于智能电能表的推广、使用和发展。
目前电力设备生产商电能表的软件故障分类主要靠手工进行,手工分类存在任务量巨大、检测效率低等缺点。
发明内容
为解决现有的电能表故障分类存在任务量巨大、检测效率低的技术问题,本发明提供一种基于MATLAB神经网络的电能表故障分类方法及其装置。
本发明采用以下技术方案实现:一种基于MATLAB神经网络的电能表故障分类方法,其包括以下步骤:
S1:提取电能表常见的故障类型及其对应的软硬件特征,并建立故障种类矩阵和对应的特征数据矩阵;
S2:将所述故障种类矩阵中的故障类型作为神经网络的期望输出,所述特征数据矩阵中的软硬件特征作为神经网络的输入,分别进行编码以作为所述神经网络的各组训练样本;
S3:确定所述神经网络的输入层神经元数目和输出层神经元数目,并根据所述输入层神经元数目和所述输出层神经元数目计算出所述神经网络的隐含层神经元数目;
S4:根据所述输入层神经元数目、所述输出层神经元数目、所述隐含层神经元数目,构建所述神经网络,配置所述神经网络的训练参数,并利用各组训练样本对所述神经网络进行训练,得到训练后的神经网络;
S5:使用训练后的神经网络判断出电能表软硬件特征所对应的故障类型并进行分类。
本发明通过先提取常见故障类型和软硬件特征而建立相应的矩阵,再将故障类型作为神经网络的输出,软硬件特征作为输入进行编码以获得训练样本,然后根据输入输出层的神经元数目计算隐含层神经元数目,再通过MATLAB构建神经网络并对网络进行训练,最后通过训练后的神经网络对故障类型进行分类,解决了现有的电能表故障分类存在任务量巨大、检测效率低的技术问题,得到了分类效率高,故障分类效果好,而且算法简洁有效,能大量处理分类任务的技术效果。
作为上述方案的进一步改进,所述神经网络具有三层结构,所述三层结构分别为输入层、一个隐含层以及输出层。
进一步地,所述输入层包括8种常见软硬件特征,8种常见软硬件特征为4组且分别为未收到输入X1和输入接收错误X2、无输出X3和输出结果错误X4、数据丢失X5和数据存储错误X6、无法启动X7和非正常中断X8,且用1表示有此故障,0表示无此故障;将8种常见软硬件特征编码组成256种特征值以作为各组训练样本。
再进一步地,所述输出层包括4种故障类型,且4种故障类型分别为输入型故障Y1、输出型故障Y2、数据故障Y3、程序故障Y4,且用1、2、3、4表示分别发生了相应的其中的某一类故障类型。
作为上述方案的进一步改进,所述隐含层神经元数目的计算公式为:
式中,M为所述隐含层神经元数目,N为所述输入层神经元数目,L为所述输出层神经元数目;α为常数,且取值范围为1~10。
作为上述方案的进一步改进,所述隐含层神经元数目的计算公式为:
M=log2N
式中,M为所述隐含层神经元数目,N为所述输入层神经元数目。
作为上述方案的进一步改进,所述隐含层神经元数目的计算公式为:
式中,M为所述隐含层神经元数目,N为所述输入层神经元数目,L为所述输出层神经元数目。
作为上述方案的进一步改进,所述输入层神经元数目为8,所述输出层神经元数目为4,所述隐含层神经元数目为6;所述训练参数包括:
学习速率,其为0.05;
期望的误差,其为10-5;以及
迭代次数,其为5000。
作为上述方案的进一步改进,基于MATLAB构建所述神经网络,并通过traingrp训练函数对构建的神经网络进行训练;在步骤S5之前,还进行以下步骤:
将所述神经网络的实际输出与期望输出进行比较;
在所述输出层的神经元的实际输出结果与期望输出结果一致时,判定故障分类成功;
在所述实际输出结果与所述期望输出结果不一致时,判定未正确分类。
本发明还提供一种基于MATLAB神经网络的电能表故障分类装置,其应用于上述任意所述的基于MATLAB神经网络的电能表故障分类方法,其包括:
提取模块,其用于提取电能表常见的故障类型及其对应的软硬件特征;
矩阵建立模块,其用于根据所述提取模块的提取结果建立故障种类矩阵和对应的特征数据矩阵;
编码模块,其用于将所述故障种类矩阵中的故障类型作为神经网络的期望输出,所述特征数据矩阵中的软硬件特征作为神经网络的输入,分别进行编码以作为所述神经网络的各组训练样本;
神经元数目计算模块,其用于确定所述神经网络的输入层神经元数目和输出层神经元数目,并根据所述输入层神经元数目和所述输出层神经元数目计算出所述神经网络的隐含层神经元数目;
构建模块,其用于根据所述输入层神经元数目、所述输出层神经元数目、所述隐含层神经元数目,构建所述神经网络,配置所述神经网络的训练参数;
训练模块,其用于利用各组训练样本对所述神经网络进行训练,得到训练后的神经网络;以及
分类模块,其用于使用训练后的神经网络判断出电能表软硬件特征所对应的故障类型并进行分类。
相较于现有的,本发明的基于MATLAB神经网络的电能表故障分类方法及其装置具有以下有益效果:
1、该基于MATLAB神经网络的电能表故障分类方法,先提取常见故障类型和对应的软硬件特征而分别建立相应的矩阵,再将故障类型作为神经网络的期望输出,软硬件特征作为输入分别进行编码以获得训练样本,然后根据输入输出层的神经元数目计算隐含层神经元数目,再然后基于MATLAB构建神经网络并对网络进行训练,最后通过训练后的神经网络对故障类型进行分类。这样,该方法就无需人为手工进行分类,因而提高电能表故障分类效率,故障分类效果好,而且算法简洁有效,能大量处理分类任务,能够满足分类所产生的巨大任务量,提高智能电能表的各种故障的检测效率,有利于智能电能表的推广、使用和发展。
2、该基于MATLAB神经网络的电能表故障分类装置,其有益效果与上述电能表故障分类方法的有益效果相同,在此不再做赘述。
附图说明
图1为本发明实施例1的基于MATLAB神经网络的电能表故障分类方法的流程图。
图2为图1所示出的电能表故障分类方法所构建的神经网络的结构图。
图3为本发明实施例1的基于MATLAB神经网络的基本训练过程图。
图4为本发明实施例1的基于MATLAB神经网络训练过程中的误差随时间变化曲线图。
图5为本发明实施例1的基于MATLAB神经网络的电能表故障最终分类结果。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
实施例1
请参阅图1以及图2,本实施例提供了一种基于MATLAB神经网络的电能表故障分类方法,该方法应用于智能电能表的软件故障分类,也应用于硬件故障分类,还应用于软硬件结合的故障分类。该分类方法基于MATLAB神经网络对电能表故障进行分类,并且包括以下这些步骤,即步骤S1-S5。其中,神经网络具有三层结构,三层结构分别为输入层、一个隐含层以及输出层。在其他实施例中,神经网络可以具有更多的隐含层结构,这可以根据实际需要进行选择。
步骤S1:提取电能表常见的故障类型及其对应的软硬件特征,并建立故障种类矩阵和对应的特征数据矩阵。在本实施例中,这里的软硬件特征含有软件特征,也含有硬件特征,还含有这两者结合的特征。电能表常见的故障类型可以是系统总结性的故障类型,即在实际电能表使用过程中所产生的各种故障,例如电能表时钟时间错误,电能表计量错误等。故障种类矩阵和特征数据矩阵都是根据提取数据所产生的,矩阵布置方式可以根据实际需要进行确定。这两个矩阵之间存在关联,即每种故障,无论是硬件故障还是软件故障,都会有相应的特征显现出来。
步骤S2:将故障种类矩阵中的故障类型作为神经网络的期望输出,特征数据矩阵中的软硬件特征作为神经网络的输入,分别进行编码以作为神经网络的各组训练样本。在本实施例中,通过二进制编码以产生训练样本。而且,将4种常见的故障类型作为神经网络的期望输出,包括:输入型故障Y1、输出型故障Y2、数据故障Y3、程序故障Y4,且用1、2、3、4表示分别发生了其中的某一类故障类型。
而且,将8种(4组)常见的软硬件特征作为神经网络的输入,即输入层包括这8种常见软硬件特征,且8种4组常见软硬件特征分别为未收到输入X1和输入接收错误X2、无输出X3和输出结果错误X4、数据丢失X5和数据存储错误X6、无法启动X7和非正常中断X8,且用1表示有此故障,0表示无此故障。即、神经网络输入层包括的8种(4组)软硬件特征与输出层包括的4种故障类型的对应关系为:未收到输入X1和输入接收错误X2对应输入型故障Y1,无输出X3和输出结果错误X4对应输出型故障Y2,数据丢失X5和数据存储错误X6对应数据故障Y3,无法启动X7和非正常中断X8对应程序故障Y4。因此,将8种常见软硬件特征编码组成256种特征值以作为各组训练样本。
步骤S3:确定神经网络的输入层神经元数目和输出层神经元数目,并根据输入层神经元数目和输出层神经元数目计算出神经网络的隐含层神经元数目。在本实施例中,输入层神经元数目为8,输出层神经元数目为4,隐含层神经元数目为6。在其他实施例中,隐含层神经元数目可以根据实际使用效果进行选取,相应的计算公式也同样根据效果好坏而优化确定。
步骤S4:根据输入层神经元数目、输出层神经元数目、隐含层神经元数目,构建神经网络,配置神经网络的训练参数,并利用各组训练样本对神经网络进行训练,得到训练后的神经网络,具体训练过程如图3所示。在本实施例中,设置的神经网络训练参数包括:学习速率,其用net.trainParam.lr表示,且为0.05;期望的误差,其用net.trainParam.goal表示,且为10-5;迭代次数,其用net.trainParam.epochs表示,且为5000。在其他实施例中,训练参数还可以包括更多,具体应根据训练标准进行选择,使最终训练后的神经网络能够满足实际需要。
另外,本实施例利用traingrp训练函数对构建的神经网络进行训练,将神经网络的实际输出与期望输出进行比较;在输出层的神经元的实际输出结果与期望输出结果一致时,判定故障分类成功;在实际输出结果与期望输出结果不一致时,判定未正确分类。通过训练,神经网络的权值逐渐被修正,实际的输出与标准输出之间的误差也逐渐缩小,当误差缩减到10-5时,训练结束,训练过程中误差的变化如图4所示。
步骤S5:使用训练后的神经网络判断出电能表软硬件特征所对应的故障类型并进行分类,最终分类结果如图5所示。本步骤是使用训练好的模型进行实际测试的过程,而步骤S1到S4是训练的过程。
综上所述,本实施例的基于MATLAB神经网络的电能表故障分类方法具有以下优点:
该基于MATLAB神经网络的电能表故障分类方法,先提取常见故障类型和对应的软硬件特征而分别建立相应的矩阵,再将故障类型作为神经网络的期望输出,软硬件特征作为输入分别进行编码以获得训练样本,然后根据输入输出层的神经元数目计算隐含层神经元数目,再然后基于MATLAB构建神经网络并对网络进行训练,最后通过训练后的神经网络对故障类型进行分类。这样,该方法就无需人为手工进行分类,因而提高电能表故障分类效率,故障分类效果好,而且算法简洁有效,能大量处理分类任务,能够满足分类所产生的巨大任务量,提高智能电能表的各种故障的检测效率,有利于智能电能表的推广、使用和发展。
实施例2
本实施例提供了一种基于MATLAB神经网络的电能表故障分类方法,该方法与实施例1的方法相似,区别在于本实施例提供了隐含层神经元数目的计算公式,而且计算公式为:
式中,M为隐含层神经元数目,N为输入层神经元数目,L为输出层神经元数目;α为常数,且取值范围为1~10。
例如,假如输入层神经元数目为8,输出层神经元数目为6,并且α取2,则隐含层神经元数目M=4+2=6。但是,该公式可能会计算出小数部分,因此,在一些实施例中对该公式优化后得到以下优化公式:
式中,INT()为向上取整函数,这样无论
是整数还是小数,最终计算出的M只可能是整数。此时,α只能取整。
当然,在另一些实施例中,优化公式还可以为:
这样,无论是
还是α,其都可以是整数或者小数,可以方便计算。
很明显,本实施例的方法提供的计算公式能够快速计算出隐含层神经元数目,这样只需要外界输入另外两层的神经元数目就可以直接求出隐含层神经元数目,而且计算方法简单,可以便于构建神经网络,方便进行故障分类。
实施例3
本实施例提供了一种基于MATLAB神经网络的电能表故障分类方法,该方法与实施例2的方法类似,区别在于隐含层神经元数目的计算公式不同。在本实施例中,计算公式为:
M=log2N
很明显,本实施例中仅仅通过输入层神经元数目确定隐含层神经元数目,无需输出层神经元数目的信息,这对于一些实施例中隐含层神经元仅仅与输入层神经元相关联而言,计算公式更加合理,也符合神经网络的实际构建环境。
当然,这里可以对公式进行优化,且优化后公式为:M=INT(log2N)。
实施例4
本实施例提供了一种基于MATLAB神经网络的电能表故障分类方法,该方法与实施例2的方法类似,区别在于隐含层神经元数目的计算公式不同。在本实施例中,计算公式为:
从上述公式可以看出,本实施例中未加入常数,这样可以简化公式。当然,该计算公式也可以进行优化,优化后公式为:
实施例5
本实施例提供了一种基于MATLAB神经网络的电能表故障分类方法,该方法与实施例2、3、4的方法类似,区别在于隐含层神经元数目的计算公式不同。在本实施例中,计算公式为:
式中,INT[]为向上取整函数,a、b、c为取值范围为[0,1]的权重系数,而且满足a+b+c=1。
本实施例结合实施例2-4,所能够提供的隐含层神经元数目更加优化,而且能够满足多种计算需求,最终的分类效果也更佳。
实施例6
本实施例提供了一种基于MATLAB神经网络的电能表故障分类装置,该装置应用实施例1-5中所提供的任意一种基于MATLAB神经网络的电能表故障分类方法,而且该装置包括提取模块、矩阵建立模块、编码模块、神经元数目计算模块、构建模块、训练模块以及分类模块。
提取模块用于提取电能表常见的故障类型及其对应的软硬件特征。矩阵建立模块用于根据提取模块的提取结果建立故障种类矩阵和对应的特征数据矩阵。编码模块用于将故障种类矩阵中的故障类型作为神经网络的期望输出,特征数据矩阵中的软硬件特征作为神经网络的输入,分别进行编码以作为神经网络的各组训练样本。神经元数目计算模块用于确定神经网络的输入层神经元数目和输出层神经元数目,并根据输入层神经元数目和输出层神经元数目计算出神经网络的隐含层神经元数目。构建模块用于根据输入层神经元数目、输出层神经元数目、隐含层神经元数目,构建神经网络,配置神经网络的训练参数。训练模块用于利用各组训练样本对神经网络进行训练,得到训练后的神经网络。分类模块用于使用训练后的神经网络判断出电能表软硬件特征所对应的故障类型并进行分类。这些模块可以相互组合成新的模块,单个模块也可以拆分为多个单元。
实施例7
本实施例提供一种计算机终端,其包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序。处理器执行程序时实现实施例1的基于MATLAB神经网络的电能表故障分类方法的步骤。
实施例1的方法在应用时,可以软件的形式进行应用,如设计成独立运行的程序,安装在计算机终端上,计算机终端可以是电脑、智能手机、控制系统以及其他物联网设备等。实施例1的方法也可以设计成嵌入式运行的程序,安装在计算机终端上,如安装在单片机上。
实施例8
本实施例提供一种计算机可读存储介质,其上存储有计算机程序。程序被处理器执行时,实现实施例1的基于MATLAB神经网络的电能表故障分类方法的步骤。
实施例1的方法在应用时,可以软件的形式进行应用,如设计成计算机可读存储介质可独立运行的程序,计算机可读存储介质可以是U盘,设计成U盾,通过U盘设计成通过外在触发启动整个方法的程序。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。