for i = 1:m for j = 1:n
y(i,j) = ( Xt(i,j)-b)./(a-b) end
end Y = y end end
4.4 短路电流分类器训练及测试结果比对
4.4.1故障数据仿真
对图3.3所示的7-BUS和36-BUS系统图分别在图(a)的B3和B4母线之间的500kV的线路以及图(b)的B22和B23母线之间的500kV的线路上模拟短路电流故障,利用PSASP软件计算和记录故障线路的故障点处的两端的短路电流标么值。最后测的原始故障电流部分数据如表4.1所示。
表4.1 故障电流原始数据 类型 AG BG CG AB BC CA ABG BCG CAG ABC 30.7472 7.2348 8.2893 38.5597 7.8914 30.9047 38.3359 7.897 35.1702 39.4085 8.2892 30.7472 7.2348 30.9047 38.5597 7.8913 35.1702 38.336 7.897 39.4085 故障数据 7.2348 8.2893 30.7472 7.8914 30.9047 38.5597 7.897 35.1702 38.3359 39.4085 14.6298 7.2118 8.3076 13.4371 7.8907 20.8581 16.3876 7.8922 19.7081 19.7156 8.3076 14.6298 7.2118 20.8581 13.4371 7.8907 19.7081 16.3876 7.8922 19.7156 7.2118 8.3076 14.6298 7.8907 20.8581 13.4371 7.8922 19.7081 16.3876 19.7156 从表4.1中可以看出当发生单相短路接地故障时,接地相的故障短路电流会比其他非接地相的电流大很多,两相短路故障和两相短路接地故障时的故障相电流会比另一非接地相的电流大很多,但是在两相短路接地故障的数据中会包含有零序电流的信息。所以本文中在识别两相短路故障和两相短路接地故障时用一个单独的SVM分类器来识别,这样就提高了识别的精度。
由于样本数据中存在“奇异样本数据”,所以对原始数据进行归一化处理,表4.2为故障电流归一化后的数据。
39
表4.2 故障电流归一化后的数据 类型 AG BG CG AB BC CA ABG BCG CAG ABC 1 0.000977 0.045782 1 0 0.750399 1 0.000158 0.896015 1 0.045778 1 0.000977 0.750399 1 0 0.896015 1 0.000158 1 故障数据 0.000977 0.045782 1 0 0.750399 1 0.000158 0.896012 1 1 0.315185 0 0.04656 0.180847 0 0.422818 0.279053 0 0.388123 0 0.04656 0.315185 0 0.422818 0.180847 0 0.388123 0.279052 0 0 0 0.04656 0.315185 0 0.422818 0.180847 0 0.388122 0.279053 0 原始数据归一化后的属性值xi?[0,1],对数据进行归一化处理后,数据间的特征差异有所改善,其权重值减小,从而减少错分和误分,提高分类器的正确率。
4.4.2训练分类器并得到判别函数系数矩阵
利用7-BUS网络所模拟的部分短路电流数据作为训练样本来训练分类器,其余样本数据和利用36-BUS网络所模拟的全部短路电流数据作为测试数据来验证分类器的分类正确率。
首先将所有故障类型的全部训练样本数据输入到二分类SVM1中,其中将单相接地故障数据作为一类,其他故障类型数据作为一类,这样就可以按照优先级先识别故障发生率最高的单相接地故障;在训练SVM2时,输入全部单相接地故障作为训练数据,其中将AG作为一类,BG和CG作为另外一类,这样就可以先把AG故障识别出来,即分类器SVM2识别故障AG;而BG和CG再用一个分类器SVM3,即在SVM3中,将BG作为一类,CG作为另一类,这样就用一个SVM把BG和CG都可以识别出来;同样地,在SVM4中输入除单相接地故障数据外的其他所有其他故障类型训练样本数据,且将ABC作为一类,其他故障类型作为一类,即训练SVM4识别故障ABC。两相短路和两相短路接地的识别是常规方法的一个难点,由于SVM是基于二分类的,对两类识别的精度很高,再者由于两相短路接地故障电流数据中包含有零序电流信息,所以在本论文中将每一种两相短路和两相短路故障运用一个单独的SVM来识别,如图4.3中的SVM6识别AB和ABG类型,SVM8识别BC和BCG类型,SVM9识别CA和CAG故障类型。以此
40
类推,就可得到可以区分十种故障类型的九个不同的分类器。每一个分类器对应一个分类判别函数,在最后利用所得到的判别函数重新编写分类器。
下面是部分SVM分类器的训练程序: clc; clear;
Xt = [ ]; % 输入测试样本数据 gam = 15; preprocess = 'preprocess';
kernel = 'lin_kernel'; % 核函数选用线性核函数 type = 'classification';
X = [ ]; % 输入训练样本数据
Y = [ ]; % 目标数(即训练样本的类别)
[alpha,b] = trainlssvm({X,Y,type,gam,[],kernel,preprocess}); [Yt, Zt] = simlssvm({X,Y,type,gam,[],kernel},{alpha,b},Xt); [w1, b1] = ridgeregress(X, Y, gam);
上面的分类程序是每一个单独的SVM分类器的单元分类程序,要实现图4.3的多分类效果,可以实行单元程序的嵌套,即在编写图4.3的多分类程序时在顺序结构上的每一个SVM位置上嵌套一个上述的程序即可。
将利用PSASP模拟7-BUS得到的部分短路电流故障样本数据输入到多分类器中进行分类器的训练,最后得到每一个二分类器SVM的判别函数的系数w和b,九个SVM的具体系数矩阵如下表4.3所示:
表4.3 短路电流故障所有SVM的判别函数系数矩阵 w1 -1.0032 w2 w3 w4 0.14278 0.43268 0.43268 b4 w5 0.33564 0.44392 0.54734 0.60475 -1.2037 b5 w6 1.4481 -3.409 w7 0.63345 w8 1.4481 -3.409 -3.5303 1.7082 b8 1.5027 w9 -3.409 0.15332 1.4481 1.7082 0.14604 -3.5303 b9 1.5027 0.71318 -0.01229 0.14278 -0.52025 0.15332 -1.0032 -0.31556 0.58354 -1.444 -1.444 -1.444 b1 2.433 1.0781 -0.5935 b2 0.01442 0.82905 b3 -1.0032 -0.45261 -0.51685 0.14278 -0.81378 0.15332 -0.02219 1.7082 b6 1.5027 0.87094 b7 -0.00314 -3.5303 -0.90569 0.14604 0.14604 0.033428 -0.58005 -0.83521 0.43268 -0.29419 -0.00072 -1.7491 -0.29492 上表4.3为最终所要得到的故障分类器的SVM判别函数的系数矩阵,当要重新编写分类程序时就可以直接利用这个矩阵结合故障模型的分类流程编写故障分类器分类程序,这样做可使程序中不再包含有故障训练样本数据,提高了分类程序的
41
简洁性和分类的快速性,并且,将分类程序做成动态链接文件后,根据需要只要改变这些系数矩阵就可以满足于不同的分类要求。
4.4.3分类器测试结果比对
在Matlab7.0环境下编程实现了改进二叉树输电线路故障分类算法,将模拟7-BUS的剩余部分短路电流样本数据和全部的36-BUS短路电流样本数据输入到改进二叉树输电线路故障分类器中进行测试,为了便于比较,对所测试样本数据,同时进行了SVM多类分类算法、神经网络的BP算法和2PTMC多分类算法的效果,下面是部分ANN分类器程序和SVM多分类器程序。 ANN部分程序:
clc; clear;
P=[ ]; % 输入训练样本数据
T=[ ]; % 目标数据(即训练样本类别) P=P'; % 训练样本矩阵转置 T=T';
net=newff(minmax(P),[13,1], {'tansig','purelin'}, 'trainlm'); net.trainParam.epochs=500; net.trainParam.goal=0.001; net=train(net,P,T); LP.lr=0.1; Y=sim(net,P);
P_test=[ ]; % 输入测试样本数据 P_test=P_test'; % 测试样本矩阵转置 Y=sim(net,P_test) SVM多分类程序:
clc; clear;
X=[ ]; % 输入训练样本数据 Y=[ ]; % 目标数据(即训练样本类别) Xtest=[ ]; % 输入测试样本数据 gam=10; sig2=2;
[Ycode,codebook,old_codebook]=code(Y,'code_MOC');
42
[alpha,b]=trainlssvm({X,Ycode,'classifier',gam,sig2}); Yh=simlssvm({X,Ycode,'classifier',gam,sig2},{alpha,b},Xtest); Yhc=code(Yh,old_codebook,[],codebook,'codedist_hamming') 测试结果比对如表4.4所示。
表4.4 不同的多分类方法测试结果比对 采用方法 SVM多类分类 2PTMC多分类算法 ANN的BP算法多类分类 改进SVM二叉树多分类算法 样本数 50 50 50 50 错分数 20 5 11 2 正确率(%) 60 90 78 96 由表4.4中可以看出:利用SVM多类分类训练的分类器的正确率为60%;2PTMC多分类算法的正确率为90%;神经网络的BP算法多类分类器的正确率为78%;而利用本文提出的改进SVM二叉树多分类算法的输电线路故障分类器,其分类正确率达到了96%,正确率最高,效果最好。
由于SVM多类分类模型要平衡所有的故障数据类型,当要所分的故障类型越多,其分类结果亦将会越差;2PTMC多分类算法模型采用了“one against all”方法,在做多类分类时淡化了两相短路和两相短路接地故障这两类故障的差别,从而造成测试时正确率的下降。神经网络的BP算法多类分类器也对两相短路和两相短路接地的分类效果差些,并且由于ANN算法在训练和测过程中有时不是很稳定,每次测试时都会得出不同的结果,所以分类效果亦差些;而改进SVM二叉树多分类算法模型直接将两相短路分为“one against another”两类,彰显了两相接地和不接地短路的差别,从而明显提高了此类故障的分类正确率。
4.5 短路电压分类器训练及测试结果比对
4.5.1故障数据仿真
上一节中是根据故障短路电流数据对改进二叉树输电线路故障分类器进行训练和验证,本节则利用故障短路电压数据对分类器进行训练和验证,以论证本分类器对不同类型数据的适应性。
同理,对图3.3所示的7-BUS和36-BUS系统图分别在图(a)的B3和B4母线之间的500kV的线路以及图(b)的B22和B23母线之间的500kV的线路上模拟短路电压故障,利用PSASP软件计算和记录故障线路的故障点处的两端的短路电压标么值。最后测的原始故障电压部分数据如表4.5所示。
43