董永樂,毛永梅,張理放,張帆,白露薇,林海軍,梁肇聰
(1.內(nèi)蒙古電力科學(xué)研究院,呼和浩特 010000; 2.哈爾濱理工大學(xué),哈爾濱 150080 )
隨著智能電網(wǎng)建設(shè)在我國的深入開展,智能儀器、設(shè)備及綜合測量控制管理系統(tǒng)在電力系統(tǒng)中得到廣泛應(yīng)用。由于智能電網(wǎng)對可靠性的要求非常高,所以對這些儀器、設(shè)備及系統(tǒng)的軟件、硬件的可靠性就提出了更高的要求。由于硬件集成度不斷提高,加之對硬件可靠性的研究投入大且成果比較豐富,相較于硬件,軟件可靠性的研究成為制約采集終端等儀器設(shè)備可靠性的關(guān)鍵問題,也是可靠性研究的焦點之一。智能電網(wǎng)是關(guān)系到國計民生的重要系統(tǒng),電網(wǎng)數(shù)據(jù)采集終端作為智能電網(wǎng)的關(guān)鍵設(shè)備,其可靠性直接影響著智能電網(wǎng)自動化系統(tǒng)的可靠性,因此,以采集終端為切入點,開展軟件可靠性預(yù)測方法研究具有十分重要科學(xué)和現(xiàn)實意義。
從1967年Hudson提出了生滅過程模型開始,軟件可靠性預(yù)測模型研究受到關(guān)注,之后,學(xué)者們提出了幾十種軟件可靠性模型,如J-M 模型、MUSA執(zhí)行時間模型及貝葉斯排錯模型等[1]。這些模型在一些分析軟件中得到應(yīng)用,但由于假設(shè)前提高且各異,對同一軟件的評價結(jié)果迥異,影響了評價的公信力。
針對軟件可靠性預(yù)測,科研人員建立了多種模型[2-7]。研究證明,預(yù)測效果較好的是基于分類思想的模型[8]。支持向量機(jī)[9]及神經(jīng)網(wǎng)絡(luò)理論[10-13]的研究成為熱點,用于軟件可靠性預(yù)測的神經(jīng)網(wǎng)絡(luò)有BP神經(jīng)網(wǎng)絡(luò)、LVQ神經(jīng)網(wǎng)絡(luò)及小波神經(jīng)網(wǎng)絡(luò)等[14]。但它們在應(yīng)用中還是存在瑕疵。
例如,LVQ神經(jīng)網(wǎng)絡(luò)神經(jīng)元利用不充分及算法對初值敏感等;隱層節(jié)點數(shù)難定、收斂速度較慢、易陷入局部最優(yōu)解等問題困擾著小波神經(jīng)網(wǎng)絡(luò),后兩個問題也同樣困擾著BP神經(jīng)網(wǎng)絡(luò)。為此,研究者提出了一些解決方案,以期得到更好的識別效果,例如提出了采用改進(jìn)遺傳算法AGA改進(jìn)LVQ神經(jīng)網(wǎng)絡(luò),用粒子群算法優(yōu)化模糊神經(jīng)網(wǎng)絡(luò)等。
為了提高BP網(wǎng)絡(luò)收斂速度和全局尋優(yōu)能力,提高軟件可靠性預(yù)測模型的預(yù)測能力,文章從完善SA和GA優(yōu)化算法入手,給出改進(jìn)的退火遺傳融合優(yōu)化算法MSAGA,進(jìn)而提出一種基于MSAGA-BP神經(jīng)網(wǎng)絡(luò)的軟件可靠性預(yù)測模型,即利用BP神經(jīng)網(wǎng)絡(luò)建立軟件可靠性預(yù)測模型,用MSAGA優(yōu)化網(wǎng)絡(luò)參數(shù),提高訓(xùn)練速度、全局尋優(yōu)能力和精度,最后,應(yīng)用該方法對采集終端進(jìn)行軟件可靠性預(yù)測模型建模分析,實現(xiàn)對該軟件可靠性的預(yù)測。
優(yōu)化算法種類繁多,它們各有所長,各有所短,如果能取長補(bǔ)短則能收到更好的效果。在互補(bǔ)性分析,及完善算法的基礎(chǔ)上,文中將遺傳算法融合到退火算法中,提出退火遺傳融合算法,并用它解決BP神經(jīng)網(wǎng)絡(luò)的優(yōu)化問題。
遺傳算法(GA)是模仿生物進(jìn)化的優(yōu)化算法。GA雖然理論上可以搜索到最優(yōu)解,但受雜交算子的影響,也有可能陷入局部最優(yōu)。研究表明,種群的多樣度高有助于全局搜索[15]。為了抗早熟,文中在判斷接受新個體時,把適應(yīng)度和多樣度共同作為影響指標(biāo)。
設(shè)種群Y用矩陣表示為:
(1)
若矩陣中非全1和非全0的列有m個,則Y的多樣度為:
μ(Y)=m
(2)
另外,對種群Y來說,其總體適應(yīng)度Fs(Y)等于個體適應(yīng)度的最大值。即:
(3)
文中對GA的新個體接受進(jìn)行改進(jìn),其它流程不變。判斷接受時,先產(chǎn)生[0,1]上均勻分布隨機(jī)數(shù)α,然后以下式接受新一代個體:
(4)
模擬退火(SA)算法是參考熱力學(xué)退火過程的優(yōu)化算法。它全局尋優(yōu)能力強(qiáng),但耗時較長。為提高其效率,一方面,在確定初始溫度時,考慮最差的初始接受概率[16];另一方面,采取自尋優(yōu)的方法[17]確定尺度。
為了防止初始溫度選擇得太高或者太低延緩SA收斂速度,選擇下式確定:
t0=(fmin-fmax)/lnpr
(5)
式中pr為最差概率;fmax和fmin分別為目標(biāo)函數(shù)的極大值和極小值。
SA算法退火時,新狀態(tài)是通過在老狀態(tài)的基礎(chǔ)上,按照一定的尺度h隨機(jī)增加擾動實現(xiàn)的。方法如圖1所示。
x′(i)=x(i)+h·δ
(6)
針對GA和SA的優(yōu)化質(zhì)量和效率偏低的問題,文中提出退火遺傳融合優(yōu)化算法(simulated annealing genetic fusion algorithm,SAGFA),該算法在上述算法改進(jìn)的基礎(chǔ)上,通過互補(bǔ)融合,使新算法既具備GA的并行搜索能力,也兼具SA的概率突跳性,實現(xiàn)了高效與優(yōu)質(zhì)尋優(yōu)的目標(biāo)。SAGFA流程圖如圖2所示。
圖2 SAGFA算法流程圖
流程圖中需要說明的是:
1)選用適應(yīng)度函數(shù)作為SAGFA的評價函數(shù),尋優(yōu)方向是增大;
2)初始溫度t0根據(jù)前面給出的式(5)確定;
3)采取指數(shù)下降策略;
4)按式(6)及圖1的流程進(jìn)行擾動;
5)個體取舍時,若新狀態(tài)的適應(yīng)度變大,則接收新狀態(tài),否定依據(jù)Metropolis準(zhǔn)則,按概率接收新個體;
6)交叉時,為了保護(hù)優(yōu)秀個體,依據(jù)下式自適應(yīng)調(diào)節(jié)交叉率:
(7)
文中利用普遍使用的有代表性的6個標(biāo)準(zhǔn)函數(shù)[18]的極值搜索進(jìn)行仿真,分別用SA、GA和SAGFA三種算法對6個函數(shù)搜索極小值,取搜索到全局最優(yōu)解(最優(yōu)解絕對誤差小于10-5即認(rèn)為搜索成功)20次的平均搜索時間(單位:s)列于表1。
表1 三種算法仿真結(jié)果
仿真結(jié)果表明:在同樣搜索到全局最優(yōu)的情況下,SAGFA較遺傳算法和模擬退火算法具有更好的搜索速度。
如前所述,多種神經(jīng)網(wǎng)絡(luò)各有不足。BP神經(jīng)網(wǎng)絡(luò)是誤差反傳神經(jīng)網(wǎng)絡(luò)(back propagation neural network,縮寫為BPNN)。相對而言,BPNN具有非線性映射能力強(qiáng)、結(jié)構(gòu)簡單、泛化能力強(qiáng)、激活函數(shù)輸入空間不受限且理論上可全局尋優(yōu)等優(yōu)點,因此,文章以它為基礎(chǔ),采用SAGFA改善其尋優(yōu)速度和精度,以達(dá)到更好的預(yù)測效果。BPNN基本結(jié)構(gòu)如圖3所示。
圖3 BPNN原理框圖
理論研究表明,所有非線性函數(shù)都可以采用單隱含層的前饋網(wǎng)絡(luò)來映射,所以,文中的BPNN采用輸入層、單隱含層和輸出層的三層結(jié)構(gòu),每層由若干個節(jié)點(即神經(jīng)元)組成,同層神經(jīng)元之間無任何聯(lián)系。其中網(wǎng)絡(luò)節(jié)點的激活函數(shù)很重要,通常選用標(biāo)準(zhǔn)Sigmoid函數(shù),可全局尋優(yōu)。節(jié)點輸出函數(shù)表達(dá)式為:
(8)
式中xi為神經(jīng)元輸入;y為神經(jīng)元輸出;θ為閾值;ωi為連接權(quán)值。
BPNN雖然具有上述優(yōu)點,但也存在訓(xùn)練收斂有平緩區(qū)、高精度的訓(xùn)練完成時間較長的不足。訓(xùn)練的實質(zhì)就是根據(jù)輸入和輸出的目標(biāo)值,優(yōu)化神經(jīng)網(wǎng)絡(luò)連接權(quán)值,使實際輸出按照訓(xùn)練精度要求趨近目標(biāo)值的過程,若能快速地找到全局最優(yōu)的權(quán)值組合,就可一舉克服上述不足。因此,文章采用SAGFA優(yōu)化連接權(quán)值,提出SAGFA-BPNN網(wǎng)絡(luò)。
SAGFA-BPNN采用SAGFA對BPNN參數(shù)進(jìn)行優(yōu)化,是將BPNN的各層間的連接權(quán)值進(jìn)行編碼,并按照一定的規(guī)則構(gòu)成染色體,用與BPNN的辨識誤差成反比例的適當(dāng)函數(shù)作為適應(yīng)度函數(shù),利用SAGFA搜索到最優(yōu)解。這些最優(yōu)解的染色體編碼,根據(jù)前述的規(guī)則解碼,就得到了BP神經(jīng)網(wǎng)絡(luò)的最優(yōu)化的各層間的連接權(quán)值。SAGFA-BPNN原理框圖如圖4所示。
從圖4可以看出,SAGFA的染色體編碼由BP神經(jīng)網(wǎng)絡(luò)的連接權(quán)值按照一定的順序組成。圖中給出的網(wǎng)絡(luò)輸入節(jié)點為k個,隱含層節(jié)點為m個,輸出節(jié)點為n個,這樣,染色體中的u11,…,ukm為輸入層k個節(jié)點到隱含層的m個節(jié)點的連接權(quán)值,ω11,…,ωmn分別為隱含層m個節(jié)點到輸出層n個節(jié)點的連接權(quán)值。
SAGFA的優(yōu)化結(jié)果中染色體的不同位作為BP神經(jīng)網(wǎng)絡(luò)的不同支路的連接權(quán)值,由于SAGFA優(yōu)化算法得到最優(yōu)解,對應(yīng)著適應(yīng)度函數(shù)取得極大值,而對于BP神經(jīng)網(wǎng)絡(luò)則應(yīng)該達(dá)到最小的辨識誤差。因此,SAGFA算法的適應(yīng)度函數(shù)為與辨識誤差函數(shù)成反比例的函數(shù),我們?nèi)∵m應(yīng)度函數(shù)為:
g=1/(1+E)
(9)
式中g(shù)為適應(yīng)度函數(shù);E為BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練的系統(tǒng)辨識誤差。
若實驗數(shù)據(jù)維數(shù)太多,不僅會增加用于可靠性預(yù)測的神經(jīng)網(wǎng)絡(luò)的輸入節(jié)點數(shù),而且會增加樣本噪聲,影響預(yù)測的準(zhǔn)確率,因此,維數(shù)太多時需要進(jìn)行降維處理。
降維的方法較多[19],可以采取成分分析類的方法,如獨立成分、主成分等,也可以采取回歸分析類的方法,如逐步、多元、階躍函數(shù)、樣條及多項式等。由于主成分分析(PCA)可消除指標(biāo)間的相關(guān)影響,且降維效果較好,所以,文中運用PCA進(jìn)行數(shù)據(jù)處理,剔除影響模型準(zhǔn)確率的冗余和干擾樣本。
設(shè)原始數(shù)據(jù)矩陣為:
(10)
式中n為樣本數(shù),k為樣本因數(shù)維數(shù)。
歸一化后,將X的k個變量線性合成為m(k≥m)個新變量,如下:
(11)
1)yi與yj(i≠j;i,j=1,2,…,m)不相關(guān);
2)y1為具有最大方差的線性組合;
3)y2滿足第(1)條,亦為方差最大者;
4)y3~ym依此類推,依順序確定。
新變量y1,y2,…,ym分別稱為原變量中第1個、第2個、…、第m個主成分。第1個主成分y1的方差貢獻(xiàn)率最大,依次遞減。
文中建立可靠性模型時可適當(dāng)選擇前幾個主成分,使方差的累積貢獻(xiàn)率超過85%即可。
基于SAGFA-BPNN建立軟件可靠性預(yù)測模型的主要步驟如下所示,流程圖如圖5所示。
以往模式中很難對業(yè)主的責(zé)任進(jìn)行集中化劃分,不能明確地指出。對于EPC工程的總承包模式來說,雖然一直是五方主體的責(zé)任不發(fā)生變化,總承包的企業(yè)還是需要承擔(dān)總體責(zé)任,一旦工程涉及到勘測和設(shè)計與采購以及施工的問題,那么總承包就要承擔(dān)一定的責(zé)任。在傳統(tǒng)模式的基礎(chǔ)上,設(shè)計施工的過程中會發(fā)生扯皮問題,EPC模式基礎(chǔ)上的問題扯皮是在總承包的范圍中出現(xiàn)的,必須要總承包進(jìn)行內(nèi)部把控以及管理,因此,對于總包管理制度和核心能力與人員專業(yè)提出較高的要求。如果不能很好地把控,所產(chǎn)生的風(fēng)險就要由總包單位進(jìn)行負(fù)責(zé)。此時,就需要分包和分包以及分包和主體施工之間協(xié)調(diào)管理有效地對接,一旦出現(xiàn)疏忽,勢必會造成索賠。
圖5 建立軟件可靠性預(yù)測模型的流程
1)進(jìn)行軟件測試,獲得多維度的多次實驗數(shù)據(jù);
2)采用PCA降低維數(shù)、優(yōu)化數(shù)據(jù),減少神經(jīng)網(wǎng)絡(luò)輸入節(jié)點數(shù),以便于提高預(yù)測精度;
3)建立BP神經(jīng)網(wǎng)絡(luò),確定輸入、輸出及隱含層的節(jié)點數(shù);
4)輸入訓(xùn)練樣本數(shù)據(jù),利用SAGFA優(yōu)化BP神經(jīng)網(wǎng)絡(luò)的連接權(quán)值;
5)用訓(xùn)練樣本數(shù)據(jù)復(fù)查精調(diào)神經(jīng)網(wǎng)絡(luò)完成全部網(wǎng)絡(luò)訓(xùn)練。
將測試樣本輸入到訓(xùn)練好的SAGFA-BPNN進(jìn)行分類預(yù)測,并輸出結(jié)果。
采集終端軟件平臺基于ARM平臺和嵌入式操作系統(tǒng),采用模塊化設(shè)計,軟件功能結(jié)構(gòu)如圖6所示。系統(tǒng)軟件可以分為操作系統(tǒng)層和業(yè)務(wù)應(yīng)用層,其中操作系統(tǒng)層就有約20項功能,業(yè)務(wù)應(yīng)用層也有7項以上應(yīng)用程序,還可以根據(jù)需要可以拓展軟件功能??梢?采集終端軟件系統(tǒng)是由很多個功能模塊,或者說子系統(tǒng)組合而成,子系統(tǒng)間相互作用,相互協(xié)調(diào)完成系統(tǒng)功能。
圖6 采集終端軟件功能結(jié)構(gòu)圖
根據(jù)軟件子系統(tǒng)的相對獨立性,以及它們之間相互的調(diào)用情況可知,整個軟件的系統(tǒng)故障率等于各子系統(tǒng)故障率與其調(diào)用系數(shù)乘積的累加[20],即:
(12)
式中πi為子系統(tǒng)Xi(i=1,2,…,n)的調(diào)用系數(shù)。
在可靠性預(yù)測實踐中,πi值可采用子系統(tǒng)Xi的運行時間占整個系統(tǒng)運行時間的比例來表示。系統(tǒng)的可靠性函數(shù)為:
(13)
可見,系統(tǒng)的可靠性可以通過求解各個子系統(tǒng)的故障率來求得。
考慮到采集終端軟件的復(fù)雜性,其可靠性分析可以通過軟件的功能模塊分解及可靠性建模來實現(xiàn)。
采集終端基于ARM平臺和嵌入式系統(tǒng),由于嵌入式系統(tǒng)的獨特性,其測試需要專用的測試工具,主流測試方法可分為靜態(tài)分析法、動態(tài)測試法和綜合測試法三類。采用可靠性增長測試階段的綜合性測試法所獲得的部分?jǐn)?shù)據(jù)進(jìn)行研究。為節(jié)省篇幅,數(shù)據(jù)采用圖7的曲線呈現(xiàn)。
圖7 實驗數(shù)據(jù)曲線
基于前面的研究結(jié)果,采用PCA降維、去噪,得到的主成分輸入到SAGFA-BPNN中進(jìn)行可靠性預(yù)測建模的實驗方法。
建模實驗采用MATLAB仿真軟件進(jìn)行。為了觀察PCA的效果,以及主成分貢獻(xiàn)率對預(yù)測結(jié)果的影響,文章選擇不同的保留率進(jìn)行仿真實驗。
SAGFA-BPNN的訓(xùn)練精度如果設(shè)置的太高則可能造成過訓(xùn)練,降低泛化能力,設(shè)置的太低則影響預(yù)測的準(zhǔn)確率,因此,為了兼顧泛化能力和預(yù)測準(zhǔn)確率,訓(xùn)練的均方誤差設(shè)置為1%。
預(yù)測目標(biāo)值Rti依據(jù)式(13)計算得到,神經(jīng)網(wǎng)絡(luò)的輸出為預(yù)測值Ri,則預(yù)測的絕對誤差為:
δi=|Ri-Rti|
(14)
式中δi為第i個樣本的預(yù)測絕對誤差;Rti為第i組數(shù)據(jù)的目標(biāo)值;Ri為第i組數(shù)據(jù)的預(yù)測值。
實驗采用18組樣本作為訓(xùn)練樣本,另外的9組樣本作為檢驗樣本。不同貢獻(xiàn)率的軟件可靠性預(yù)測結(jié)果如圖8所示,預(yù)測的絕對誤差如圖9所示??梢钥闯?第一,對每組數(shù)據(jù)都能較準(zhǔn)確地預(yù)測出可靠性;第二,模擬保留率為90%的曲線與保留率100%的曲線相比,前者的模擬效果略微好于后者,這說明采用PCA進(jìn)行數(shù)據(jù)預(yù)處理,不僅可以降低維度,還可以在一定程度上去除冗余信息及減小噪聲干擾,更有利于預(yù)測,噪聲信息越多,這種現(xiàn)象越明顯;第三,從誤差的曲線來看,所有點的絕對誤差都在0.07以內(nèi),平均誤差更低,這是由于訓(xùn)練的均方誤差設(shè)置為1%的結(jié)果,若有需要,可通過提高訓(xùn)練指標(biāo)以減小絕對誤差;第四,所建立的軟件可靠性模型具有很強(qiáng)的泛化能力,對檢驗樣本的識別準(zhǔn)確性也非常好。實驗證明,文中提出的可靠性建模方法可行,完全滿足軟件可靠性預(yù)測建模的要求。
圖8 不同貢獻(xiàn)率的軟件可靠性預(yù)測結(jié)果
圖9 不同貢獻(xiàn)率的預(yù)測誤差曲線
針對軟件可靠性預(yù)測問題,在創(chuàng)建優(yōu)化算法并提出SAGFA-BPNN的基礎(chǔ)上,進(jìn)一步提出了基于PCA和SAGFA-BPNN的軟件可靠性預(yù)測模型建模方法,并成功應(yīng)用于采集終端軟件可靠性預(yù)測建模。該方法克服了以往的基于多種神經(jīng)網(wǎng)絡(luò)的軟件可靠性建模存在的收斂速度慢、針對存在冗余和噪聲數(shù)據(jù)的情況預(yù)測準(zhǔn)確率低的難題。仿真及實驗結(jié)果表明,SAGFA-BPNN訓(xùn)練收斂快、全局尋優(yōu)能力強(qiáng),所建立的軟件可靠性模型具有很強(qiáng)的泛化能力,訓(xùn)練速度及預(yù)測效果優(yōu)于典型神經(jīng)網(wǎng)絡(luò)的預(yù)測模型。文章方法具有重要的參考價值。