郁紀, 肖文波,*, 李欣蕊, 吳華明
(1.南昌航空大學測試與光電工程學院, 南昌 330063; 2.南昌航空大學科技學院, 共青城 332020)
傳統化石燃料的不斷消耗帶來日益嚴重的環境污染問題,太陽能作為可再生的清潔能源,日益受到世界各國的重視[1-2]。其中,光伏發電的發展尤為迅速。然而,光伏組件大多安裝在屋頂、山丘、沙漠等惡劣環境中,容易出現光伏板材料異常老化、裂塊、陰影遮蔽、開路和短路等情況,導致發電效率降低、光伏組件損壞,甚至引發火災等問題。因此,研究準確、快速的光伏組件故障識別方法具有重要意義[3-4]。
近年來,智能檢測算法在光伏組件故障識別領域得到了廣泛應用;原理是將光伏組件的特征數據,結合算法對特征數據建模,模型配合狀態模塊用于電站故障診斷工作[5]。常用的智能檢測算法有人工神經網絡、模糊C均值聚類和支持向量機(support vector machine,SVM)等算法[6-9]。常用的SVM算法[10]具有避免模型過學習和欠學習、陷入局部極值等優點,但是存在易受參數初始值影響等問題[11]。為此,研究使用各種算法對SVM的核函數等進行優化得到廣泛研究[12-14]。但是這些方法存在收斂速度慢的突出問題。最近,Cai等[15]提出粒子群(particle swarm optimization,PSO)優化支持向量機算法的故障識別方法。該方法不僅準確辨識故障發生所在位置,普適性也較好,準確率均在98.21%以上。但尋找到支持向量機的最優參數值所花費的時間較長,為4.52 s。為了提高識別精度與效率,遺傳算法(genetic algorithm,GA)優化SVM[16]、麻雀搜索算法(sparrow search algorithm,SSA)優化SVM[17]、灰狼算法(gray wolf algorithm,GWO)優化SVM[18]、鯨魚算法(whale optimization algorithm,WOA)優化SVM[19]等算法被提出。
為了進一步提高故障識別精度及提高效率,現提出沙貓群(sand cat swarm optimization,SCSO)優化支持向量機算法,并對比文獻[11,15-19]所提算法的識別效果,詳細研究該算法的優缺點。
SVM算法基本思路是在線性可分時,在原空間尋找兩類樣本的最優分類超平面。在線性不可分時,加入松弛變量并通過使用非線性映射將低維度輸入空間的樣本映射到高維度空間使其變為線性可分,這樣就可以在該特征空間中尋找最優分類超平面,如圖1所示。設訓練樣本集為V,V={(x1,y1),(x2,y2),…,(xl,yl)},其中,xl∈R為輸入特征,yl為分類標簽。

margin為超平面間隔;H代表超平面;H1與H2為邊界圖1 SVM超平面Fig.1 SVM hyperplane
超平面表達式[20]為
ωφ(x)+b=0
(1)
式(1)中:φ(x)為映射函數表達式;ω為最優分類超平面的法向量;b為分類閾值。對于線性不可分問題,SVM需要大于0的懲罰因子C和松弛變量ξ,其目標函數為
(2)
(3)
在最優超平面上樣本分類間隔d需要達到最大值才能得到正確分類,因此超平面的尋優問題可以歸結為二次規劃問題,即
(4)
利用拉格朗日算子來解決上述問題,則最優超平面函數為
(5)
式(5)中:S為支持向量模型;(xi,yi)為通過該SVM的樣本。
核函數(一般選用徑向基高斯核函數)表達式為
(6)
由式(4)可知,超平面尋優問題需要對C進行處理,而由式(6)與式(7)可知,求y需要確定K(xi,yi),同時K(xi,yi)需要確定σ。因此,SVM需要確定的還有懲罰因子C和核函數參數σ。懲罰因子越大越不能容許出現誤差,懲罰因子過小容易出現欠擬合現象,核函數參數反應分類的準確率。因此在使用SVM進行故障分類時,得到最優的(C,σ)組合可以很大程度上提高故障診斷的準確率。
沙貓群算法(SCSO)是一種模擬沙貓生存行為的元啟發式算法。
沙貓是貓科動物中的一種,它們能夠探測低于2 kHz的低頻,也具有挖掘獵物的能力。SCSO是基于沙貓捕食的兩個階段(搜索階段和攻擊階段)[21]上提出的新算法。圖2為沙貓捕食行為示意圖。

圖2 沙貓捕食行為示意圖Fig.2 Schematic diagram of predatory behavior of sand cats
當沙貓處于獵物搜索階段時,有
(7)
R=2rGrand(0,1)-rG
(8)
r=rGrand(0,1)
(9)
P(t+1)=r[Pb(t)-rand(0,1)Pc(t)]
(10)
式中:SM為沙貓的聽覺特性,一般設置為2;Nc為當前迭代次數;Nmax為最大迭代次數;rG為常規的靈敏度范圍;R為沙貓轉換搜索階段和攻擊階段的控制參數;r為沙貓個體的靈敏度范圍;Pb為當前時刻的沙貓群最優位置;Pc為沙貓個體當前位置;P為沙貓下一時刻的位置。
當沙貓處于攻擊階段時,有
Prnd=|rand(0,1)Pb(t)-Pc(t)|
(11)
P(t+1)=Pb(t)-rPrndcosθ
(12)
通過判斷R的取值大小決定沙貓下一時刻處于獵物搜索階段還是攻擊階段。當|R|≤1時,沙貓被引導攻擊獵物;反之,則繼續搜索。表達式為
(13)
式(13)中:θ為示意圖中圓的隨機角度。
SCSO優化的基本步驟如下:
(1)設置算法基本參數:種群數目(設置為40)、變量維數(2)和最大迭代次數(100)。
(2)種群初始化。對于d維優化問題,沙貓個體代表優化問題的一個解,為[x1,x2,…,xd]且?xi∈[lower,upper]。
(3)通過目標函數計算沙貓個體的適應度值,并更新個體極值和全局極值。
(4)利用式(7)~式(10)來更新沙貓個體位置。
(5)通過式(13)判斷沙貓下一步的行為是處于探索階段還是攻擊階段。若沙貓處于探索階段,則轉至步驟四,否則轉至步驟六。
(6)利用式(11)、式(12)來更新沙貓個體位置和其對應的適應度值。
(7)判斷算法是否滿足終止條件。若算法達到迭代最大次數或者精度要求。則結束并輸出極值,否則轉至步驟二繼續迭代計算。
SCSO-SVM識別算法首先是通過SCSO對SVM的懲罰因子C和核函數參數σ進行尋優,再利用尋優后的參數建立模型進行訓練和識別。
算法流程圖如圖3所示,算法的基本步驟如下。

圖3 SCSO-SVM流程圖Fig.3 SCSO-SVM flowchart
(1)設置SCSO-SVM算法的基本參數:種群數目(設置為40)、變量維數(2)、核函數(徑向基高斯核函數)和最大迭代次數(100)。
(2)初始化SVM的懲罰因子C和核函數參數σ,作為種群的位置。
(3)計算適應度值(將交叉驗證的準確性作為沙貓個體的適應度值),并確定當前個體極值和全局極值。
(4)利用式(7)~式(10)更新沙貓個體位置。
(5)通過式(13)判斷沙貓下一步的行為是處于探索階段還是攻擊階段。若沙貓處于探索階段,則轉至步驟4,否則轉至步驟6。
(6)利用式(11)、式(12)更新沙貓個體位置和計算其對應的適應度值。更新當前個體極值和全局極值。
(7)判斷算法是否滿足終止條件。若算法達到迭代最大次數或者精度要求。則結束并轉至步驟8,否則轉至步驟3。
(8)將獲得的最優解作為SVM的初始懲罰因子C和核函數參數σ,輸入歸一化[逐行將數據標準化到區間[0,1]]的訓練樣本繼續訓練,即
(14)
式(14)中:[ymin,ymax]=[0,1],xmin、xmax分別為每行數據的最小值和最大值。
(9)判斷算法是否達到迭代最大次數或者精度要求。若滿足要求,則結束訓練并轉至步驟10,否則轉至步驟2。
(10)輸入歸一化的測試樣本,輸出識別結果。
為了分析光伏組件正常、遮蔭、開路及短路故障特征[22],首先用MATLAB軟件搭建3×3串并聯的光伏組件并仿真,其示意圖如圖4(a)所示。

圖4 光伏組件仿真Fig.4 Photovoltaic module simulation
在四種運行工況(正常、遮蔭、開路及短路)下,光伏組件的仿真輸出特性即光伏組件的P-U和I-U特性曲線如圖4(b)和4(c)所示。由圖4(b)可知,四種運行工況下最大功率點大小與位置變化顯著,遮蔭下輸出特性甚至呈現“多峰”狀態。開路故障時,短路電流Isc下降明顯;四種運行工況下開路電壓Uoc略有差別。由此,選取Isc、Uoc、Im和Um(4個參數),Im和Um(2個參數),Pm(1個參數)作為算法的輸入特征,并研究3種輸入特征的算法故障識別能力。
搭建了一個3×3串并聯組合的光伏組件的實驗平臺,如圖5所示。實驗裝置主要由管型鹵鎢燈(佛山電器照明公司)、浩云安防科技公司生產的9塊尺寸為54 m×54 m的多晶硅光伏電池、Keithley 2450(吉時利公司)、PC機、光強探測器HT-855(宏誠科教公司)、紅外測溫儀AR-320(希瑪科技有限公司)組成,如圖5(a)所示。

圖5 實驗平臺Fig.5 Experimental platform
圖5(b)為實驗示意圖。實驗過程為:鹵鎢燈模擬太陽光垂直入射光伏組件表面,并用光強探測器和紅外測溫儀分別測量正入射光強和陣列表面溫度;啟動Keithley 2450源表和KickStart軟件測量并記錄光伏組件分別在正常、遮蔭、開路和短路情況下的輸出特性(I-U曲線)。通過覆蓋不同透光率的亞克力板來改變照射到每個光伏電池表面的光強,達到局部陰影的效果;通過斷開單個或多個支路的導線來模擬開路故障;將空氣開關和單個光伏電池并聯,通過打開開關模擬短路故障。采集到總計249組數據,其中4種運行工況的數據量分布如表1所示。

表1 4種運行工況的數據分布和樣本劃分Table 1 Data distribution and sample division for 4 operating conditions
為了判斷算法識別效果,選擇10次平均識別時間、平均識別精度及其對應的方差作為模型評價指標[23]。
圖6為不同算法對249組實驗數據進行訓練和識別一次結果。表2為算法訓練和識別后的10次平均識別結果。
由圖6可以看出,SCSO-SVM對測試集識別效果最好,僅錯誤識別一個標簽為1的測試樣本。SVM的識別效果最差,錯誤識別五個標簽為1的測試樣本和三個標簽為3的測試樣本。7種算法測試集識別效果大致依次為SCSO-SVM、GWO-SVM、WOA-SVM、SSA-SVM、GA-SVM、PSO-SVM及SVM。
表2是算法平均識別效果。從表2看出,SCSO-SVM相較于SVM、PSO-SVM、GA-SVM、SSA-SVM、GWO-SVM和WOA-SVM平均識別精度提高了9.459 4%、7.432 4%、6.756 7%、3.378 3%、1.351 3%和2.702 7%,對應的方差減少了0、32.566 2、0、2.130 5、0和0;平均識別時間減少了-1.451 4、5.409 9、2.356 5、1.501 5、0.774 1和0.188 3 s,對應的方差減少了-0.001 9、0.051 8、0.053 9、-0.000 6、0.028 1和0.004 2。
首先結果表明,7種算法識別精度從高到低依次是SCSO-SVM、GWO-SVM、WOA-SVM、SSA-SVM、GA-SVM、PSO-SVM和SVM。6種SVM混合算法都克服了SVM診斷結果易受參數初始值影響的缺點,識別精度相較傳統SVM算法都有所提升。其中SSA-SVM算法的識別精度相較SVM提高了約6.081 1%,與文獻[17]提到的SSA-SVM相較SVM的識別精度提高了約5.424 3%相接近,驗證了上述算法的結論。上述結論也與圖4結果一致。其次,平均識別時間從短到長依次是SVM、SCSO-SVM、WOA-SVM、GWO-SVM、SSA-SVM、GA-SVM和PSO-SVM。改進SVM的其他六種算法的識別時間都比SVM長,是因為組合算法需要犧牲識別時間來提高精度[24]。SCSO-SVM不僅平均識別精度最高,平均識別時間也較短(僅次于SVM)。相較其他算法更能有效找到較好的懲罰因子 和核函數參數 。平均識別時間較短是因為SCSO結構簡單,易于接近極值[25]。最后,SCSO-SVM和SVM的方差都很小,是因為最終決策函數只由少數的支持向量所確定,大量冗余樣本可以剔除,魯棒性較好。GWO-SVM的平均識別精度和時間僅次于SCSO-SVM,是因為GWO存在自適應調整的收斂因子以及信息反饋機制,能夠在局部尋優和全局搜索之間實現平衡,且結構簡單、易于實現。但種族多樣性差、后期收斂速度慢[26]。
為進一步研究影響算法識別因素,選取光伏組件伏安特性曲線參數Im和Um作為算法的輸入特征,其他參數設置不變。訓練和測試識別結果如表3所示。

表3 不同算法平均識別效果Table 3 Average recognition effect of different algorithms
從表3得知,7種算法相比,SCSO-SVM相較于SVM、PSO-SVM、GA-SVM、SSA-SVM、GWO-SVM和WOA-SVM平均識別精度提高了35.135 1%、33.378 4%、37.567 6%、18.108 1%、0和0,對應的方差減少了0、93.356 8、20.209 3、19.154 4、0和0。平均識別時間減少了-1.389 4、4.836 6、2.777 5、1.096 3、0.025 3和0.071 8 s,對應的方差減少了-0.004 8、0.100 7、0.007 7、0.000 8、-0.001 2和-0.002 5。結果首先表明整體排序與上面結果基本一致。其次,發現SCSO-SVM不僅識別精度最高,識別時間也較短(也僅次于SVM),進一步證明了上面結論。
為進一步研究影響算法識別因素,選取光伏組件伏安特性曲線參數Pm作為算法的輸入特征,其他參數設置不變。訓練和測試識別結果如表4所示。

表4 不同算法平均識別效果Table 4 Average recognition effect of different algorithms
從表4得知,7種算法相比,SCSO-SVM相較于SVM、PSO-SVM、GA-SVM、SSA-SVM、GWO-SVM和WOA-SVM平均識別精度提高了36.486 5%、13.108 1%、12.837 8%、12.162 2%、0和0,對應的方差減少了0、0.4261、3.3480、0、0和0。平均識別時間減少了-1.660 6、18.255 0、10.675 4、1.218 3、0.032 9和0.0575 s,對應的方差減少了-0.000 8、5.838 6、0.087 3、0.001 3、0.001 2和0.002 4。結果表明7種算法中SCSO-SVM平均識別精度最高,平均識別時間也較短(也僅次于SVM),結論與上面一致,證明了上述結論。
橫向比較3種輸入下7種算法識別效果。首先,對于同一種算法而言,在3種不同輸入特征的算法下,算法的平均識別精度總體上是依次降低的,是因為輸入特征越少,越不能有效表征光伏組件在不同故障類型下的輸出特性。但平均識別時間卻不是隨著輸入特征的減少而減少的,在將Pm作為輸入特征情況下,7種算法的平均識別時間總體上較前兩種情況有所增加。上述結果表明輸入特征不是越少,算法的識別時間就會越短。同時,選取合適的輸入特征才能兼顧算法的故障識別準確率和效率。
最后,7種算法的識別效果在3種輸入下的順序略有改變。例如:對于平均識別時間而言,7種算法在將Pm作為輸入特征和將Im和Um作為輸入特征的情況下,識別效果的順序不變。而在將Isc、Uoc、Im和Um作為輸入特征的情況下,僅有GWO-SVM和WOA-SVM兩者的排序互相調動了。原因可能是各個算法參數選擇過多導致泛化性較差,依賴參數初始值導致魯棒性差[27]。
為進一步驗證所提模型的泛化能力(模型在不同應用中的識別效果),采用UCI數據庫中的wine數據集(意大利同一地區3種葡萄酒的13種屬性)作為算法的數據集[28]。
從表5得知,7種算法相比,SCSO-SVM相較于SVM、PSO-SVM、GA-SVM、SSA-SVM、GWO-SVM和WOA-SVM平均識別時間減少了-1.069 5、1.966 9、1.552 7、0.768 3、0.121 3和0.225 5 s,對應的方差減少了-0.015 4、-0.000 5、0.075 2、0.007 8、0.011 0和-0.004 2。平均識別精度提高了1.011 2%、2.134 8%、1.910 1%、9.662 9%、0.337 0%和1.011 2%,對應的方差減少了-0.126 2、0.715 5、0.098 2、69.744 2、0.210 5和-0.1262 。結果表明SCSO-SVM不僅平均識別精度最高,平均識別時間也較短(也僅次于SVM),且方差較小。進一步證明上面結論。

表5 不同算法平均識別效果Table 5 Average recognition effect of different algorithms
針對光伏組件故障識別問題,本文提出SCSO優化SVM的故障識別算法,并對比了SVM、PSO-SVM、GA-SVM、SSA-SVM、GWO-SVM和WOA-SVM 6種算法。得出以下結論。
(1)6種SVM混合算法都克服了SVM診斷結果易受參數初始值影響的缺點,識別精度相較傳統SVM算法都有所提升。SCSO-SVM不僅平均識別精度最高,平均識別時間也較短(僅次于SVM)。原因是相較其他算法更能有效地找到較好的懲罰因子和核函數參數。
(2)對于同一種算法而言,在3種不同輸入特征的算法下,算法的平均識別精度是依次降低的,是因為輸入特征越少,越不能有效表征光伏組件在不同故障類型下的輸出特性。但輸入特征不是越少,算法的識別時間就會越短。選取合適的輸入特征才能兼顧算法的故障識別準確率和效率。
(3)7種算法的識別效果在一定程度上受數據集的影響。算法在wine數據集下的識別效果相較光伏組件數據集更好,原因是各個算法參數選擇過多導致泛化性較差,且依賴參數初始值選擇。
針對光伏組件故障識別問題,本文僅考慮了一些常用故障,不能完全代表實際問題中的復雜故障種類。同時,如何進一步將此方法應用于實踐中,實時識別光伏組件故障種類,有待進一步研究。