邢東峰,薛順然,陳光武,石建強
(1.蘭州交通大學自動控制研究所,甘肅 蘭州 730070;2.甘肅省高原交通信息工程及控制重點實驗室,甘肅 蘭州 730070)
隨著數(shù)據(jù)量越來越大,原有算法在計算量和效率上已不能滿足當前需求,細菌算法是新型啟發(fā)式算法,在復雜環(huán)境下求解有很好的效果,但由于原算法在收斂性和最優(yōu)性上還有局限,國內(nèi)外學者進行了相應研究。文獻[5]中在趨化步長代入自適應原理優(yōu)化趨化過程,文獻[6]中在趨化步長中引入了粒子群算法思想加快了趨化過程的速度與導向性,文獻[7]中使用分布估計和差分的方式去優(yōu)化算法的趨化速度和趨化方向。文獻[8]創(chuàng)新出一種能夠加快算法收斂速度的變概率細菌算法。文獻[9]將細菌算法與Q學習結(jié)合,提升算法的尋優(yōu)特性。文獻[10]將免疫算法思想嵌入細菌算法中,能夠很大程度提高算法性能,并可解決相應的實際問題。以上研究實現(xiàn)了對算法的改進,提高了求解精度和收斂性。本文結(jié)合改進啟發(fā)式算法,優(yōu)化貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)學習,將自適應理論與啟發(fā)式算法進行結(jié)合,并且將復制和遷徙操作相結(jié)合,進一步提高算法精度和收斂速度,有利于軌道電路故障診斷與定位。
細菌覓食優(yōu)化(bacterial foraging optimization,BFO)算法由趨化算子(chemotactic),繁殖算子(reproduction)和遷移算子(elimination-dispersal)組成,Passino和Miiller在2002提出,解決了實數(shù)優(yōu)化的問題。
1)趨化算子是尋優(yōu)的過程,主要的行為分為游動(swim)和翻轉(zhuǎn)(tumble)兩部分。細菌根據(jù)當前位置的適應值和下個位置的適應值進行判斷,如果下個適應值高于當前,則向著同方向繼續(xù)游動,否則進行翻轉(zhuǎn),直到達到預定的移動步數(shù)位置。
(1)
(2)
2)原始BFO算法將通過比較細菌的適應能力,使用優(yōu)勝劣汰的法則淘汰適應能力弱的,繁殖能力強的替代淘汰的細菌,從而保持細菌總數(shù)不變,原始BFO的繁殖對象為高適應度的50%的細菌。
3)原始BFO確定了一個固定的遷移概率(Ped),群落中的任一細菌賦予一個隨機的概率,若大于Ped則該菌繼續(xù)保存,小于則對該菌進行遷徙。
傳統(tǒng)BFO算法存在一些缺陷,例如初始化細菌群落分布不均勻;細菌的趨化行為存在的盲目性和隨機性會使得群落尋優(yōu)過程耗時更長,結(jié)果更差;固定不變的遷徙概率值存在會導致優(yōu)秀細菌消亡,不利于算法的尋優(yōu)和收斂。
傳統(tǒng)BFO中的趨化過程是非常重要的步驟。由于趨化步驟有一定的盲目性可能會導致其探索范圍的擴大,并且缺乏各個細菌之間的互相通信,導致算法精度和收斂性較差。因此可通過引入加強各個細菌之間相互通信的粒子群(particle swarm optimization,PSO)算法與細菌算法的趨化過程結(jié)合,粒子同時受到gbest和pbest的影響。同時將自適應參數(shù)融入趨化步驟中可以根據(jù)環(huán)境的濃度縮小細菌的探索范圍并改變游動步長,提高算法的收斂速度和精度,在全局尋優(yōu)和局部尋優(yōu)之間取得平衡。
φ(z)=ω·φ(z)rand+c1·r1·φ(z)pbest
+c2·r2·φ(z)gbest
(3)
(4)
(5)
式(3)(4)(5)中,單個細菌z的個體適應度值最優(yōu)位置Ppbest,整體群落適應度值的全局最優(yōu)位置可用Pgbest代表,個體最優(yōu)向量與全局最優(yōu)向量為φ(z)pbest、φ(z)gbest,個體和全局的學習參數(shù)分別是c1和c2,r1和r2是兩個隨機數(shù)位于[0,1]。J是種群中個體的適應度,C是初始步長。
c1=c2=1+cos(π+π·λ)
(6)
(7)
ω=cos(λ·π/2)
(8)
C=C·(1-λ)
(9)
λ是細菌z的自適應參數(shù),可通過改變λ的值來改變細菌的趨化方向。λ=0可表示細菌適應度很低,可適當增強細菌的探索范圍以確認適應度更好的方向與位置。當適應度提高至λ趨向于1時,此時代表細菌在最優(yōu)位置附近活動,應該縮小細菌探索的范圍與趨化步長,通過細菌之間的相互通信獲知個體和全局最優(yōu)算子的引導下向最優(yōu)位置游動。通過實驗對比可知通過改變適應度的方法比起依靠迭代來對c1和c2進行控制所得結(jié)果更優(yōu)。
(10)
并且通過將遷徙思想直接引入繁殖,簡約了整體程序的復雜性,可直接加快尋優(yōu)速度,保留Sr·s個細菌,保留了種群中的優(yōu)秀個體,同時將剩余的適應度不佳的細菌進行遷徙。遷徙后新增的新個體產(chǎn)生方式將原有的隨機產(chǎn)生方式改變?yōu)槭褂眉腰c集的方法生成,將適應度值優(yōu)秀的前n個細菌填入種群中,可保證整體種群的數(shù)量不變,同時可避免陷入局部最優(yōu)的情況。
步驟1:初始化群落標準參數(shù)。群落大小、搜索的空間維度、趨化的步長、趨化次數(shù)、復制次數(shù)分別為S、n、C、Kd、Kre。
步驟2:群落初始化的方法使用佳點集使得群落可以均勻分布,并且記錄每個細菌初始化之后的適應度fi。
步驟3:設(shè)置算法中的變量。趨化次數(shù)j=1:Kd,復制次數(shù)y=1:Kre。
步驟4:細菌趨化操作,細菌進行趨化尋優(yōu)與方向翻轉(zhuǎn)操作。
步驟5:群落選擇操作。達到趨化次數(shù)之后,使用式(8)的復制操作。累加群落中所有細菌整個生命周期中的適應度得到每個細菌的健康值,按照改進后的復制算法進行群落選擇操作。
步驟6:進行群落遷徙操作。選擇操作結(jié)束以后,進行遷徙操作,對落選的細菌直接進行消亡,同時再利用佳點集生成S個新細菌,選取健康值較優(yōu)的前n個細菌頂替消亡的細菌。
步驟 7 判斷是否滿足算法的停止條件。
可使用具有多個局部最優(yōu)值的函數(shù)來確認改進后算法具有脫離局部最優(yōu)的特性,同時通過比較其他算法可展示改進后算法在收斂性和尋優(yōu)方面的優(yōu)越性。
xi∈[-5.12,5.12]
設(shè)置BFO和改進BFO的基本參數(shù)如下:維度為50;細菌數(shù)量50;趨化次數(shù)Kd=40;復制次數(shù)Kre=5;運行本算法次數(shù)為60。
通過對測試結(jié)果的分析,在算法的收斂性和求解精度方面得出算法的有效性。通過引入PSO全局與個體最優(yōu)位置的影響作用,將細菌向最優(yōu)位置吸引,提高菌群的整體質(zhì)量。在步長方面通過引入自適應參數(shù),來對步長進行自適應控制,在適應度不高的情況下,步長應該增大,以便擴大搜索范圍,快速向適應度好的區(qū)域前進;在適應度逐漸升高后,應該縮短步長,進行精確搜索,在小區(qū)域內(nèi)尋求最優(yōu)解。表1給出了改進算法和傳統(tǒng)BFO的結(jié)果。止條件,若不滿足,轉(zhuǎn)至步驟4,繼續(xù)算法尋優(yōu)操作;若滿足算法停止條件,算法停止。
表1 改進算法和傳統(tǒng)BFO測試結(jié)果
通過實驗比對可以得出,GA與PSO結(jié)果相對較差,改進后的BFO在求解精度上比其他算法有很大的提高,可達7個數(shù)量級的提升,且函數(shù)最優(yōu)值和最差值的相差不大,算法的穩(wěn)定性強。且改進后的算法能夠有效跳出局部最優(yōu)值,在全局范圍內(nèi)得到最優(yōu)值。
通過實驗對比改進前后算法的迭代次數(shù)差別,通過劃分求解范圍與迭代最大次數(shù),可判定算法是否進入早熟狀態(tài)。使用傳統(tǒng)BFO和改進后BFO測試以上4種函數(shù),結(jié)果如表2所示。
表2 傳統(tǒng)BFO和改進BFO迭代次數(shù)對比
由表2可以得出改進后的算法迭代次數(shù)有了極大的減少,并且在傳統(tǒng)BFO陷入早熟的問題中可以得到有效地解決。通過將復制與遷徙結(jié)合,簡化了程序的復雜性,可以使得整個群落保持多樣性,同時避免陷入局部最優(yōu)。因為f4中存在多個局部最優(yōu)值,因此可作為代表來體現(xiàn)改進后算法的優(yōu)越性。f1和f4中兩個算法的最優(yōu)值和迭代次數(shù)的關(guān)系圖1~4。由結(jié)果可知改進算法在復雜環(huán)境下求解最優(yōu)值和收斂速度上有更好的效果。
圖1 傳統(tǒng)BFO平均值與最優(yōu)值
在軌道電路室外設(shè)備的貝葉斯網(wǎng)絡(luò)建模中,首先依據(jù)已有的專家知識進行建模。本文使用MATLAB的FULL-BNT-1.0.7工具箱訓練模型,使用GeNIe軟件構(gòu)圖更加直觀易懂。將常見的易發(fā)生故障的室外設(shè)備設(shè)置為節(jié)點,將收集得到的數(shù)據(jù)信息輸入網(wǎng)絡(luò),得如圖5所示網(wǎng)絡(luò),網(wǎng)絡(luò)結(jié)構(gòu)簡單,診斷正確率較低,且需要大量數(shù)據(jù)的支持。
圖2 改進BFO平均值與最優(yōu)值
圖3 f1傳統(tǒng)BFO和改進BFO對比圖
圖4 傳統(tǒng)BFO和改進BFO對比圖
表3 貝葉斯網(wǎng)絡(luò)節(jié)點編號代表部分
圖5 基于專家知識的貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)圖
利用SEM算法進行貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)學習,得到如圖6所示情況。SEM算法是貝葉斯網(wǎng)絡(luò)經(jīng)典的結(jié)構(gòu)學習算法,由于現(xiàn)有的數(shù)據(jù)不全,并且存在“過冗余”的缺陷導致節(jié)點有向邊缺失,SEM算法得到的網(wǎng)絡(luò)結(jié)構(gòu)是嚴重不符合實際的。利用改進的BFO與貝葉斯網(wǎng)絡(luò)的網(wǎng)絡(luò)結(jié)構(gòu)學習相結(jié)合,來進行貝葉斯網(wǎng)絡(luò)建模。貝葉斯網(wǎng)絡(luò)中節(jié)點m與節(jié)點n之間的關(guān)系有三種,m,n之間無邊;有m指向n的有向邊;有n指向m的有向邊。由此可以對應BFO中翻轉(zhuǎn)的方向,而BFO游動的步長則對應每次涉及到的節(jié)點數(shù),游動步數(shù)大,涉及節(jié)點多,網(wǎng)絡(luò)結(jié)構(gòu)變動大;游動步數(shù)小,涉及節(jié)點少,網(wǎng)絡(luò)結(jié)構(gòu)變動??;使用評分函數(shù)BIC來對每一個得到的網(wǎng)絡(luò)結(jié)構(gòu)行評分,然后將得到的評分作為細菌的適應度。
圖6 基于SEM算法的貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)
(14)
通過這樣的方法,再次進行室外設(shè)備建模,得到模型如圖7。設(shè)定正常閾值,將節(jié)點10~13的數(shù)據(jù)作為網(wǎng)絡(luò)的輸入,節(jié)點1~7作為輸出。由實際現(xiàn)場故障數(shù)據(jù)如表4對此模型進行有效性驗證,輸入故障現(xiàn)象的特征信息T{1 1 0 0}至訓練好的貝葉斯網(wǎng)絡(luò)中,結(jié)果如圖8結(jié)果??芍a償電容故障概率值最大,符合實際結(jié)果,驗證網(wǎng)絡(luò)的正確性。
表4 故障實例驗證
圖7 改進BFO的貝葉斯網(wǎng)絡(luò)
圖8 貝葉斯網(wǎng)絡(luò)后驗概率柱狀圖
收集的故障數(shù)據(jù)為1050條,其中軌道電路室外故障相關(guān)的數(shù)據(jù)有388條,選取其中288條進行貝葉斯網(wǎng)絡(luò)的訓練,使用剩余100條來進行貝葉斯網(wǎng)絡(luò)結(jié)果驗證,測試結(jié)果如表5所示。通過結(jié)果可以得知此網(wǎng)絡(luò)具有較高的準確性。在后續(xù)大量故障數(shù)據(jù)的訓練后,貝葉斯網(wǎng)絡(luò)能夠進行充分的學習,此網(wǎng)絡(luò)可以達到更高的準確性。
表5 故障診斷正確率
1)由于傳統(tǒng)BFO算法存在一些不完善的地方,本文將粒子群算法與BFO算法相結(jié)合,使得細菌之間存在相互通信功能,獲知各個位置最優(yōu)點,提高了算法的收斂性和尋優(yōu)精度。
2)引入自適應參數(shù),使得BFO中的細菌能夠根據(jù)環(huán)境變化變化趨化方向,提高算法精度和收斂速度。
3)將復制操作與遷徙操作相結(jié)合,簡化系統(tǒng)的復雜程度,不僅能夠增加種群多樣性,同時可避免算法陷入局部最優(yōu)。
4)BFO算法與貝葉斯網(wǎng)絡(luò)相結(jié)合生成可診斷軌道電路故障的貝葉斯網(wǎng)絡(luò),同時驗證了其有效性,可以有效幫助工作人員處理故障情況。