李成兵,葉 超,毛熙皓
(西南石油大學(xué)機電工程學(xué)院,四川成都610500)
易燃易爆氣體泄漏引發(fā)的燃燒和爆炸事故在石油化工、交通運輸?shù)刃袠I(yè)時有發(fā)生。常見的易燃易爆氣體有酒精氣體、甲烷、一氧化碳和氫氣等,一般情況下,泄漏的易燃易爆氣體并非單一性質(zhì)氣體,而是幾種氣體的混合體。因此,對易燃易爆混合氣體進行定量分析具有非常重要的意義,但因各氣體傳感器間存在交叉敏感性[1],不能實現(xiàn)對各組分氣體濃度的精確測量。目前,提高混合氣體中各組分氣體濃度測量精度的方法主要有支持向量機(support vector machine,SVM)[2-3]、最小二乘支持向量機[4-7]和BP(back propagation,反向傳播)神經(jīng)網(wǎng)絡(luò)[8-11]等。金翠云等人[2]利用PSO 算法對SVM 的參數(shù)進行了優(yōu)化,并將優(yōu)化后的SVM應(yīng)用于氣體定量分析,減小了測量誤差。曲健等人[3]利用自適應(yīng)PSO算法優(yōu)化了SVM的參數(shù),并與利用遺傳算法優(yōu)化的結(jié)果進行對比,發(fā)現(xiàn)采用自適應(yīng)PSO 算法時分析模型的建模時間較長,但預(yù)測精度較高。曾燕等人[4]將LSSVM應(yīng)用于下水道可燃?xì)怏w的定量分析。李玉軍等人[5]將PSO 算法與LSSVM 相結(jié)合,建立了混合氣體定量分析模型,提高了混合氣體中各組分氣體濃度的測量精度。丁續(xù)達等人[6]利用LSSVM對燃煤發(fā)電排放的NOx的濃度進行了在線預(yù)測。丁知平等人[7]使用引力算法優(yōu)化了LSSVM,從而提高了NOx濃度的預(yù)測精度。王春晨等人[8]將BP神經(jīng)網(wǎng)絡(luò)與PID(proportion integration differentiation,比例積分微分)控制器相結(jié)合,實現(xiàn)混合氣體的配比。張瑞華[9]通過BP人工神經(jīng)網(wǎng)絡(luò)建立了一定濃度可燃混合氣體的爆炸超壓模型。黃偉軍等人[10]改進了BP神經(jīng)網(wǎng)絡(luò),實現(xiàn)了汽車尾氣各組分氣體濃度的測量。龔雪飛等人[11]利用PSO算法對BP神經(jīng)網(wǎng)絡(luò)進行優(yōu)化,實現(xiàn)了多元有害氣體的濃度測量,并提高了測量精度。BP神經(jīng)網(wǎng)絡(luò)的收斂精度和預(yù)測精度與其網(wǎng)絡(luò)結(jié)構(gòu)的選擇有很大關(guān)系,因此其輸出具有不可預(yù)測性和不一致性,且BP神經(jīng)網(wǎng)絡(luò)的本質(zhì)為梯度下降法,其學(xué)習(xí)的時間較長,而LSSVM可以很好地避開上述問題。
為此,筆者提出一種利用改進人工蜂群算法優(yōu)化LSSVM的方法,對含有酒精氣體、甲烷、一氧化碳和氫氣的混合氣體進行定量分析。首先,通過在標(biāo)準(zhǔn)人工蜂群算法中引入自適應(yīng)遞減因子以更新搜索步長,并結(jié)合輪盤賭與反向輪盤賭機制來改進待工蜂跟隨概率公式,以提高搜索精度;然后,利用IABC算法對LSSVM 的懲罰參數(shù)C 和核參數(shù)σ2進行優(yōu)化,使LSSVM擁有具有更高的計算精度;最后,將優(yōu)化后的LSSVM用于混合氣體定量分析,以提高在交叉敏感狀態(tài)下混合氣體中各組分氣體濃度的測量精度。
最小二乘支持向量機(LSSVM)是由Suykens等[12]在SVM的基礎(chǔ)上提出的,將SVM中的不等式約束轉(zhuǎn)變?yōu)榈仁郊s束,并選取誤差平方和作為優(yōu)化目標(biāo)函數(shù),使得二次規(guī)劃問題轉(zhuǎn)化為線性方程組求解問題,從而降低了計算難度。LSSVM在非線性系統(tǒng)建模方面更具有優(yōu)勢[13-14],其基本思想如下。
給定一個訓(xùn)練數(shù)據(jù)集T ={( xi,yi)|i=1,2,…,l },其中輸入為n維向量xi,輸出為yi,l為訓(xùn)練樣本個數(shù),則LSSVM的優(yōu)化問題可以描述為:
式中:w為權(quán)值向量,C為懲罰參數(shù),ei為誤差,φ(·)為原空間到高維空間的非線性映射,b為閾值。
由于w可能有無限的維數(shù),直接求解式(1)較為困難,因此引入拉格朗日函數(shù):
式中:αi≥0,為拉格朗日乘子。
根據(jù)取極值的必要條件,設(shè)拉格朗日函數(shù)對于各個變量的偏導(dǎo)數(shù)為零,可得:
引入核函數(shù):
基于核函數(shù),可將式(4)整理為:
式中:Ω 為一個方陣,其第i 行第j 列元素Ωij=K ( xi,xj);I為單位矩陣;ξ =[1,…,1]T。
本文選擇徑向基函數(shù)作為核函數(shù):
式中:σ2為核寬度。
根據(jù)式(6)求出的α 和b 構(gòu)造用于函數(shù)估計的LSSVM模型:
標(biāo)準(zhǔn)人工蜂群(ABC)算法于2005年由Karaboga提出[15],常用于求解函數(shù)極值問題。在標(biāo)準(zhǔn)ABC算法中,蜂群由3 種蜂組成:采蜜蜂、待工蜂、偵查蜂。采蜜蜂搜索蜜源,測量蜜源質(zhì)量即適應(yīng)度函數(shù)值,并將蜜源信息分享給其他蜜蜂;待工蜂通過采蜜蜂分享的信息,以一定的概率選擇蜜源進行搜索;偵查蜂隨機搜索蜜源。
標(biāo)準(zhǔn)ABC算法實現(xiàn)的具體步驟如下[16-18]:
1)初始化蜜蜂種群。初始時刻所有蜜蜂均為偵查蜂,全局隨機搜索蜜源,蜜源的位置代表空間內(nèi)的可能解向量,蜜源的初始位置在搜索空間隨機產(chǎn)生,隨機產(chǎn)生的公式為:
式中:蜜源m(m=1,2,…,N)與蜜蜂一一對應(yīng),N為蜜源即蜜蜂個數(shù);Xnm表示蜜源位置,Xnmax和Xnmin分別表示搜索空間的上限和下限,n=1,2,…,D,D 為優(yōu)化問題參量的個數(shù);rand(0,1)為[0,1]內(nèi)的隨機數(shù)。
搜索到蜜源初始位置后,所有偵查蜂轉(zhuǎn)變?yōu)椴擅鄯洌y量每個蜜源的適應(yīng)度函數(shù)值(用于衡量蜜源的質(zhì)量),然后采蜜蜂在蜜源初始位置鄰域內(nèi)搜索新蜜源:
式中:k∈{1,2,…,N},且k≠m;rand(-1,1)為[-1,1]內(nèi)的隨機數(shù)。
當(dāng)新蜜源的適應(yīng)度函數(shù)值優(yōu)于舊蜜源的適應(yīng)度函數(shù)值時,根據(jù)貪婪準(zhǔn)則,以新蜜源取代舊蜜源,否則保留舊蜜源。
2)對所有采蜜蜂測量得到的適應(yīng)度函數(shù)值進行排序,排名靠后的采蜜蜂成為待工蜂,一般定義待工蜂和采蜜蜂各占種群一半。然后,采蜜蜂飛回交流區(qū)把蜜源信息分享給待工蜂,待工蜂依據(jù)輪盤賭機制對蜜源進行選擇,選擇概率為:
式中:Gm為解的適應(yīng)度函數(shù)值,fm為目標(biāo)函數(shù)值。
對于每只待工蜂,在選擇一個蜜源后,按式(10)在該蜜源鄰域內(nèi)尋找其他蜜源,若新蜜源的適應(yīng)度函數(shù)值更優(yōu),則取代原蜜源,且該待工蜂轉(zhuǎn)換為采蜜蜂。
對于每只采蜜蜂,在分享信息后,繼續(xù)在該蜜源附近尋找新蜜源并計算其適應(yīng)度函數(shù)值,然后根據(jù)貪婪準(zhǔn)則進行選取。
3)若在搜索過程中,經(jīng)過s次搜索并得到一定的搜索閾值T后仍沒有找到更優(yōu)的蜜源,則采蜜蜂和待工蜂將放棄該蜜源且轉(zhuǎn)變?yōu)閭刹榉?,并按式?)重新隨機產(chǎn)生一個新的蜜源。
在標(biāo)準(zhǔn)ABC算法中,蜂群搜索的范圍和精度由步長rand(-1,1)決定:當(dāng)rand(-1,1)較大時,算法收斂速度較快,但隨著優(yōu)化趨近最優(yōu)值,容易跳過全局最優(yōu)解;當(dāng)rand(-1,1)較小時,算法收斂速度較慢,但收斂精度高。對標(biāo)準(zhǔn)ABC算法分析可知,在搜索前期,應(yīng)取較大的步長,以保證收斂速度,加快向最優(yōu)解靠攏;在搜索后期,算法搜索到的值逐漸靠近最優(yōu)解,應(yīng)逐漸減小步長以實現(xiàn)對最優(yōu)解周圍進行細(xì)化搜索,減少在最優(yōu)值附近的動蕩,提高收斂精度?;诖?,引入了一種自適應(yīng)遞減因子來更新搜索步長,其公式為:
式中:μ為自適應(yīng)遞減因子,round()為四舍五入函數(shù),t為當(dāng)前迭代次數(shù),tmax為最大迭代次數(shù),β ∈(1,tmax)且? 不為整數(shù),γ ∈(0,1)。
設(shè)tmax=100,當(dāng)β和γ取不同值時,μ與迭代次數(shù)的關(guān)系曲線如圖1所示。
由圖1 可以看出,當(dāng)γ 相同時,β 值越小,維持大步長的迭代次數(shù)越多,說明算法在搜索前期的收斂速度較快;當(dāng)β相同時,γ值越小,達到最大迭代次數(shù)時μ越小,說明算法在搜索后期的收斂精度更高。
圖1 β、γ不同時μ與迭代次數(shù)的關(guān)系曲線Fig. 1 The relationship between μ and iteration times under different β and γ
同時,在標(biāo)準(zhǔn)ABC算法中,待工蜂按照式(11)對蜜源進行選擇,適應(yīng)度越高的蜜源被選擇的概率越大,但這種選擇方式會使蜂群在優(yōu)化過程中朝著適應(yīng)度高的蜜源集中,而適應(yīng)度低的蜜源則會被迅速淘汰,這會導(dǎo)致蜂群多樣性降低,使得種群早熟收斂而不能達到全局最優(yōu)。因此,在算法搜索前期應(yīng)使待工蜂對適應(yīng)度高的蜜源進行搜索,以保證收斂速度,而在算法搜索后期應(yīng)使待工蜂對適應(yīng)度低的蜜源進行適當(dāng)?shù)母櫵阉鳎员3址N群的多樣性,避免陷入局部最優(yōu)。為此,引進反向輪盤賭機制[19],并結(jié)合輪盤賭和反向輪盤賭,改進待工蜂的跟隨概率公式,具體改進公式為:
式中
改進后,既保證了算法在搜索前期對高適應(yīng)度蜜源搜索的收斂速度,又增大了搜索后期稍差適應(yīng)度蜜源的被選擇概率,保持了蜂群的多樣性,提高了算法的求泛能力。
為測試IABC算法的性能(主要為收斂精度),選取5個常用測試函數(shù)進行實驗,并與PSO算法進行對比。常用的5個測試函數(shù)如表1所示,每個函數(shù)的最優(yōu)值均為0,其中:測試函數(shù)Sphere 的搜索范圍為[-100,100],Schaffer 的搜索范圍為[-100,100],Schwefel 的搜索范圍為[-500,500],Griewank 的搜索范圍為[-600,600],Rosenbrock 的搜索范圍為[-2.048,2.048]。
表1 常用的5個測試函數(shù)Table 1 Five commonly used test functions
設(shè)IABC算法的種群規(guī)模為20,維數(shù)為2,最大迭代次數(shù)tmax=100,搜索閾值T=10,γ=0.92,β=1.3。設(shè)PSO 算法的種群規(guī)模為20,維數(shù)為2,最大迭代次數(shù)為100,慣性權(quán)重因子為0.8,學(xué)習(xí)因子c1=1.5,c2=1.8。使用MATLAB R2017b進行實驗測試,每種優(yōu)化算法對每個測試函數(shù)進行10 次實驗,測試結(jié)果如表2 所示。通過對比表2中最優(yōu)值、最劣值和平均值可以看出:IABC 算法對5個測試函數(shù)的收斂精度要比PSO算法高,且收斂效果更好。
表2 IABC算法和PSO算法的性能測試結(jié)果對比Table 2 Comparison of performance test results between IABC algorithm and PSO algorithm
同時,為評價IABC 算法和PSO 算法的復(fù)雜度,通過計算各算法的運行時間來對比其復(fù)雜度[20]。分別使用IABC 算法和PSO 算法對5 個測試函數(shù)進行1 000次迭代,采用高迭代次數(shù)是為了使2種算法的優(yōu)化時間的差異更加顯著。每個測試函數(shù)進行10次測試,并計算2種算法的平均優(yōu)化時間,結(jié)果如圖2所示。由圖可知,IABC算法迭代1 000次所用的時間分別為:3.351 s(函數(shù)Sphere)、4.447 s(函數(shù)Schaffer)、4.361 s(函數(shù)Schwefel)、4.099 s(函數(shù)Griewank)、4.663 s(函數(shù)Rosenbrock),均略低于PSO算法的優(yōu)化時間(3.459 s(函數(shù)Sphere)、4.972 s(函數(shù)Schaffer)、4.615 s(函數(shù)Schwefel)、4.273 s(函數(shù)Griewank)、5.314 s(函數(shù)Rosenbrock))。通過對比2種算法的優(yōu)化時間可知,IABC 算法的迭代速度稍高于PSO 算法,說明計算過程中IABC 算法的復(fù)雜度低于PSO算法。
圖2 IABC算法和PSO算法優(yōu)化時間對比Fig. 2 Comparison of optimization time between IABC algorithm and PSO algorithm
在20℃、相對濕度為50%的環(huán)境下對包含酒精氣體、甲烷、一氧化碳和氫氣的混合氣體進行濃度檢測。酒精氣體、甲烷、一氧化碳、氫氣四種氣體的濃度范圍分別為:190~770,260~400,110~470,15~45 mg/m3。實驗中使用的傳感器為:鄭州煒盛電子科技有限公司生產(chǎn)的MQ-3B 酒精傳感器,檢測濃度范圍為47.8~956.7 mg/m3;MQ-4 甲烷傳感器,檢測濃度范圍為199.7~6 655.3 mg/m3;MQ-7B一氧化碳傳感器,檢測濃度范圍為11.6~582.3 mg/m3;MQ-8氫氣傳感器,檢測濃度范圍為8.3~83.2 mg/m3。選用的傳感器皆為半導(dǎo)體電阻式傳感器,各傳感器的電導(dǎo)率隨著待測氣體濃度的增大而增大,擁有較高的靈敏度。采用STM32F103VET6作為單片機最小系統(tǒng),測試系統(tǒng)原理圖和測試環(huán)境分別如圖3和圖4所示。
采集各組分濃度不同的混合氣體以及傳感器響應(yīng)值,共計得到50組樣本數(shù)據(jù),取其中40組樣本數(shù)據(jù)作為訓(xùn)練樣本,剩余10組作為測試樣本。為使數(shù)據(jù)更符合算法的輸入,需對獲取的原始樣本進行歸一化處理(將樣本數(shù)據(jù)歸一化到[0,1]內(nèi)),歸一化公式如下:
圖3 混合氣體濃度測試系統(tǒng)原理圖Fig. 3 Schematic diagram of mixture gas concentration test system
圖4 混合氣體濃度測試環(huán)境Fig. 4 Mixture gas concentration test environment
式中:Uq是采集到的樣本數(shù)據(jù),Uqmax、Uqmin為數(shù)據(jù)樣本中最大值和最小值。
利用LSSVM 建立混合氣體定量分析模型前需對其懲罰參數(shù)C和核參數(shù)σ2進行合理的優(yōu)化選擇,本文采用IABC算法對懲罰參數(shù)和核參數(shù)進行尋優(yōu),并與常用的混合氣體定量分析方法——PSO算法的尋優(yōu)結(jié)果進行對比,具體的尋優(yōu)過程如下:
1)對LSSVM 的懲罰參數(shù)C 和核參數(shù)σ2進行初始化,初步建立回歸模型。
2)初始化IABC 算法的種群規(guī)模、最大迭代次數(shù)、搜索閾值、自適應(yīng)因子等參數(shù)以及懲罰參數(shù)C和核參數(shù)σ2的搜索范圍。
3)將模型輸出結(jié)果的均方誤差作為IABC 算法的適應(yīng)度值,并設(shè)定合適的均方誤差作為閾值。
4)執(zhí)行IABC算法,記錄并更新最優(yōu)解。
5)判斷優(yōu)化結(jié)果是否滿足設(shè)定的均方誤差或者達到最大迭代次數(shù),若滿足則輸出最優(yōu)解,即輸出最佳的C和σ2,否則轉(zhuǎn)第4)步。
為提高測量精度,利用LSSVM分別構(gòu)建酒精氣體、甲烷、一氧化碳和氫氣的定量分析模型,然后再利用IABC 算法對各組分氣體定量分析模型的參數(shù)分別進行優(yōu)化。以甲烷氣體定量分析模型的參數(shù)優(yōu)化為例,設(shè)IABC算法的種群規(guī)模為20,維數(shù)為2,最大迭代次數(shù)為100,搜索閾值為10,γ=0.92,β=1.3;LSS-VM 懲罰參數(shù)C 和核參數(shù)σ2的搜索范圍設(shè)置為(0,100)。根據(jù)上述的模型優(yōu)化流程進行分析,得到基于IABC 算法的甲烷氣體定量分析模型參數(shù)優(yōu)化誤差曲線,如圖5所示。
圖5 基于IABC 算法的甲烷氣體定量分析模型參數(shù)優(yōu)化誤差曲線Fig. 5 Optimization error curve of parameters of quantitative analysis model for methane gas based on IABC algorithm
從圖5可以看出,IABC算法在經(jīng)過46次迭代后便找到了最優(yōu)解,具有較快的收斂速度。IABC算法迭代100 次所用的時間為7.840 s,此時均方誤差最小,為4.642×10-4,懲罰參數(shù)C=58.260,核參數(shù)σ2=9.124。用同樣的方法對酒精氣體、一氧化碳和氫氣的定量分析模型進行優(yōu)化,得到對應(yīng)的懲罰參數(shù)、核參數(shù)、均方誤差以及迭代時間,如表3所示。
表3 IABC 算法對各組分氣體定量分析模型參數(shù)的優(yōu)化結(jié)果Table 3 Optimization results of parameters of quantitative analysis model for each component gas by IABC algorithm
同樣地,采用PSO 算法對各組分氣體定量分析模型進行參數(shù)優(yōu)化。本文設(shè)PSO 算法種群規(guī)模、維數(shù)及最大迭代次數(shù)均與IABC 算法相同,分別為20,2,100;PSO 算法慣性權(quán)重因子為0.8,學(xué)習(xí)因子c1=1.5,c2=1.8。PSO 算法的優(yōu)化流程如圖6 所示,基于PSO算法的甲烷氣體定量分析模型參數(shù)優(yōu)化誤差曲線如圖7所示。
由圖7 可以看出,PSO 算法在經(jīng)過51 次迭代后找到了最優(yōu)解,PSO 算法迭代100 次所用的時間為13.021 s,收斂速度稍慢于IABC 算法。此時均方誤差 為3.247×10-3,懲 罰 參 數(shù)C=39.331,核 參 數(shù)σ2=0.845。用同樣的方法對酒精氣體、一氧化碳和氫氣的定量分析模型進行優(yōu)化,得到對應(yīng)的懲罰參數(shù)、核參數(shù)、均方誤差以及迭代時間,如表4所示。
圖6 PSO算法優(yōu)化流程Fig. 6 Optimization process of PSO algorithm
圖7 基于PSO 算法的甲烷氣體定量分析模型參數(shù)優(yōu)化誤差曲線Fig. 7 Optimization error curve of parameters of quantitative analysis model for methane gas based on PSO algorithm
表4 PSO 算法對各組分氣體定量分析模型參數(shù)的優(yōu)化結(jié)果Table 4 Optimization results of parameters of quantitative analysis model for each component gas by PSO algorithm
結(jié)合表3、表4可以看出,IABC算法對各組分氣體定量分析模型的優(yōu)化時間總和為45.117 s,PSO算法對各組分氣體定量分析模型的優(yōu)化時間總和為47.677 s,IABC算法所用的時間略短于PSO算法,且IABC算法對各組分氣體定量分析模型參數(shù)進行優(yōu)化后得到的均方誤差明顯小于PSO算法。將優(yōu)化得到的懲罰參數(shù)和核參數(shù)代入LSSVM以重建各組分氣體定量分析模型,并對各測試樣本的氣體濃度進行預(yù)測,基于2種算法的混合氣體各組分濃度的預(yù)測結(jié)果如表5所示,預(yù)測相對誤差分別如圖8和圖9所示。
表5 基于IABC-LSSVM和PSO-LSSVM的混合氣體各組分濃度測試結(jié)果Table 5 Test results of concentration of each component of mixture gas based on IABC-LSSVM and PSO-LSSVM
圖8 基于IABC-LSSVM 的混合氣體各組分濃度預(yù)測的相對誤差Fig. 8 Relative error of concentration prediction of each component of mixture gas based on IABC-LSSVM
圖9 基于PSO-LSSVM 的混合氣體各組分濃度預(yù)測的相對誤差Fig. 9 Relative error of concentration prediction of each component of mixture gas based on PSO-LSSVM
通過表5、圖8、圖9可以看出,基于IABC算法和PSO算法所建立的定量分析模型對混合氣體各組分濃度的預(yù)測誤差水平是不同的。采用IABC 算法優(yōu)化LSSVM 后對各組分氣體濃度預(yù)測的平均相對誤差分別為3.17%(酒精氣體)、4.25%(甲烷)、4.72%(一氧化碳)、3.62%(氫氣),低于PSO 算法優(yōu)化LSSVM后預(yù)測的平均相對誤差(3.87%(酒精氣體)、4.83%(甲烷)、7.09%(一氧化碳)、4.20%(氫氣))。結(jié)果表明IABC算法優(yōu)化的LSSVM在交叉敏感狀態(tài)下對混合氣體各組分濃度的預(yù)測精度要優(yōu)于PSO算法優(yōu)化的LSSVM,且IABC 算法比PSO 算法具有更強的魯棒性。
本文提出了一種利用IABC 優(yōu)化LSSVM 的方法,并將它應(yīng)用于交叉敏感狀態(tài)下混合氣體的定量分析。通過在標(biāo)準(zhǔn)ABC算法中引入自適應(yīng)遞減因子,并結(jié)合輪盤賭和反向輪盤賭選擇機制來改進待工蜂跟隨概率公式,提高了算法的收斂精度。利用IABC算法優(yōu)化LSSVM的參數(shù),并使用優(yōu)化后的參數(shù)重建定量分析模型,以提高對混合氣體各組分濃度的測量精度。
通過5 個常用的基準(zhǔn)測試函數(shù)對IABC 算法和PSO算法進行測試后表明,IABC算法具有更高的收斂精度?;旌蠚怏w定量分析實驗表明,采用IABC算法對各組分氣體定量分析模型進行優(yōu)化,優(yōu)化所用的總時間和各模型的均方誤差均低于采用PSO 算法的;利用優(yōu)化后的各組分氣體定量分析模型對混合氣體各組分濃度進行預(yù)測,IABC-LSSVM 對混合氣體各組分濃度預(yù)測的平均相對誤差也低于PSO-LSS-VM。因此,在交叉敏感狀態(tài)下,利用IABC算法優(yōu)化LSSVM 的方法可有效提高混合氣體各組分濃度的測量精度。