李成兵,毛熙皓
(西南石油大學(xué)機(jī)電工程學(xué)院,成都 610500)
目前,紅外氣體傳感器與電化學(xué)氣體傳感器、催化燃燒式氣體傳感器、電化學(xué)氣體傳感器以及二氧化物半導(dǎo)體氣體傳感器相比,紅外氣體傳感器具有探測范圍廣,選擇性好,不容易受有毒有害氣體的影響而中毒、老化,響應(yīng)速度快等優(yōu)勢,紅外氣體傳感器已經(jīng)成為當(dāng)前氣體傳感器的研究熱點(diǎn)之一[1-2]。紅外氣體傳感器是基于紅外吸收光譜原理利用氣體吸收特定紅外光光譜來實(shí)現(xiàn)對氣體的濃度檢測,可探測甲烷(CH4)、氯化氫(HCL)、一氧化碳(CO)、硫化氫(H2S)等氣體,已經(jīng)廣泛應(yīng)用于煤礦、化工等領(lǐng)域的有毒有害氣體檢測[3-7]。
紅外氣體傳感器在工作時(shí)容易受到溫度影響,因?yàn)闅怏w分子吸收特性其吸收系數(shù)與溫度有關(guān),電子元件、光學(xué)元件等均會(huì)受溫度影響而發(fā)生變化導(dǎo)致測試精度和穩(wěn)定性降低[8],對紅外氣體傳感器進(jìn)行溫度補(bǔ)償是十分重要的。常用傳感器溫度補(bǔ)償方法分為硬件補(bǔ)償和軟件補(bǔ)償兩種,硬件補(bǔ)償是通過硬件電路降低溫度對測試結(jié)果的影響,軟件補(bǔ)償則是利用算法對數(shù)據(jù)進(jìn)行融合,文獻(xiàn)[9]利用最小二乘曲線擬合法建立溫度補(bǔ)償模型,文獻(xiàn)[10]利用BP神經(jīng)網(wǎng)絡(luò)建立溫度補(bǔ)償模型,文獻(xiàn)[11]利用RBF徑向神經(jīng)網(wǎng)絡(luò)建立溫度補(bǔ)償模型。
BP神經(jīng)網(wǎng)絡(luò)BP(Back Propagation neural network)是常用的傳感器溫度補(bǔ)償方法,BP神經(jīng)網(wǎng)絡(luò)依靠不斷的誤差反向傳播修改輸入層至隱含層、隱含層至輸出層的閾值和權(quán)值,通過修改后的權(quán)值和閾值降低神經(jīng)網(wǎng)絡(luò)的輸出誤差,但是不斷的反向傳播造成了BP神經(jīng)網(wǎng)絡(luò)運(yùn)算速度慢、訓(xùn)練次數(shù)多且精度不高的缺點(diǎn)。近年來,針對BP神經(jīng)網(wǎng)絡(luò)收斂慢、精度不高的缺點(diǎn),提出了多種混合算法來提高BP神經(jīng)網(wǎng)絡(luò)的運(yùn)算速度和精度,文獻(xiàn)[12]利用遺傳算法建立優(yōu)化模型,文獻(xiàn)[10]利用粒子群算法建立優(yōu)化模型、文獻(xiàn)[13]利用主成分分析法建立優(yōu)化模型,上述混合算法對BP神經(jīng)網(wǎng)絡(luò)的運(yùn)算能力均能產(chǎn)生一定的提升作用,本文提出一種基于自適應(yīng)人工蜂群算法AABC(Adaptive Artificial Bee Colony)對BP神經(jīng)網(wǎng)絡(luò)進(jìn)行參數(shù)優(yōu)化的方案,利用AABC強(qiáng)大的全局搜索功能、收斂速度快、精度高和穩(wěn)定性良好的優(yōu)點(diǎn)對BP神經(jīng)網(wǎng)絡(luò)的閾值和權(quán)值進(jìn)行優(yōu)化,優(yōu)化后的BP神經(jīng)網(wǎng)絡(luò)擁有更好的跳出局部收斂能力、良好的穩(wěn)定性和高精度,使用優(yōu)化后的BP神經(jīng)網(wǎng)絡(luò)對紅外氣體傳感器進(jìn)行溫度補(bǔ)償,提高補(bǔ)償精度和穩(wěn)定性。
人工蜂群算法是Karaboga于2005年提出[14],與蟻群算法、鳥群算法等同為仿生學(xué)算法,受啟發(fā)于蜂群通過個(gè)體分工和信息交換,相互合作完成對花蜜的采集。人工蜂群算法對目標(biāo)函數(shù)和約束幾乎沒有要求,初始參數(shù)的設(shè)置對算法結(jié)果幾乎沒有影響。蜂群主要由引領(lǐng)峰、跟隨蜂和偵查蜂組成。算法分為3個(gè)階段[15]:①引領(lǐng)蜂搜索蜜源;②引領(lǐng)蜂分享蜜源信息,跟隨蜂以一定的概率選擇蜜源進(jìn)行搜索;③偵查蜂在搜索空間隨機(jī)搜索。
具體3個(gè)階段如下[16]:
xid=Ld+rand(0,1)(Ud-Ld)
(1)
引領(lǐng)蜂將在搜索開始時(shí)根據(jù)式(2)在蜜源i的周圍搜索產(chǎn)生一個(gè)新的蜜源:
vid=xid+φ(xid-xjd)
(2)
式中,d是在[1,D]中的一個(gè)隨機(jī)整數(shù),表示引領(lǐng)蜂隨機(jī)的選擇解向量中的一維進(jìn)行搜索;j∈{1,2,…,NP},j≠i,表示在NP個(gè)蜜源中隨機(jī)選擇一個(gè)不等于i的蜜源;φ是[-1,1]均勻分布隨機(jī)數(shù)。
當(dāng)新蜜源Vi=[vi1vi2……vid]的適應(yīng)度優(yōu)于Xi時(shí),采用貪婪選擇的方法用Vi代替Xi,否則保留Xi。
第2階段,所有的引領(lǐng)蜂完成式(2)的運(yùn)算后,飛回信息交流區(qū)共享蜜源信息。跟隨蜂根據(jù)式(3)計(jì)算的概率決定是否跟隨引領(lǐng)蜂:
(3)
隨后跟隨蜂采用輪盤賭的方式進(jìn)行選擇引領(lǐng)蜂,輪盤賭方式為產(chǎn)生一個(gè)[-1,1]均勻分布的隨機(jī)數(shù)r,如果pi大于r,該跟隨蜂按式(2)在蜜源i周圍產(chǎn)生一個(gè)新的蜜源,并且采用同引領(lǐng)蜂相同的貪婪選擇方式確定保留的蜜源。蜜源質(zhì)量越高則吸引的跟隨蜂越多。fi為目標(biāo)值函數(shù),解的適應(yīng)度根據(jù)式(4)計(jì)算:
(4)
第3階段,搜索過程中如果蜜源Xi經(jīng)過trial次迭代搜索到達(dá)蜜源最大開采次數(shù)limit沒有找到更好的蜜源,引領(lǐng)蜂將放棄該蜜源并且轉(zhuǎn)變?yōu)閭刹榉?該偵查蜂會(huì)在搜索空間中隨機(jī)產(chǎn)生一個(gè)新的蜜源代替Xi,整個(gè)過程按照式(5):
(5)
標(biāo)準(zhǔn)人工蜂群算法具有較強(qiáng)的全局搜索能力但是存在不足的是算法在運(yùn)算過程中,高質(zhì)量解可能會(huì)因?yàn)殚L時(shí)間得不到優(yōu)化而被放棄,當(dāng)trail值達(dá)到limit的值時(shí),該高質(zhì)量解會(huì)被放棄。自適應(yīng)人工蜂群算法利用目標(biāo)函數(shù)值fi加權(quán)trail:
(6)
(7)
由此可見,自適應(yīng)人工蜂群算法的步驟[17]:①初始化蜜源Xi,設(shè)定參數(shù)蜜源數(shù)量NP,蜜源最大開采次數(shù)limit,迭代次數(shù)tmax;②將引領(lǐng)蜂分配到蜜源按式(2)進(jìn)行搜索產(chǎn)生新蜜源Vi;③根據(jù)式(4)評價(jià)Vi的適應(yīng)度并對其進(jìn)行貪婪選擇確定是否保留蜜源;④根據(jù)式(3)計(jì)算的概率確定引領(lǐng)蜂所在的蜜源是否被跟隨;⑤跟隨蜂對蜜源進(jìn)行搜索并根據(jù)貪婪選擇的結(jié)果確定是否保留蜜源;⑥根據(jù)加權(quán)運(yùn)算后的Atrial值判斷蜜源Xi是否滿足被放棄的條件,放棄蜜源后引領(lǐng)蜂轉(zhuǎn)變?yōu)閭刹榉?否則直接執(zhí)行步驟⑧;⑦偵查蜂根據(jù)式(7)搜索新的蜜源;⑧完成一次迭代,t=t+1,判斷算法是否滿足終止條件,滿足條件則輸出最優(yōu)解,否則執(zhí)行步驟②。
BP神經(jīng)網(wǎng)絡(luò)是一種具有三層或三層以上的多層神經(jīng)網(wǎng)絡(luò),以三層神經(jīng)網(wǎng)絡(luò)為例,三層網(wǎng)絡(luò)分別為輸入層、隱含層、輸出層。正向傳播和誤差反向傳播為BP神經(jīng)網(wǎng)絡(luò)的兩大步驟,當(dāng)BP神經(jīng)網(wǎng)絡(luò)正向傳播時(shí),輸入值通過輸入層進(jìn)入網(wǎng)絡(luò)結(jié)構(gòu),再由輸入層傳遞給隱含層并加權(quán)計(jì)算后傳遞給輸出層,輸出層經(jīng)過計(jì)算產(chǎn)生輸出值,通過輸出值與期望值進(jìn)行對比,若誤差沒有達(dá)到要求,則實(shí)現(xiàn)反向傳播,修改閾值和權(quán)值來降低誤差直到達(dá)到滿足要求的誤差值,BP神經(jīng)網(wǎng)絡(luò)原理結(jié)構(gòu)圖如圖1所示。
圖1 BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)原理圖
BP神經(jīng)網(wǎng)絡(luò)主要參數(shù)包括[18]:①輸入向量X=(x1,x2,…,xn)T,n為輸入層單元個(gè)數(shù);②輸出向量Y=(y1,y2,…,ym)T,m為輸出層單元個(gè)數(shù);③期望輸出O=(o1,o2,…,om)T;④隱含層輸出向量B=[b1,b2,…,bp]T,p為隱含層單元個(gè)數(shù);⑤輸入層至隱含層權(quán)值和閾值矩陣W=[wj1,wj2,……,wjn]T,C1=[c1,c2,…cj]T,j=1,2,…,p;⑥隱含層至輸出層權(quán)值和閾值矩陣
V=[vk1,vk2,…,vkn]T
C2=[c1,c2,…ck]Tk=1,2,…,m;
各層之間的激活函數(shù)均采用S型函數(shù):
f(x)=1/[1+exp(-x)]
(8)
隱含層激活值sj,j=1,2,…,p:
(9)
隱含層的輸出值為bj=f(sj),輸出層激活值sk,k=1,2,…,m:
(10)
輸出層的輸出值為k=f(sk),記第Z個(gè)訓(xùn)練樣本(XZ,YZ),樣本數(shù)量為T,則第z次訓(xùn)練誤差Ez和全局誤差分E別為:
(11)
(12)
在BP神經(jīng)網(wǎng)絡(luò)中,神經(jīng)元個(gè)數(shù)決定了整個(gè)網(wǎng)絡(luò)的運(yùn)算速度和收斂能力,神經(jīng)元個(gè)數(shù)越多,BP神經(jīng)網(wǎng)絡(luò)的運(yùn)算速度越快、收斂能力越強(qiáng),但是神經(jīng)網(wǎng)絡(luò)的復(fù)雜程度越高,容易出過現(xiàn)擬合現(xiàn)象。神經(jīng)元個(gè)數(shù)越少,神經(jīng)網(wǎng)絡(luò)的計(jì)算精度越低且運(yùn)算速度慢。
BP神經(jīng)可以在訓(xùn)練過程中改進(jìn)權(quán)值與閾值,但是收斂速度過慢且容易陷入局部收斂,精度不高。BP神經(jīng)網(wǎng)絡(luò)的改進(jìn)主要是以下3種[19]:①改進(jìn)神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu);②優(yōu)化神經(jīng)網(wǎng)絡(luò)的激活函數(shù);③優(yōu)化神經(jīng)網(wǎng)絡(luò)的閾值和權(quán)值。本文借助自適應(yīng)人工蜂群算法較強(qiáng)的全局搜索能力和收斂速快、高精度的優(yōu)勢對BP神經(jīng)網(wǎng)絡(luò)的權(quán)值和閾值進(jìn)行優(yōu)化,再將優(yōu)化后的權(quán)值和閾值作為BP神經(jīng)網(wǎng)絡(luò)的初始閾值和初始權(quán)值,可提升BP神經(jīng)網(wǎng)絡(luò)的收斂速度和精度,減少神經(jīng)網(wǎng)絡(luò)的訓(xùn)練次數(shù)。使用(AABC-BP)混合算法時(shí),假設(shè)將BP神經(jīng)網(wǎng)絡(luò)的權(quán)值和閾值W、C1、V、C2矩陣轉(zhuǎn)化為一個(gè)一維數(shù)組,視為AABC的一個(gè)蜜源即優(yōu)化對象,混合算法流程如圖2所示。
(AABC-BP)混合算法的執(zhí)行步驟如下:①設(shè)定AABC算法的蜜源數(shù)量NP,初始化AABC算法的參數(shù);②將式(12)作為AABC算法的目標(biāo)值函數(shù),設(shè)定滿足要求的誤差β;③執(zhí)行AABC算法,記錄并更新最優(yōu)解;④AABC算法完成后,若E≤β,輸出最優(yōu)解即BP神經(jīng)網(wǎng)絡(luò)的權(quán)值和閾值組成的一維數(shù)組;否則繼續(xù)執(zhí)行步驟③;⑤將輸出的最優(yōu)解作為BP神經(jīng)網(wǎng)絡(luò)的初始權(quán)值和閾值對樣本進(jìn)行訓(xùn)練。
圖2 混合算法流程
為了驗(yàn)證AABC算法的穩(wěn)定性、收斂速度和跳出局部收斂的性能,采用3種常規(guī)測試函數(shù)對AABC、ABC以及性能較強(qiáng)的混沌粒子算法CPSO(Chaotic Particle Swarm Optimization)進(jìn)行性能對比。測試函數(shù)見表1,Rosenbrock函數(shù)xj的范圍為[-10,10],全局極值為0,Ackley函數(shù)的范圍為[-32,32],全局極值為0,Griewank函數(shù)的范圍為[-600,600],全局極值為0。
設(shè)AABC和ABC算法的蜜源數(shù)NP為100、蜜源最大開采次數(shù)limit為10、搜索空間的上限Ud和下限Ld為各個(gè)測試函數(shù)的xj范圍,迭代次數(shù)100次。設(shè)CPSO算法的種群規(guī)模為100,進(jìn)化次數(shù)100次使用MATLAB2014a進(jìn)行試驗(yàn)測試,使用AABC、ABC、CPSO對3種測試函數(shù)進(jìn)行收斂測試,各算法對不同測試函數(shù)完成20次試驗(yàn)。
表1 測試函數(shù)
圖3~圖5的縱坐標(biāo)表示函數(shù)最小值取以10為底的對數(shù),由表2和圖3~圖5可以看出AABC算法的收斂速度更快、精度更高,AABC算法跳出局部收斂的速度最快且多次迭代后算法依然沒有陷入局部最小值。經(jīng)過平均最小值和最佳最小值對比,AABC算法比ABC算法和CPSO算法擁有更好的全局所搜能力,證明對ABC算法的改進(jìn)是有效的。
圖3 Griewank函數(shù)最佳極小值求解過程曲線
圖4 Akley函數(shù)最佳極小值求解過程曲線
圖5 Rosenbrock函數(shù)最佳極小值求解過程曲線
表2 性能測試結(jié)果
選擇甲烷(CH4)作為實(shí)驗(yàn)的測試對象,實(shí)驗(yàn)溫度范圍選取[-20,20]℃中的7個(gè)溫度點(diǎn),其中6個(gè)作為訓(xùn)練樣本,1個(gè)作為測試樣本,環(huán)境壓力控制在1 atm,濕度控制在60%。測試在恒溫箱中進(jìn)行并通過氮?dú)飧淖儨y試溫度。實(shí)測濃度和溫度作為溫度補(bǔ)償?shù)妮斎?本文通過(AABC-BP)、(ABC-BP)、(CPSO-BP)3種混合算法完成溫度補(bǔ)償并進(jìn)行補(bǔ)償精度對比。
實(shí)驗(yàn)選用IRL715型號光源和PYS3228TC型號探測器,測試濾光片和參考濾光片濾波參數(shù)分別為3.31 μm+60-L、3.39 μm+90-L,單片機(jī)系統(tǒng)型號為STM32F103VE,信號放大芯片型號為AD620A,串口通信接口型號為RS232,系統(tǒng)原理圖如圖6所示。
圖6 溫度補(bǔ)償系統(tǒng)原理圖
進(jìn)行紅外氣體傳感器溫度補(bǔ)償時(shí),測試濃度C0和溫度作為輸入,維度為2,輸出補(bǔ)償結(jié)果C*維度為1,設(shè)定BP神經(jīng)網(wǎng)絡(luò)層數(shù)為3層,隱含層神經(jīng)元個(gè)數(shù)為6個(gè),輸入層至隱含層權(quán)值和閾值矩陣維數(shù)分別為W[6*2]、B1[1*2],隱含層至輸出層權(quán)值和閾值矩陣維數(shù)分別為V[2*6]、B2[1*1],再將所有矩陣轉(zhuǎn)化為一個(gè)一位數(shù)組,作為AABC、ABC算法的蜜源和CPSO的初始種群,設(shè)AABC、ABC算法的蜜源NP為100,蜜源最大開采次數(shù)limit為10,迭代次數(shù)100,搜索空間范圍[-20,20],粒子群種群規(guī)模為100,進(jìn)化次數(shù)100,BP神經(jīng)網(wǎng)絡(luò)的參數(shù)調(diào)整方式為梯度下降法,訓(xùn)練次數(shù)100次。
實(shí)驗(yàn)數(shù)據(jù)見表3,單位為氣體爆炸下限%LEL,C0表示測量百分比濃度,C表示實(shí)際百分比濃度,將濃度數(shù)據(jù)和溫度數(shù)據(jù)進(jìn)行范圍為[0,1]的歸一化,x、T表示實(shí)驗(yàn)數(shù)據(jù)和溫度,xmax、xmin表示輸入最大值和最小值,tmax、tmin表示溫度的最大值和最小值:
(13)
更多的訓(xùn)練樣本可小幅提升AABC-BP的精度,但是會(huì)增加BP的訓(xùn)練時(shí)間。因此,在保證精度滿足要求的同時(shí),盡量減少訓(xùn)練樣本個(gè)數(shù),從而節(jié)約訓(xùn)練時(shí)間。不同BP訓(xùn)練樣本個(gè)數(shù)的精度與計(jì)算速度測試實(shí)驗(yàn)結(jié)果如圖7所示,選擇6組訓(xùn)練樣本可保證BP精度滿足工程要求,并且訓(xùn)練時(shí)間較短。因此,本文訓(xùn)練樣本數(shù)確定為6組。
測試樣本選擇溫度7.5 ℃、12.5 ℃、15 ℃下的測量值。樣本訓(xùn)練和部分測試結(jié)果反歸一化后見表4、表5,圖8為3種混合算法的訓(xùn)練過程圖。使用3種不同優(yōu)化方法后的BP神經(jīng)網(wǎng)絡(luò)均能在訓(xùn)練100次以內(nèi)達(dá)到最優(yōu),AABC-BP算法達(dá)到全局最優(yōu)的訓(xùn)練次數(shù)最少,其他兩種優(yōu)化方法陷入局部收斂的次數(shù)較多。
表3 原始數(shù)據(jù) %LEL
圖7 訓(xùn)練樣本個(gè)數(shù)對訓(xùn)練誤差和訓(xùn)練時(shí)間的影響
表4 樣本訓(xùn)練平均誤差
表5 15.0 ℃測試結(jié)果 %LEL
圖8 3種混合算法的訓(xùn)練過程
測試樣本誤差見表6,(AABC-BP)算法平均誤差最小且測試最大誤差小于(ABC-BP)算法和(CPSO-BP)算法。
表6 測試樣本誤差對比
首先證明了引入AABC算法對ABC算法進(jìn)行改進(jìn)是有效的,同時(shí)也證明(AABC-BP)算法進(jìn)行紅外氣體傳感器溫度補(bǔ)償時(shí)有較強(qiáng)的穩(wěn)定性和魯棒性,如圖9所示,誤差在5%范圍內(nèi),滿足工程誤差要求,補(bǔ)償結(jié)果較為理想。
圖9 AABC-BP算法3個(gè)測試樣本的測試誤差
提出一種基于人工蜂群算法對紅外氣體傳感器進(jìn)行溫度補(bǔ)償方法,并針對人工蜂群算法運(yùn)算過程中優(yōu)質(zhì)解容易被放棄的問題,引用自適應(yīng)人工蜂群算法,即對放棄條件進(jìn)行加權(quán)評價(jià),提高優(yōu)質(zhì)解生存時(shí)間。通過3種不同的測試函數(shù)對AABC算法、ABC算法、CPSO算法進(jìn)行性能測試后表明AABC算法有著較強(qiáng)的全局搜索能力、較快的收斂速度和較好的穩(wěn)定性,對BP溫度補(bǔ)償模型性能提高較大。采用(AABC-BP)混合算法對進(jìn)行傳感器溫度補(bǔ)償,樣本訓(xùn)練和測試結(jié)果表明,(AABC-BP)算法可有效提高BP神經(jīng)網(wǎng)絡(luò)的收斂速度和計(jì)算精度,紅外氣體傳感器的溫度補(bǔ)償結(jié)果誤差在5%以內(nèi)。