行鴻彥,郭 敏,張 蘭,張一波
(1.南京信息工程大學(xué)氣象災(zāi)害預(yù)報預(yù)警與評估協(xié)同創(chuàng)新中心,南京 210044;2.南京信息工程大學(xué)江蘇省氣象探測與信息處理重點實驗室,南京 210044)
近年來,HMP45D溫濕度傳感器被廣泛應(yīng)用在自動氣象站中,它是用鉑電阻傳感器Pt100來測量溫度的。鉑電阻材料有很多優(yōu)點[1-2],如:測溫精確度高,性能好,操作簡單,適用范圍廣等。但是,在實際應(yīng)用中,濕度,輻射等諸多因素影響著溫度傳感器的測量結(jié)果[3-4],使其呈現(xiàn)一種非線性的趨勢,嚴重影響了溫度傳感器測量的精確度。和其他因素相比,濕度對溫度傳感器的測量結(jié)果影響最大,所以,對溫度傳感器進行濕度補償是十分必要的,來增強測量精確性,減小誤差。
為了盡量提高溫度傳感器測量的精確度,減小因濕度帶來的誤差,可以從硬件電路和軟件兩方面進行補償。硬件電路[5-6]補償方法的電路繁瑣,操作困難,不易理解,并且電路中的一些元件受到濕度變化還會產(chǎn)生溫度漂移的現(xiàn)象,使得溫度傳感器測量結(jié)果的準確性變低。軟件補償方法有模擬退火方法、差分進化算法、禁忌搜索、BP神經(jīng)網(wǎng)絡(luò)等[7-10]。模擬退火算法質(zhì)量高,初值魯棒性強,簡單易懂,但它的初始溫度要高、終止溫度要低、降溫速率要慢,抽樣數(shù)量要多,因此優(yōu)化過程較長。差分進化算法的原理簡單,受控參數(shù)少,但隨著迭代次數(shù)的增加,個體間的差異會逐漸減小,影響變異的多樣性。禁忌搜索算法的記憶力強,可以接受不好的值,具有很強的“爬山”功能,但過分依賴初始解。雖然在文獻[10]中BP神經(jīng)網(wǎng)絡(luò)對鉑電阻溫度傳感器產(chǎn)生的誤差有了一定的補償效果,但它的收斂速度仍舊非常緩慢,進入局部極小的情況仍舊很多。
本文在現(xiàn)有研究的基礎(chǔ)上,利用改進的簡化粒子群算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)的模型對溫度傳感器進行濕度補償。通過對基本粒子群的分析,找到不受速度影響的簡化粒子群算法,同時對其慣性權(quán)重采用線性遞減的方法。利用改進的簡化粒子群算法的迭代找到最優(yōu)位置,即最優(yōu)權(quán)閾值,將該值賦給BP神經(jīng)網(wǎng)絡(luò)并訓(xùn)練網(wǎng)絡(luò),補償濕度給溫度傳感器測量帶來的影響。與BP神經(jīng)網(wǎng)絡(luò)對比,進一步表明改進SPSO-BP算法在溫度傳感器濕度補償上的優(yōu)越性。
粒子群優(yōu)化算法[11-13]最早起源對鳥群飛行情況的研究,是一種群體智能算法。在SPO算法中,每個“粒子”都代表優(yōu)化問題的一個可能解。粒子群算法開始初始化產(chǎn)生一群隨機粒子,利用迭代得到最優(yōu)位置。在D維搜索空間內(nèi),隨機初始形成一個由n個粒子組成的種群,其中每個粒子的當前位置可表示為Xid=(Xi1,Xi2,…,XiD),速度為Vid=(Vi1,Vi2,…,ViD),個體極值為Pid=(Pi1,Pi2,…,PiD),全局極值為Pg=(Pg1,Pg2,…,PgD)。在每次迭代中,根據(jù)如下公式更新粒子的速度和位置。
(1)
(2)
PSO算法[14-15]包含了速度和位置兩個向量,在每次迭代中都需要更新兩個向量,算法比較復(fù)雜,同時在迭代的后半段收斂速度緩慢,極大可能得進入局部極值,影響算法精度。因此,很多學(xué)者對此進行了改進,文獻[14]證明了粒子群進化過程是和速度沒關(guān)系的,其大小只代表粒子向最優(yōu)解移動的快慢,是可以去掉的。每次迭代僅由位置這一向量控制,提出了簡化粒子群優(yōu)化算,將原來的二階方程降為一階,并證明了其收斂性。去掉速度向量后的簡化粒子群算法的方程表示為:
(3)
慣性權(quán)重w[16-17]是個重要的參數(shù),主要用于維持算法局部搜索能力和全局搜索能力之間的平衡性。在簡化粒子群算法中,w一般為固定值,這就說明在算法迭代過程中,w值是不變的。而通過大量實踐發(fā)現(xiàn),固定值的效果是不理想的。在優(yōu)化初期,w應(yīng)該取為較大值,增強全局尋優(yōu)能力,這樣有利于跳出局部極小,而隨著優(yōu)化過程的不斷推進,w應(yīng)逐漸減小,這樣有利于增強局部搜索能力,提高算法的收斂速度。在此基礎(chǔ)上,本文采用線性遞減的方法改變權(quán)重,使得權(quán)重值從開始的最大值逐漸減小到最小值,增強局部尋優(yōu)能力,即:
(4)
wmax為定義的最大慣性權(quán)重,wmin為定義的最小慣性權(quán)重,t為當前迭代次數(shù),tmax為最大迭代次數(shù)。
將改進的SPSO與BP神經(jīng)網(wǎng)絡(luò)相結(jié)合[18-20],就是利用改進的SPSO算法的全局優(yōu)化能力解決BP神經(jīng)網(wǎng)絡(luò)容易陷入局部極小的問題。定義改進的SPSO中粒子的每個維度分量與BP神經(jīng)網(wǎng)絡(luò)中的權(quán)閾值相對應(yīng),通過迭代得到粒子的最優(yōu)位置從而得到BP神經(jīng)網(wǎng)絡(luò)的最優(yōu)權(quán)閾值,將該值賦給BP神經(jīng)網(wǎng)絡(luò)做為新的網(wǎng)絡(luò)連接權(quán)值和閾值,訓(xùn)練BP神經(jīng)網(wǎng)絡(luò)。我們定義改進簡化粒子群算法的適應(yīng)度函數(shù)為BP神經(jīng)網(wǎng)絡(luò)輸出值與期望值的誤差的均方值,表示為:
(5)
具體步驟如下:
①初始化神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),根據(jù)所需求解問題設(shè)定BP神經(jīng)網(wǎng)絡(luò)輸入層個數(shù)為l、輸出層個數(shù)為n,計算出隱含層個數(shù)J,同時設(shè)置訓(xùn)練樣本數(shù)m,測試樣本數(shù)t、網(wǎng)絡(luò)目標誤差ε等參數(shù)。
②設(shè)定簡化粒子群算法的維數(shù)D和規(guī)模N,隨機初始化每個粒子的位置,將其限制在所規(guī)定的范圍內(nèi),同時設(shè)置算法的最大迭代次數(shù)itmax,學(xué)習(xí)因子c1、c2,慣性權(quán)重wmax、wmin等參數(shù)。
③通過適應(yīng)度函數(shù),計算每個粒子的適度值F,將第i個粒子的位置設(shè)為個體極值Pid,比較所有粒子個體極值的適應(yīng)度值,適應(yīng)度值F最小的粒子的位置設(shè)為種群全局極值Pg。
④根據(jù)式(3)~式(5)更新粒子i的位置,若超過所設(shè)定的范圍,取邊界值,計算粒子i的適應(yīng)度值F。
⑤如果粒子i的適應(yīng)度值F(Xi)小于粒子個體極值Pid的適應(yīng)度值F(Pid),則用粒子此時的位置Xi替換Pid,如果F(Xi)小于種群全局極值Pg的適應(yīng)度值F(Pg),則用粒子此時的位置Xi替換Pg。
圖1 改進SPSO-BP 流程圖
⑥若迭代次數(shù)達到預(yù)設(shè)的最大迭代次數(shù)itmax,終止迭代,輸出粒子的全局最優(yōu)解Pg,也就BP神經(jīng)網(wǎng)絡(luò)的最優(yōu)權(quán)閾值,如沒有達到,返回步驟④繼續(xù)迭代搜索。
改進SPSO-BP神經(jīng)網(wǎng)絡(luò)的流程圖如圖1所示。
HMP45D溫濕度傳感器是利用鉑電阻在溫度變化時自身電阻值隨之改變的特性來測量溫度的,顯示儀表將指出鉑電阻值所對應(yīng)的溫度值。HMP45D溫度傳感器電阻和溫度之間的關(guān)系可用二次多項式函數(shù)表表示:
Rt=R0(1+αt+βt2)
(6)
式中:Rt為鉑電阻在溫度為t℃時的電阻率,R0為鉑電阻在溫度為0 ℃時的電阻率,為100 Ω,α,β為系數(shù),可以通過對傳感器的標定求出其值。通過數(shù)據(jù)采集器將測得的電阻值的變化轉(zhuǎn)化為電壓值的變化,實現(xiàn)對溫度的測量。
一般在沒有溫度變化時,電阻值R是由電阻長度L和電阻的橫截面積S決定的,表示為
R=ρL/S
ρ是電阻的電阻率,由其自身性質(zhì)決定。而當環(huán)境濕度變大時,空氣中的水分子跟著變多,而電介質(zhì)的表面會吸附這些水分子,形成一層很薄的膜,影響電阻的電阻率,繼而影響了電阻值,也就影響了溫度傳感器的測量情況,使得溫度傳感器的測量產(chǎn)生了一定誤差,測量精度變低。
本文所用的實驗數(shù)據(jù)是2012年課題組在中國氣象局氣象探測中心實驗得到的。在調(diào)溫調(diào)濕的檢定箱中進行濕度對溫度傳感器的影響實驗,溫度最低可調(diào)到-70 ℃,最高到60 ℃,濕度最小可調(diào)為0%RH,最大為100%RH,信號為JJQ1型的模擬器作為采集實驗所測數(shù)據(jù)的裝置,HMP45D溫度傳感器作為實驗的測量對象。
事先定好實驗需要測量的溫度點,調(diào)好檢定箱里的濕度,等到濕度穩(wěn)定后,按照定好的溫度點調(diào)整檢定箱里的溫度,待溫度后,讀取此時的溫度值做為一次數(shù)據(jù),實驗共讀取10次數(shù)據(jù),我們將這10次測得溫度值的平均值設(shè)為溫度點的測量值,鉑電阻10次輸出值的平均值加上修正值作為測量的標準值。依次對設(shè)定好的每個溫度點進行檢定,實驗方法和之前一樣,直到檢定完所有的溫度點,實驗結(jié)束。
所測得的部分數(shù)據(jù)如表1所示。
根據(jù)實驗所得數(shù)據(jù),用標注值減去測量值得到在不同濕度下實驗所得的測量誤差值,用這些誤差值和濕度值繪成曲線,分析濕度對溫度傳感器測量帶來的影響程度。不同濕度情況下溫度傳感器的測量誤差曲線如圖2所示。
表1 濕度對HMP45D型溫度傳感器的影響部分樣本組隊
圖2 濕度對HMP45D型溫度傳感器的影響
從圖2可以看出,在同一濕度值下,溫度值不同,誤差是不同的,同時在相同溫度值下,濕度值不同,誤差也是不一樣的,由此可得出濕度對溫度傳感器的測量帶來了巨大了影響,使得測量結(jié)果呈現(xiàn)出一種非線性的特征。為了盡量減小濕度變化給溫度
傳感器測量帶來的誤差,本文采用改進的SPSO-BP神經(jīng)網(wǎng)絡(luò)的方法對其進行補償。
通過改進SPSO算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò),按照圖2 的步驟對HMP45D型溫度傳感器進行濕度補償。將所測數(shù)據(jù)分為兩份,一份作為訓(xùn)練樣本,另一份作為測試樣本,輸入值選濕度影響值和溫度測量值,溫度測量的標準值作為期望輸出值。分別訓(xùn)練改進的SPSO-BP神經(jīng)網(wǎng)絡(luò)模型和BP神經(jīng)網(wǎng)絡(luò)模型,并對訓(xùn)練結(jié)果進行測試,得到的溫度傳感器濕度補償后的部分數(shù)據(jù)如表2所示。
表2 改進簡化粒子群算法的BP神經(jīng)網(wǎng)絡(luò)模型濕度補償后的結(jié)果
從表2中可以看出,與BP神經(jīng)網(wǎng)絡(luò)補償后的結(jié)果相比,改進SPSO-BP神經(jīng)網(wǎng)絡(luò)補償?shù)慕Y(jié)果更加接近標準值,其溫度誤差也明顯減小,預(yù)測誤差最高減小了0.5 ℃,說明改進后的SPSO-BP神經(jīng)網(wǎng)絡(luò)更好的對溫度傳感器進行了濕度補償,有效消除了由于濕度變化給溫度傳感器測量帶來的影響。
分別對改進的SPSO-BP神經(jīng)網(wǎng)絡(luò)方法和BP神經(jīng)網(wǎng)絡(luò)方法進行仿真實驗,對兩者仿真結(jié)果進行對比分析。采用三層前向神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),確定輸入節(jié)點2個,隱含層節(jié)點5個,輸出節(jié)點1個,學(xué)習(xí)速率0.1,最大迭代次數(shù)為100,目標誤差0.000 01,動量因子0.9。根據(jù)簡化粒子群算法原理,設(shè)最大迭代次數(shù)為50,最大位置為1,最小位置為-1,學(xué)子因子c1、c2為1.491,最大權(quán)重值為0.9,最小權(quán)重為0.3。
通過改進的簡化粒子群算法不斷迭代找到粒子的最優(yōu)位置,也就是BP神經(jīng)網(wǎng)絡(luò)的最優(yōu)權(quán)閾值,將得到的最優(yōu)權(quán)閾值賦給BP神經(jīng)網(wǎng)絡(luò)作為新的權(quán)閾值,用新的權(quán)閾值訓(xùn)練BP神經(jīng)網(wǎng)絡(luò),并對訓(xùn)練好的網(wǎng)絡(luò)進行測試,得到結(jié)果如圖3和圖4所示。
圖3中藍色星號表示實際的期望輸出,綠色圓點代表改進SPSO-BP神經(jīng)網(wǎng)絡(luò)的預(yù)測輸出。從圖中我們可以看出,綠色圓點和藍色星號幾乎完全重合在一起,充分表明了改進SPSO-BP神經(jīng)網(wǎng)絡(luò)模型可以較為準確地預(yù)測出系統(tǒng)的輸出值。
圖3 改進SPSO-BP神經(jīng)網(wǎng)絡(luò)模型預(yù)測輸出
圖4 改進SPSO-BP神經(jīng)網(wǎng)絡(luò)誤差平方和曲線
從圖4可以清晰地看出,在迭代次數(shù)進行到15代時,預(yù)測誤差均方根值達到了最小,此時改進SPSO-BP算法已經(jīng)找到了粒子的最優(yōu)位置,也就是找到了BP神經(jīng)網(wǎng)絡(luò)的最優(yōu)權(quán)閾值,說明改進SPSO-BP算法的收斂速度較快。
根據(jù)表2的數(shù)據(jù),對改進的SPSO-BP神經(jīng)網(wǎng)絡(luò)與傳統(tǒng)BP神經(jīng)網(wǎng)絡(luò)進行濕度補償?shù)恼`差進行對比分析,如圖5和表3所示。
圖5 誤差曲線
算法同等目標誤差下訓(xùn)練次數(shù)誤差均方值/℃誤差絕對值之和/℃?zhèn)鹘y(tǒng)BP神經(jīng)網(wǎng)絡(luò)1200.277621.0695改進的SPSO-BP150.08424.2532
圖5中藍色帶星號的曲線是BP神經(jīng)網(wǎng)絡(luò)模型濕度補償后的誤差曲線,紅色帶圓點的曲線是改進SPSO-BP神經(jīng)網(wǎng)絡(luò)模型的誤差曲線,從圖5中可以看出經(jīng)過改進簡化粒子群算法優(yōu)化的BP神經(jīng)網(wǎng)絡(luò)的誤差明顯小于BP神經(jīng)網(wǎng)絡(luò)的誤差,說明通過改進簡化粒子群算法優(yōu)化后的BP神經(jīng)網(wǎng)絡(luò)的方法要比BP神經(jīng)網(wǎng)絡(luò)的方法要好。
從表3中可知,在同等目標誤差下,BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練120次才達到最優(yōu)值,而改進粒子群優(yōu)化后的BP神經(jīng)網(wǎng)絡(luò)只要訓(xùn)練15次就達到最優(yōu)值。且BP神經(jīng)網(wǎng)絡(luò)的誤差絕對值之和為21.069 5 ℃,誤差均方值為0.277 6 ℃,改進簡化粒子群算法優(yōu)化的BP神經(jīng)網(wǎng)絡(luò)的誤差絕對值之和為4.253 2 ℃,誤差均方值為0.084 2 ℃,誤差均方值降低了0.1934 ℃,說明改進SPSO-BP神經(jīng)網(wǎng)絡(luò)的運行速率快,迭代次數(shù)少,補償精度高,有效地對溫度傳感器進行了濕度補償。
本文針對濕度變化給溫度傳感器測量帶來影響的問題,提出了改進簡化粒子群算法的BP神經(jīng)網(wǎng)絡(luò)模型對濕度進行補償。通過對基本粒子群算法的介紹,得到了不受速度項約束的簡化粒子群算法,同時對其慣性權(quán)重采用線性遞減的方法。將改進的簡化粒子群算法與BP神經(jīng)網(wǎng)絡(luò)相結(jié)合,就是利用簡化粒子群算法的全局搜索解決BP神經(jīng)網(wǎng)絡(luò)容易陷入局部極小的問題。與沒有優(yōu)化的BP神經(jīng)網(wǎng)絡(luò)模型相比,改進簡化粒子群算法的BP神經(jīng)網(wǎng)絡(luò)的誤差均方值減小了0.193 4 ℃,預(yù)測誤差最高減小了0.5 ℃,有效提高了溫度傳感器濕度補償?shù)木?同時改進SPSO-BP神經(jīng)網(wǎng)絡(luò)的運行速率快,迭代次數(shù)少,結(jié)構(gòu)簡單易懂,可以很好的投入到實際使用中。
[1] 孫文良,沈秋宇,等. HMP45D溫濕度傳感器的檢定校準[J]. 氣象水文海洋儀器,2009(3):124-126.
[2] 劉鋒,董薔薇. HMP45D溫濕度傳感器的工作原理及維護[J]. 大眾科技,2011(4):13-14.
[3] Patrick Carey W,Sinclair S Yee. Calibration of Nonlinear Solid-State Sensor Array Using Multivariate Regressiontechniques[J]. Sensors and Actuators,1992,9(2):113-122.
[4] 王曉蕾,林捷. 自動氣象站溫度傳感器的輻射誤差[J]. 解放軍理工大學(xué)學(xué)報,2006,7(4):405-408.
[5] 周勝海. 傳感器非線性的硬件校正方法[J]. 儀表技術(shù)與傳感器,2002,21(5):1-4.
[6] 俞阿龍,李正. 熱敏電阻溫度傳感器的一種線性化設(shè)計[J]. 工業(yè)儀表與自動化裝置,2003(5):19-20,39.
[7] 王洪峰,朱海. 采用遺傳-退火算法的網(wǎng)格依賴任務(wù)可信調(diào)度[J]. 計算機科學(xué),2015(6):268-275.
[8] 鄒水平,行鴻彥,于祥. 一種新的溫度傳感器濕度補償方法[J]. 南京信息工程大學(xué)學(xué)報(自然科學(xué)版),2016,8(6):533-539.
[9] 彭基偉. 自動氣象站溫濕度傳感器觀測數(shù)據(jù)分析及修正算法研究[D]. 南京:南京信息工程大學(xué),2013.
[10] 劉天鍵,王劭伯,朱善安. 基于神經(jīng)網(wǎng)絡(luò)的鉑電阻溫度傳感器非線性校正方法[J]. 儀器儀表學(xué)報,2002,23(5):518-521.
[11] 黃平. 粒子群算法改進及其在電力系統(tǒng)的應(yīng)用[D]. 華南理工大學(xué),2012.
[12] 劉建華. 粒子群算法的基本理論及其改進研究[D]. 中南大學(xué),2009.
[13] 魏波,李元香,徐星,等. 基于穩(wěn)定策略的粒子群優(yōu)化算法[J]. 計算機科學(xué),2011,(12):221-223.
[14] 胡旺,李志蜀. 一種更簡化而高效的粒子群優(yōu)化算法[J]. 軟件學(xué)報,2007(4):861-868.
[15] 陳琳玲. 基于簡化粒子群算法的測試數(shù)據(jù)自動生成方法研究[D]. 西南大學(xué),2010.
[16] 鄒毅. 一種改進線性慣權(quán)的粒子群算法[J]. 福建電腦,2009,25(8):17-18,8.
[17] 賈瑞玉,黃義堂,邢猛. 一種動態(tài)改變權(quán)值的簡化粒子群算法[J]. 計算機技術(shù)與展,2009(2):137-139,144.
[18] 錢兆樓. 一種基于改進粒子群算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)的預(yù)測方法[J]. 電子測試,2015(20):39-40,25.
[19] 黃樹運. 改進的粒子群算法訓(xùn)練BP神經(jīng)網(wǎng)絡(luò)的研究[D]. 廣西大學(xué),2013.
[20] 喬冰琴,常曉明. 改進粒子群算法在BP神經(jīng)網(wǎng)絡(luò)擬合非線性函數(shù)方面的應(yīng)用[J]. 太原理工大學(xué)學(xué)報,2012,43(5):558-563.