基于ABC-SVM算法的光伏阵列故障诊断
2021-11-20刘开石李田泽王梦婕徐立宾
刘开石,李田泽,刘 东,王梦婕,徐立宾
(山东理工大学电气与电子工程学院,山东淄博 255049)
随着大型光伏装置投入使用,光伏阵列作为光伏发电系统中最重要的部分,对它的电气参数监测和故障类型诊断显得尤为重要。由于光伏组件自身的特性且工作环境较为恶劣,易受环境影响发生开路、短路等各种故障,影响光伏组件的使用寿命[1]。因此,快速准确地检测出光伏阵列的故障可以提高发电效率,避免造成不必要的损失。
光伏阵列的故障主要集中在直流侧,目前一些智能化光伏电站直流侧监控已达到了组件级[2]。利用光伏组件的实时运行数据对光伏阵列状态分析检测是现在的研究热点,以智能算法为核心的故障诊断方法是今后的发展趋势。文献[3-5]提出了基于BP 神经网络的故障诊断方法,该方法操作简单、成本低、检测效果较好,但容易陷入局部最优解且收敛速度较慢。文献[6-7]利用粒子群算法优化神经网络方法对光伏阵列故障进行诊断,加快了收敛速度,提升了预测精度。文献[8]基于快速采样主成分分析法,通过检测电流信号和工作点状态来识别故障类型。文献[9]通过将光伏阵列数据输入进决策树模型并进行训练,实现对故障的检测和诊断。
支持向量机(SVM)理论通过结构风险最小化原理和统计学习来提高分类泛化能力,已广泛应用于模式识别、实时预测、故障诊断等领域[10-11]。SVM 的参数选取对其性能起着决定性作用,而参数的选择本质上是一个优化问题,为获得最优SVM 参数,利用人工蜂群(ABC)算法进行寻优。本文利用Matlab 仿真模拟故障,获取样本数据,构建ABC-SVM 光伏阵列故障诊断模型,将光伏阵列故障特征向量输入模型进行训练并验证。
1 算法原理
1.1 支持向量机
SVM 是一种基于结构风险最小化通过高维运算和内积运算建立的算法,是机器学习领域的经典分类算法之一,具有较好的分类识别能力,其原理如图1 所示。
图1 SVM分类图
图1 中的空心圈和实心圈分别代表两类不同的样本,实线为两类样本的分界线,即超平面,两条虚线分别对应穿过两类样本且距超平面最近的两个平面,它们之间的间隔即为分类间隔(margin),虚线上的样本数据就是待分类问题的支持向量。支持向量机的原理就是找到一个最优分类超平面,使得错误率最低,分类间隔最大。
设有线性可分的训练样本数据集(xi,yi),i=1,2,…,n,xi∈Rd,分类超平面方程记为wx+b=0,寻找最优超平面可通过转化为求解式(1)的约束问题来实现:
式中:w为超平面的权值向量;b是偏置。在实际问题中,会遇到线性不可分的情况,可能会导致硬间隔分类失败,因此引入松弛变量ζ 来放松约束条件,允许某些数据样本点超出分类平面。同时引入非负的惩罚因子C对ζ 加以约束,确保分类的准确率。
引入拉格朗日函数,将二次规划问题转化为式(2)对偶问题求解:
式中:α 是拉格朗日乘子,若训练样本数据集是非线性不可分的,为了得到准确的分类结果,要将原始空间的训练样本映射到较高维的空间。实现这一过程的途径是核函数,则式(2)需要转变为分类函数式(3):
式中:K(xi,xj)为核函数。核函数的选择将直接影响SVM 的性能,决定分类的准确性。常用的核函数有多项式核函数、径向基核函数(RBF)、高斯核函数(GAUSS)和sigmoid 核函数。RBF 核函数具有较好的性能[12],本文选择RBF 核函数作为支持向量机的核函数,并采用ABC 算法实现对惩罚因子C和核函数参数g进行寻优。
1.2 人工蜂群算法
人工蜂群算法是一种根据蜜蜂觅食原理提出的算法。在该算法中,蜜蜂被分为采蜜蜂(EF)、观察蜂(UF 或待工蜂)、侦察蜂3 种,各蜜源位置均代表着优化问题中的一个可能解,而蜜源处的花蜜量对应各个解的适应度。蜜蜂寻找蜜源的过程即该算法寻找最优解的过程[13]。
人工蜂群算法初始化并随机产生SN个初始解。完成初始化后,采蜜蜂会遍历搜索全部蜜源。再次遍历搜索过程中,采蜜蜂会记录各蜜源的花蜜量并将进行收益率评估,完成蜜源位置的更新操作。完成搜索后,采蜜蜂会回到蜂巢,将收集到的信息(蜜源位置,花蜜量的多少等)传递给观察蜂。观察蜂根据收到的信息,根据与花蜜量相关的概率来选择一个蜜源,并在该蜜源附近区域进行下一次蜜源搜索,直到找到花蜜量更多的蜜源。通过不断的操作,直到找到花蜜量最多的蜜源,也就是最优解。当某个新解经历limit次的循环后仍未获得改进时,该解就会被放弃,该解处的采蜜蜂会转换为侦察蜂。
1.3 ABC-SVM 诊断模型的构建
在采用ABC 算法优化SVM 参数的过程中,蜂群中采蜜蜂的搜索范围即为SVM 参数寻优的范围,每一个蜜源的位置均代表一个可能解。SVM 需要优化的参数是惩罚因子和核函数参数,因此可以用一个二维向量(C,g)来表示蜜源位置。ABC 对SVM 参数寻优的过程如下[14-15]:
(1)数据归一化:输入的数据单位不同,数值相差较大,不利于分类,因此对输入的数据做归一化处理,将每个输入数据处理成[0,1]区间内的数据,便于对其做进一步的处理。具体公式为:
式中:ymin和ymax分别为范围下限0 和上限1;xmin和xmax分别为数据集矩阵每一行的最小值和最大值;xi为待归一化的输入数据。再将归一化后的数据集分成训练数据和测试数据两部分并输入。
(2)算法初始化:确定惩罚因子C和核函数参数g的取值范围;设置ABC 算法的基本参数,如蜂群规模SN,蜜源(解)数量NP,最大循环次数limit,最大迭代次数M,并对各蜜源的适应度做出评估。
(3)采蜜蜂根据式(5)在各随机解附近发现新解并保存。若vij适应度大于xij的适应度,则把vij赋值给xij,否则不改变。
(4)观察蜂选择蜜源,记录全局最优解和对应的适应度值,并更新蜜源的位置。
(5)若采蜜蜂对蜜源的搜索次数超过设定最大循环次数limit仍未更新,则舍弃该解,
该处的采蜜蜂转换为观察蜂,并随机生成一个新解来替换。
(6)判断算法是否满足终止条件,若是满足或循环次数达到最大迭代次数M,则输出最优解并结束;否则,转到第(3)步再一次计算。
(7)将获得的最优解作为SVM 的最优参数代入,对测试数据进行训练,输出分类结果,验证参数的准确性。
2 光伏阵列故障分析
2.1 光伏阵列故障样本选取提取
为模拟仿真光伏阵列在各种环境下的故障特性并获得数据,以1 000 W/m2光照强度,25 ℃温度为参考标准,在Matlab/Simulink 内建立了仿真光伏阵列模型,如图2 所示[16-17]。
图2 光伏阵列故障模拟
仿真模拟了四种光伏阵列实际运行中常见的故障:电池间的线路由于天气等原因造成的绝缘层腐蚀、电池内部材料损坏等造成的组件短路,在仿真系统中通过将模块短接来模拟;因外力或电池原件自身潜在的损伤造成的开路故障,通过在一条支路中串联一个无穷大的电阻来模拟;光伏阵列因局部遮阴造成的热斑故障,也就是光伏阵列中各个组件所接收的光照强度不同,通过改变光伏组件的局部光照强度值来模拟;由于光伏阵列所处环境较为恶劣且使用时间较长引发的光伏电池老化故障,通过在支路中串联电阻来模拟[18]。仿真得到的I-V特性曲线如图3 所示。
图3 四种故障下光伏阵列的输出特性曲线
由图3 可知,对比正常状态下,发生故障的光伏阵列的输出特性会有一个或多个显著变化。例如:在局部短路状态下,光伏阵列的短路电流不变,但开路电压减小;在局部遮阴状态下,光伏阵列的I-V特性曲线呈阶梯形变化,最大功率点的电流、电压均发生变化。因此,选用短路电流Isc、开路电压Uoc、最大功率点电流Im、最大功率点电压Um四个特征作为输入量,可以准确区分这四种故障类型。
2.2 故障样本的分类
通过在Matlab/Simulink 中搭建光伏阵列仿真模型并模拟四种类型故障,得到了包含相应的光伏阵列输出特征参数Isc、Uoc、Im、Um的值,将其作为光伏阵列故障诊断定位训练样本。从中挑选出300 组数据,并随机选取100 组作为优化后的支持向量机的训练样本,另外200 组作为测试数据,如表1 所示。
表1 数据样本分类表
3 仿真实验分析
3.1 算法参数设置
本文设置ABC 算法优化SVM 的惩罚因子C和核函数参数g,取值范围为[0.01,100],蜂群规模SN=20,蜜源(解)数量NP=10,最大循环次数limit=100,最大迭代次数M=100。仿真所得适应度曲线如图4 所示。由图4 可知,在第25 次迭代时,适应度值达到97.57 且趋于稳定。
图4 适应度曲线
3.2 ABC-SVM 诊断结果
本文提出的ABC-SVM 光伏阵列故障诊断模型经过100组故障训练数据训练后,再对200 组测试数据进行准确率预测,正确分类197 组,准确率为98.5%,分类结果如图5 所示。由图5 可知,诊断模型对故障状态类别2~4 对应的遮阴、短路、开路故障以及类别5 正常状态均能准确识别,但在识别类别1 老化故障时出现误判,有三组数据被误分到类别2。出现老化故障时,光伏阵列开路电压与短路电流均不发生改变,最大功率点的电流电压有所减弱,与类别2 遮阴故障特征相似,易发生误判。
图5 测试数据分类图
3.3 对比分析
RBF 神经网络是一种3 层前馈神经网络,具有结构简单和学习速度较快的优点,但本身的参数初始值影响预测精度和学习速度。粒子群优化(PSO)算法利用每个粒子在迭代过程中寻找到的粒子最佳位置来改变本身的速度矢量和位置矢量并实现全局搜索。利用PSO 算法优化RBF 神经网络权值得到的PSO-RBF(粒子群优化径向基函数)算法有更好的非线性函数逼近能力。为了进一步验证本文提出的ABC-SVM算法在光伏阵列故障诊断中的准确性,对同样的数据集又分别使用SVM 算法、RBF 算法和PSO-RBF 算法进行正确率对比验证,对比结果如表2 所示。
表2 四种诊断模型的诊断正确率 %
由表2 可知,相比其他三种算法,ABC-SVM 算法对光伏阵列故障有更好的分类能力,识别准确率更高。
4 结语
作为机器学习领域的经典分类算法,SVM 有较好的分类能力。针对光伏阵列在实际运行中几种常见的故障,本文用ABC 算法对SVM 的惩罚因子及核函数参数寻优,得到故障诊断模型并输入故障特征向量,获得对光伏阵列正常工作状态及四种典型故障状态的分类识别。仿真实验表明,与基本SVM、RBF 以及PSO-RBF 神经网络相比,改进后的算法分类效果得到明显提高,对光伏阵列故障能够得到较优的诊断效果,诊断正确率有大幅提高。