杭瀟 閆玉磊 張鐸 王雅琴
摘要 在研究濕度測(cè)量和控制原理的基礎(chǔ)上,設(shè)計(jì)了一種基于神經(jīng)網(wǎng)絡(luò)遺傳算法的濕度測(cè)量系統(tǒng)。系統(tǒng)采用DHT11濕度傳感器,利用改良的神經(jīng)網(wǎng)絡(luò)遺傳算法對(duì)濕度測(cè)量進(jìn)行優(yōu)化。結(jié)果表明,經(jīng)神經(jīng)網(wǎng)絡(luò)遺傳算法優(yōu)化的濕度測(cè)量?jī)x可以將精度控制在1.6×10-2,大大地提高了濕度測(cè)量的精度,并且基于該算法的濕度測(cè)量具有很好的魯棒性和自適應(yīng)性。
關(guān)鍵詞 濕度測(cè)量;B-P神經(jīng)網(wǎng)絡(luò);遺傳算法
中圖分類號(hào) S126文獻(xiàn)標(biāo)識(shí)碼 A文章編號(hào) 0517-6611(2018)01-0189-03
Abstract On the basis of studying the principle of humidity measurement and control, a humidity measurement system based on neural network and genetic algorithm was designed. In this system, DHT11 humidity sensor was used, and the humidity measurement method was optimized by using an improved neural network and genetic algorithm. The test results showed that the humidity could be controlled in the accuracy of 1.6×10-2 by using this system, which enhanced the humidity measurement accuracy greatly. Moreover, the humidity measurement based on this system had good robustness and self-adaptability.
Key words Humidity measurement;B-P neural network;Genetic algorithm
水汽是室內(nèi)空氣質(zhì)量的一個(gè)重要參數(shù),濕度測(cè)量是空氣檢測(cè)的重要組成部分?,F(xiàn)有的濕度測(cè)量技術(shù)有干濕球測(cè)量法、露點(diǎn)濕度測(cè)量法和數(shù)字濕度計(jì)等。干濕球法用干濕球方程換算出濕度值,而干濕球的測(cè)量精度與風(fēng)速有很大的關(guān)系[1]。露點(diǎn)濕度測(cè)量[2]價(jià)格比較昂貴,且需要有經(jīng)驗(yàn)的人操作及保養(yǎng)。數(shù)字濕度計(jì)便于攜帶,讀數(shù)方便,但存在擴(kuò)展不確定度的缺點(diǎn)[3]。李茂權(quán)等[4]證實(shí)阻容法露點(diǎn)濕度計(jì)示值誤差測(cè)量值存在不確定度的弊端;劉巨強(qiáng)[2]指出了影響干濕球法測(cè)量濕度的因素,從而證實(shí)干濕球法存在誤差大的缺點(diǎn)。針對(duì)以上問題,筆者提出一種基于神經(jīng)網(wǎng)絡(luò)遺傳算法的濕度測(cè)量系統(tǒng)。
神經(jīng)網(wǎng)絡(luò)算法可以準(zhǔn)確測(cè)量出室內(nèi)的濕度,但容易導(dǎo)致局部最優(yōu)解問題,而用遺傳算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)可以解決這個(gè)問題[4]。筆者將神經(jīng)網(wǎng)絡(luò)算法與遺傳算法二者結(jié)合起來并應(yīng)用到濕度的測(cè)量,首先用遺傳算法優(yōu)化神經(jīng)網(wǎng)絡(luò)算法的權(quán)值與閾值,然后用神經(jīng)網(wǎng)絡(luò)算法對(duì)測(cè)量的濕度值進(jìn)行了優(yōu)化。
1 基于單片機(jī)的濕度測(cè)量系統(tǒng)原理及流程
單片機(jī)因其自身體積小、功能強(qiáng)大等優(yōu)點(diǎn)已經(jīng)被廣泛應(yīng)用,它對(duì)濕度的測(cè)量也越來越引起人們的關(guān)注。因此,主要討論基于單片機(jī)的濕度測(cè)量的實(shí)現(xiàn)方法。
1.1 濕度測(cè)量的工作原理
當(dāng)濕度控制器開始工作時(shí),濕度傳感器便按照設(shè)定的頻率不斷地向單片機(jī)傳送濕度值,單片機(jī)根據(jù)預(yù)設(shè)的算法不斷地對(duì)讀入的濕度值進(jìn)行訓(xùn)練,直到得到精確的濕度值。然后,與預(yù)設(shè)的濕度范圍進(jìn)行比較,通過比較結(jié)果來驅(qū)動(dòng)空調(diào)工作,從而實(shí)現(xiàn)對(duì)室內(nèi)的濕度的調(diào)控。
1.2 濕度測(cè)量流程
濕度測(cè)量流程如圖1所示。
2 神經(jīng)網(wǎng)絡(luò)遺傳算法對(duì)濕度測(cè)量的優(yōu)化
2.1 遺傳算法優(yōu)化神經(jīng)網(wǎng)絡(luò)的初始權(quán)值和閾值
2.1.1 利用GA優(yōu)化神經(jīng)網(wǎng)絡(luò)的關(guān)鍵問題。主要體現(xiàn)在于以下方面[5]:
①采用實(shí)數(shù)編碼;
②目標(biāo)函數(shù)和適應(yīng)度函數(shù)的確定。
2.1.2 用遺傳算法優(yōu)化神經(jīng)網(wǎng)絡(luò)的必要性。
①神經(jīng)網(wǎng)絡(luò)算法測(cè)量濕度易于陷入局部最優(yōu)解。神經(jīng)網(wǎng)絡(luò)算法測(cè)量濕度曲線如圖2所示。②經(jīng)遺傳算法優(yōu)化后的神經(jīng)網(wǎng)絡(luò)算法解決了上述問題。經(jīng)遺傳算法優(yōu)化后的神經(jīng)網(wǎng)絡(luò)算法測(cè)量的濕度曲線如圖3所示。
2.2 BP神經(jīng)網(wǎng)絡(luò)
2.2.1 BP神經(jīng)網(wǎng)絡(luò)的運(yùn)行機(jī)制。
BP神經(jīng)網(wǎng)絡(luò)模型每一個(gè)單元將來自其他處理單元的刺激進(jìn)行加權(quán)求和,當(dāng)和值超過處理單元閾值之后處理單元就處于激活狀態(tài)并將計(jì)算結(jié)果輸出,反之則處于抑制狀態(tài)。若輸出結(jié)果與期望輸出結(jié)果之間誤差過大,則反饋給各層處理單元,以此作為各層聯(lián)結(jié)權(quán)值的修改依據(jù),直至誤差在可接受范圍內(nèi)。
2.2.2 BP網(wǎng)絡(luò)結(jié)構(gòu)的確定。
由Kolmogorov定理可知,一個(gè)3層BP神經(jīng)網(wǎng)絡(luò)可以在任意精度逼近任何有理函數(shù)。因此,采用包含輸入層、隱含層和輸出層3層結(jié)構(gòu)的BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)作為處理模型。輸入層的節(jié)點(diǎn)數(shù)為固定時(shí)間內(nèi)所測(cè)得的濕度集,輸出值為該時(shí)間段內(nèi)的最優(yōu)濕度值,隱含層節(jié)點(diǎn)數(shù)采用經(jīng)驗(yàn)公式確定:
S1=n+m +a。式中,神經(jīng)網(wǎng)絡(luò)輸入層節(jié)點(diǎn)數(shù)為m,輸出層節(jié)點(diǎn)數(shù)為n,隱含層節(jié)點(diǎn)數(shù)為S1。
2.3 遺傳算法確定神經(jīng)網(wǎng)絡(luò)模型參數(shù)的試驗(yàn)
2.3.1 遺傳算法的初始化[6]。
①初始種群的初始化:每10 min為一個(gè)周期,每20 s測(cè)量的數(shù)據(jù)為種群的一個(gè)個(gè)體。
②選擇概率的初始化:取0.3~0.7的任一隨機(jī)數(shù)。
③交叉概率的初始化:取0.3~0.7的任一隨機(jī)數(shù)。
④變異概率的初始化:取0.05~0.20的任一隨機(jī)數(shù)。
2.3.2 遺傳算法確定神經(jīng)網(wǎng)絡(luò)模型的參數(shù)[7]。
經(jīng)過70代的訓(xùn)練,誤差平方和達(dá)到最小。整個(gè)神經(jīng)網(wǎng)絡(luò)輸入層節(jié)點(diǎn)為7,隱含層節(jié)點(diǎn)為25+7+7,輸出層為7;隱含層傳遞函數(shù)為tansig,輸出層傳遞函數(shù)為logsig,訓(xùn)練函數(shù)為traingda,目標(biāo)精度為0.001,最大訓(xùn)練周期為1 000;遺傳算法初始種群大小為200,最大進(jìn)化代數(shù)為200,選擇概率為0.6,交叉概率為 0.4,變異概率為0.16。
2.4 神經(jīng)網(wǎng)絡(luò)算法對(duì)采集的濕度值的優(yōu)化
將遺傳算法訓(xùn)練的參數(shù)作為神經(jīng)網(wǎng)絡(luò)的初始權(quán)值訓(xùn)練。
(1)給各連接權(quán)值分別賦一個(gè)區(qū)間(-1,1)內(nèi)的隨機(jī)數(shù),設(shè)定誤差函數(shù) e -21,給定計(jì)算精度值 ε =10-21和最大學(xué)習(xí)次數(shù) M =100,完成對(duì)神經(jīng)網(wǎng)絡(luò)參數(shù)值的初始化。
(2)隨機(jī)選取第 k 個(gè)輸入樣本及對(duì)應(yīng)期望輸出:
d(k)=[d1(k),d2(k),…,dn(k)];
x(k)=[x1(k),x2(k),…,xn(k)]。
輸入層有7個(gè)神經(jīng)元,隱含層有25+7+7個(gè)神經(jīng)元,輸出層有7個(gè)神經(jīng)元;
輸入向量 x=(x1,x2,…,x7);
隱含層輸入向量hi=(hi1,hi2,…,hi7);
隱含層輸出向量ho=(ho1,ho2,…,ho7);
輸出層輸入向量yi=(yi1,yi2,…,yi7);
輸出層輸出向量yo=(yo1,yo2,…,yo7);
期望輸出向量d=(d1,d2,…,d7);
輸入層與隱含層的連接權(quán)值Wih(初始化為相同值1/n);
隱含層與輸出層的連接權(quán)值Who(初始化為相同值1/n);
隱含層各神經(jīng)元的閾值bh(初始化為測(cè)量的最大值);
輸出層各神經(jīng)元的閾值bo(初始化為測(cè)量的最大值)。
樣本數(shù)據(jù)個(gè)數(shù)k=1,2,...,7。
激活函數(shù)為S型函數(shù),誤差函數(shù)為e=12qo=1[do(k)-yoo(k)]2。
(3)計(jì)算隱含層各神經(jīng)元的輸入和輸出。
初始化各連接權(quán)值為相同的,隨著訓(xùn)練的進(jìn)行,不斷地逆向反饋修正各個(gè)連接權(quán)值。隱含層各神經(jīng)元的輸入即為輸入層的各神經(jīng)元與其權(quán)值的代數(shù)和。經(jīng)過激勵(lì)函數(shù)的作用,結(jié)果即為隱含層神經(jīng)元的輸出。
(4)利用網(wǎng)絡(luò)期望輸出和實(shí)際輸出,計(jì)算誤差函數(shù)對(duì)輸出層的各神經(jīng)元的偏導(dǎo)數(shù) δ0(k) 網(wǎng)絡(luò)期望輸出見步驟(2),實(shí)際輸出為各輸出層神經(jīng)元的代數(shù)和。
(5)利用隱含層到輸出層的連接權(quán)值、輸出層的 δ0(k) 和隱含層的輸出計(jì)算誤差函數(shù)對(duì)隱含層各神經(jīng)元的偏導(dǎo)數(shù) δ0(k) 。
(6)利用輸出層各神經(jīng)元的 δ0(k) 和隱含層各神經(jīng)元的輸出來修正連接權(quán)值 who(k) 。
(7)利用隱含層各神經(jīng)元的 δn(k) 和輸入層各神經(jīng)元的輸入修正連接權(quán)。
(8)計(jì)算全局誤差。
E=12m mk=1qo=1[do(k)-yo(k)]2。
(9)判斷網(wǎng)絡(luò)誤差是否滿足要求:當(dāng)誤差達(dá)到預(yù)設(shè)精度或?qū)W習(xí)次數(shù)大于設(shè)定的最大次數(shù),則結(jié)束算法。否則,選取下一個(gè)學(xué)習(xí)樣本及對(duì)應(yīng)的期望輸出,返回到步驟(3),進(jìn)入下一輪學(xué)習(xí)。
整個(gè)流程模擬圖如圖4所示。
3 Matlab模擬試驗(yàn)結(jié)果
根據(jù)以上理論基礎(chǔ)[8],在MATLAB R2014a[9]模擬GA-BP網(wǎng)絡(luò)[10]算法。從實(shí)測(cè)的300組有效數(shù)據(jù)中隨機(jī)地挑出50組作為測(cè)試數(shù)據(jù),其余作為訓(xùn)練數(shù)據(jù)。
從圖5可以看出,A4線表示最佳的濕度的適應(yīng)度進(jìn)化曲線,A3線表示實(shí)際的濕度平均適應(yīng)度進(jìn)化曲線,當(dāng)進(jìn)化到50代時(shí),該濕度群體最優(yōu)適應(yīng)度達(dá)到峰值,表示在第50代群體中對(duì)應(yīng)于最大適應(yīng)度的濕度已經(jīng)達(dá)到該優(yōu)化算法最優(yōu)解。從圖6可以看出,A2為最佳理想的目標(biāo)函數(shù)進(jìn)化曲線,A1線為實(shí)際平均目標(biāo)函數(shù)曲線,當(dāng)經(jīng)過大約50代搜索后,GA優(yōu)化BP算法使得試驗(yàn)結(jié)果與實(shí)際濕度之間誤差最小。
從圖7可以看出,訓(xùn)練33步后網(wǎng)絡(luò)訓(xùn)練結(jié)束,濕度的樣本均方誤差為5.448×10-21,說明網(wǎng)絡(luò)具有良好的收斂效果。從圖8可以看出,對(duì)網(wǎng)絡(luò)的實(shí)際輸出值和期望輸出值進(jìn)行線性回歸分析,相似度 R =1,表示實(shí)際輸出的濕度計(jì)算結(jié)果完全吻合期望值。
經(jīng)過試驗(yàn)檢驗(yàn),該算法迭代步數(shù)少,誤差較小,實(shí)際輸出與期望值完全吻合,驗(yàn)證了GA-BP網(wǎng)絡(luò)模型在濕度測(cè)量中的可行性。
4 結(jié)論
模擬預(yù)測(cè)結(jié)果表明,GA優(yōu)化BP神經(jīng)網(wǎng)絡(luò)權(quán)值和閾值的方法能夠較好地解決BP神經(jīng)網(wǎng)絡(luò)易下陷入局部最優(yōu)的問題,縮短了網(wǎng)絡(luò)的計(jì)算時(shí)間。
通過濕度計(jì)算的實(shí)例可知,GA-BP神經(jīng)網(wǎng)絡(luò)比BP神經(jīng)網(wǎng)絡(luò)的預(yù)測(cè)平均相對(duì)誤差大大降低,為濕度測(cè)量提供了一種準(zhǔn)確度更高的方法。
經(jīng)上述論證,基于神經(jīng)網(wǎng)絡(luò)遺傳算法的濕度控制系統(tǒng)具有極高的可行性和有效性,對(duì)于提高濕度控制系統(tǒng)自我調(diào)控的精準(zhǔn)度具有實(shí)際意義,可廣泛應(yīng)用于實(shí)際生活的濕度測(cè)量及控制。
基于神經(jīng)網(wǎng)絡(luò)遺傳算法的濕度調(diào)節(jié)器充分利用了神經(jīng)網(wǎng)絡(luò)算法的魯棒性和遺傳算法的全局優(yōu)化性,使得將儀器置于一角,就可以準(zhǔn)確測(cè)量出整個(gè)空間的濕度。濕度測(cè)量計(jì)結(jié)構(gòu)簡(jiǎn)單,測(cè)量誤差小。當(dāng)進(jìn)化代數(shù)達(dá)到60代時(shí),濕度的適應(yīng)度可達(dá)15.6×10-3。當(dāng)進(jìn)化代數(shù)達(dá)到50代時(shí),測(cè)量誤差低于5.448×10-21。將該算法應(yīng)用于濕度的測(cè)量,對(duì)提高人們對(duì)周圍環(huán)境濕度的監(jiān)控精度具有重要意義。
參考文獻(xiàn)
[1] 程黎.數(shù)字溫濕度計(jì)測(cè)量示值誤差不確定度評(píng)定[J].現(xiàn)代測(cè)量與實(shí)驗(yàn)室管理,2015(6):28-30.
[2] 劉巨強(qiáng).干濕球法測(cè)量濕度影響因素分析[J].科技創(chuàng)新與應(yīng)用,2014(5):300.
[3] KAMPOUROPOULOS K,ANDRADE F,GARCIA A,et al.A combined methodology of adaptive neuro-fuzzy inference system and genetic algorithm for short-term energy forecasting[J].Advances in electrical and computer engineering,2014,14(1):9-14.
[4] 李茂權(quán),何國(guó)政,楊焱.阻容法露點(diǎn)濕度計(jì)示值誤差測(cè)量值的不確定度評(píng)定[J].計(jì)量與測(cè)試技術(shù),2015,42(12):68-70.
[5] 李妙玲,仝軍鋒,趙紅霞.基于遺傳算法和神經(jīng)網(wǎng)絡(luò)的C/C復(fù)合材料等溫CVI工藝參數(shù)優(yōu)化模型[J].復(fù)合材料學(xué)報(bào),2016,33(11):2666-2673.
[6] 雷英杰,張善文,李續(xù)武,等.MATLAB 遺傳算法工具箱及應(yīng)用[M].2版.西安:西安電子科技大學(xué)出版社,2014.
[7] 聞新,李新,張興旺,等.應(yīng)用MATLAB實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)[M].北京:國(guó)防工業(yè)出版社,2015.
[8] MOLER C.Experiments with MATLAB [M].北京:北京航空航天大學(xué)出版社,2013.
[9] XIAO Z,YE S J,ZHONG B,et al.BP neural network with rough set for short term load forecasting[J].Expert systems with applications,2009,36(1):273-279.
[10] 王劍,張書畢,史先領(lǐng),等.MATLAB工具箱在測(cè)繪數(shù)據(jù)處理中的應(yīng)用[J].四川測(cè)繪,2006,29(1):17-20.