王佳楠,王玉瑩,何淑林,時龍閩,張艷滴,孫海洋,劉 勇,2
1(黑龍江大學(xué) 電子工程學(xué)院,哈爾濱 150080)
2(黑龍江東部節(jié)水設(shè)備有限公司,綏化 152001)
隨著我國農(nóng)業(yè)與經(jīng)濟(jì)的發(fā)展,智慧農(nóng)業(yè)對農(nóng)田起到了至關(guān)重要的作用,精準(zhǔn)灌溉已經(jīng)成為農(nóng)業(yè)生產(chǎn)和生活的重要因素,而實(shí)現(xiàn)對農(nóng)作物精準(zhǔn)灌溉,對農(nóng)作物土壤濕度進(jìn)行精準(zhǔn)預(yù)測至關(guān)重要[1].土壤濕度是旱澇評價的重要參考,對地表能量、降雨再分配、水資源管理、農(nóng)業(yè)灌溉等方面都有重要影響[2].土壤濕度過低,會導(dǎo)致土壤干旱,對植物的光合作用產(chǎn)生嚴(yán)重影響,甚至導(dǎo)致植物干枯死亡;土壤濕度過高,會導(dǎo)致植物根部缺氧,嚴(yán)重時會導(dǎo)致植物根部腐爛[3,4].通過對農(nóng)作物土壤濕度的精準(zhǔn)預(yù)測可以準(zhǔn)確地反映農(nóng)作物土壤的水分含量狀況,從而為實(shí)現(xiàn)精準(zhǔn)灌溉提供了科學(xué)決策的依據(jù)和方法.
BP (back propagation)神經(jīng)網(wǎng)絡(luò)算法是一種典型的多層前饋神經(jīng)網(wǎng)絡(luò),它通過誤差逆向傳播算法來進(jìn)行學(xué)習(xí)訓(xùn)練[5–7].BP 神經(jīng)網(wǎng)絡(luò)是目前使用最為廣泛,結(jié)構(gòu)最為直觀并且工作原理最為容易理解的神經(jīng)網(wǎng)絡(luò),它的結(jié)構(gòu)簡單,可塑性強(qiáng),且擁有較強(qiáng)的數(shù)據(jù)擬合能力[8–10].BP 神經(jīng)網(wǎng)絡(luò)主要包含輸入層、隱含層和輸出層,在訓(xùn)練過程中,神經(jīng)網(wǎng)絡(luò)不斷調(diào)整輸入層與隱含層以及隱含層和輸出層之間的權(quán)值和閾值[11,12],當(dāng)神經(jīng)網(wǎng)絡(luò)輸出值與目標(biāo)值一致或者達(dá)到迭代次數(shù)時訓(xùn)練停止,這種神經(jīng)網(wǎng)絡(luò)擁有較強(qiáng)的泛化能力,神經(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ò)的計算公式如式(1)–式(3)所示:
式(1)為神經(jīng)元的激勵函數(shù),采用的是Sigmoid 函數(shù),式(2)為神經(jīng)元的輸入數(shù)據(jù)經(jīng)過加權(quán)值求和之后與閾值相減,xi表示輸入數(shù)據(jù),wij表示權(quán)值,oj表示閾值,p表示局部輸出,式(3)為將式(1)與式(2)聯(lián)立所得的輸出值.
常規(guī)的BP 神經(jīng)網(wǎng)絡(luò)主要采用數(shù)據(jù)正向傳播,誤差反向傳播的方式,根據(jù)誤差值采用梯度下降的方法對網(wǎng)絡(luò)的權(quán)值和閾值進(jìn)行修正,從而不斷使誤差下降到預(yù)期數(shù)值,權(quán)值和閾值的修正如式(4)和式(5)所示:
式(4)和式(5)為權(quán)值和閾值修正的公式,E表示神經(jīng)網(wǎng)絡(luò)的輸出值與目標(biāo)值的誤差,β表示神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)率.
1.2.1 遺傳算法原理
遺傳算法(genetic algorithm,GA)最早是由美國的Holland 于20世紀(jì)70年代提出[13],該算法是根據(jù)大自然中生物體進(jìn)化規(guī)律而設(shè)計提出的[14].它的工作原理是首先對輸入數(shù)據(jù)進(jìn)行編碼,之后通過一定的概率進(jìn)行選擇、交叉和變異運(yùn)算直到選擇出適應(yīng)度最大的個體作為目標(biāo)值輸出,之后停止運(yùn)算.
1.2.2 適應(yīng)度函數(shù)的選擇
適應(yīng)度函數(shù)是衡量種群中個體適應(yīng)能力大小的標(biāo)準(zhǔn),一般情況下,會將訓(xùn)練目標(biāo)函數(shù)選作遺傳算法的適應(yīng)度函數(shù),本算法中采用誤差平方的倒數(shù)作為適應(yīng)度函數(shù),如式(6)和式(7)所示:
式(6)中,E為誤差函數(shù),P為整體輸出,w為權(quán)矢量,x為輸入矢量;式(7)中,F為適應(yīng)度,j為迭代次數(shù).
1.2.3 選擇算子的改進(jìn)
傳統(tǒng)的遺傳算法在工作過程中經(jīng)常采用“輪盤賭”的方式,種群中個體被選中的概率是隨機(jī)的,這種選擇方式很有可能丟掉最優(yōu)個體,在實(shí)際的運(yùn)算過程中會產(chǎn)生較大的誤差.因此,本文對選擇算子進(jìn)行改進(jìn),首先將種群個體利用排序法進(jìn)行重新排列,重新排序之后個體被選擇的概率如式(8)和式(9)所示:
式(8)和式(9)中,a為遺傳算法中種群的數(shù)量,p0為最優(yōu)個體可能被選擇的概率,s為將p0進(jìn)行標(biāo)準(zhǔn)化后的值,b為在對種群重新排列后第n個個體所在的位置.
1.2.4 交叉算子的改進(jìn)
傳統(tǒng)的遺傳算法在工作過程中一般會將交叉概率設(shè)為0.3–0.8 之間的一個常數(shù).在運(yùn)算過程中,交叉概率設(shè)置過高會提高遺傳算法的全局搜索能力,但染色體的適應(yīng)能力會有所下降,而交叉概率設(shè)置得過低會降低遺傳算法的全局搜索能力和收斂速度.本文對交叉算子進(jìn)行改進(jìn),在算法迭代過程中會根據(jù)適應(yīng)度的變化來調(diào)整交叉概率的變化,改進(jìn)的交叉概率如式(10)所示:
其中,F為種群中兩個進(jìn)行交叉的個體的最大適應(yīng)度,Fmean為整個種群的平均適應(yīng)度,n為遺傳算法在當(dāng)前工作過程中的迭代次數(shù),nmax為遺傳算子在工作過程中的最大迭代次數(shù),在遺傳算法初始化時可以將最小交叉概率Pjmin設(shè)置為0.3,最大交叉概率Pjmax設(shè)置為0.8.
1.2.5 變異算子的改進(jìn)
傳統(tǒng)的遺傳算法在工作過程中一般會將變異概率設(shè)為0.001–0.1 之間的一個常數(shù).在遺傳算法運(yùn)算初期,種群個體的適應(yīng)度相對平均適應(yīng)度較低,所以需要將變異的概率設(shè)為較小的值,從而保留染色體中基因優(yōu)良的個體.在遺傳算法運(yùn)算的后期,種群個體的適應(yīng)度相對高于平均適應(yīng)度,因此需要將變異的概率設(shè)為較大的值來提高遺傳算法的局部搜索能力.本文對變異算子進(jìn)行改進(jìn),在遺傳算法運(yùn)算過程中會根據(jù)適應(yīng)度的變化來調(diào)整變異概率的值,改進(jìn)的變異概率如式(11)所示:
其中,F為種群中兩個進(jìn)行變異的個體的最大適應(yīng)度,Fmean為整個種群的平均適應(yīng)度,n為遺傳算法在當(dāng)前工作過程中的迭代次數(shù),nmax為遺傳算子在工作過程中的最大迭代次數(shù),在遺傳算法初始化時可以將最小變異概率Pbmin設(shè)置為0.001,最大變異概率Pbmax設(shè)置為0.1.
BP 神經(jīng)網(wǎng)絡(luò)的初始權(quán)值和閾值對訓(xùn)練的結(jié)果有著很大的影響,并且在訓(xùn)練過程中容易陷入局部最優(yōu),因此為了提高BP 神經(jīng)網(wǎng)絡(luò)的預(yù)測精度以及避免BP神經(jīng)網(wǎng)絡(luò)陷入局部最優(yōu)的問題,引入了改進(jìn)遺傳算法對BP 神經(jīng)網(wǎng)絡(luò)的權(quán)值和閾值進(jìn)行優(yōu)化.傳統(tǒng)遺傳算法的選擇概率、交叉概率和變異概率使用的是固定的常數(shù),這樣在訓(xùn)練的前期和后期容易產(chǎn)生局部最優(yōu)解,為了解決這個問題,對選擇算子、交叉算子和變異算子的概率進(jìn)行了改進(jìn),通過判斷當(dāng)前適應(yīng)度值從而對選擇概率、交叉概率和變異概率進(jìn)行調(diào)整.隨著適應(yīng)度值的不斷變化,預(yù)測模型的選擇概率、交叉概率和變異概率會隨之產(chǎn)生變化,使預(yù)測模型能夠?qū)⒏鱾€參數(shù)調(diào)整為模型最佳的狀態(tài),形成了改進(jìn)遺傳算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)預(yù)測模型.
在改進(jìn)遺傳算法優(yōu)化BP 神經(jīng)網(wǎng)絡(luò)預(yù)測模型中,具體操作流程包括以下幾個方面,首先通過傳感器對空氣溫度、空氣濕度和光照強(qiáng)度3 種氣象數(shù)據(jù)進(jìn)行采集;其次,對采集數(shù)據(jù)進(jìn)行預(yù)處理,由于采集后的數(shù)據(jù)可能存在錯誤數(shù)據(jù),將3 組數(shù)據(jù)中的最大值和最小值去除,并根據(jù)實(shí)際數(shù)據(jù)進(jìn)行插值處理,得到正確的氣象數(shù)據(jù);再次,將預(yù)處理的數(shù)據(jù)分為兩組,一組作為訓(xùn)練集,另一組作為測試集.最后將訓(xùn)練集數(shù)據(jù)導(dǎo)入預(yù)測模型中對預(yù)測模型進(jìn)行訓(xùn)練,再將測試集導(dǎo)入訓(xùn)練好的預(yù)測模型中進(jìn)行預(yù)測評估.改進(jìn)遺傳算法優(yōu)化BP 神經(jīng)網(wǎng)絡(luò)預(yù)測模型的設(shè)計框架如圖2所示.
圖2 改進(jìn)遺傳算法優(yōu)化BP 神經(jīng)網(wǎng)絡(luò)框架圖
實(shí)驗(yàn)所使用的軟件平臺為Matlab R2018a,計算機(jī)硬件為Windows 7 系統(tǒng),CPU 頻率為2.50 GHz,內(nèi)存為8 GB,硬盤為500 GB.將改進(jìn)的遺傳算法與BP 神經(jīng)網(wǎng)絡(luò)結(jié)合,建立了基于改進(jìn)遺傳算法優(yōu)化BP 神經(jīng)網(wǎng)絡(luò),提高了預(yù)測模型的預(yù)測精度.改進(jìn)遺傳算法優(yōu)化BP 神經(jīng)網(wǎng)絡(luò)流程圖如圖3所示.
圖3 改進(jìn)遺傳算法優(yōu)化BP 神經(jīng)網(wǎng)絡(luò)流程圖
進(jìn)行預(yù)測模型的訓(xùn)練之前,要對預(yù)測模型的參數(shù)進(jìn)行設(shè)置,在Matlab R2018a 軟件平臺下構(gòu)建基于改進(jìn)遺傳算法優(yōu)化BP 神經(jīng)網(wǎng)絡(luò)模型,對改進(jìn)遺傳算法優(yōu)化BP 神經(jīng)網(wǎng)絡(luò)預(yù)測模型的相關(guān)參數(shù)進(jìn)行設(shè)置,輸入層的節(jié)點(diǎn)數(shù)設(shè)置為3 個,隱含層的節(jié)點(diǎn)數(shù)設(shè)置為9 個,輸出層的節(jié)點(diǎn)數(shù)設(shè)置為1 個,激活函數(shù)采用的是Sigmoid函數(shù),神經(jīng)網(wǎng)絡(luò)的迭代次數(shù)為1 000.
為了測試預(yù)測模型的精確度,采用MAE(平均絕對誤差)、MAPE(平均絕對百分率誤差) 以及RMSE(均方根誤差)3 種誤差分析方法對預(yù)測模型的精確度進(jìn)行評估,從而驗(yàn)證預(yù)測模型的準(zhǔn)確性.3 種誤差公式如式(12)、式(13)、式(14)所示.
實(shí)驗(yàn)數(shù)據(jù)來自黑龍江省哈爾濱市呼蘭區(qū)玉米種植基地,基地采用農(nóng)業(yè)物聯(lián)網(wǎng)技術(shù),通過物聯(lián)網(wǎng)技術(shù)對種植基地的各種氣象數(shù)據(jù)進(jìn)行采集,將采集的數(shù)據(jù)進(jìn)行處理后,選取1 000 組環(huán)境氣象數(shù)據(jù)作為本文的試驗(yàn)數(shù)據(jù),試驗(yàn)數(shù)據(jù)包括空氣溫度、空氣濕度和光照強(qiáng)度.試驗(yàn)將1 000 組數(shù)據(jù)分為兩部分,隨機(jī)選取980 組數(shù)據(jù)作為預(yù)測模型的訓(xùn)練數(shù)據(jù),剩余20 組數(shù)據(jù)作為測試數(shù)據(jù),表1為部分試驗(yàn)數(shù)據(jù).
表1 部分采集數(shù)據(jù)
使用處理后的訓(xùn)練數(shù)據(jù)對模型進(jìn)行訓(xùn)練,將訓(xùn)練后的預(yù)測模型通過測試集數(shù)據(jù)測試,并將BP 神經(jīng)網(wǎng)絡(luò)、遺傳算法優(yōu)化BP 神經(jīng)網(wǎng)絡(luò)和改進(jìn)遺傳算法優(yōu)化BP 神經(jīng)網(wǎng)絡(luò)的測試結(jié)果進(jìn)行對比,數(shù)據(jù)預(yù)測結(jié)果如圖4所示.
圖4(a)、圖4(b)和圖4(c)分別是BP 神經(jīng)網(wǎng)絡(luò)、遺傳算法優(yōu)化BP 神經(jīng)網(wǎng)絡(luò)和改進(jìn)遺傳算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)的預(yù)測結(jié)果對比圖,由圖可知改進(jìn)遺傳算法優(yōu)化的BP 神經(jīng)網(wǎng)絡(luò)預(yù)測效果最好,BP 神經(jīng)網(wǎng)絡(luò)預(yù)測效果最差.
圖4 各個模型預(yù)測誤差
通過測試集數(shù)據(jù)對預(yù)測模型進(jìn)行預(yù)測后,分別計算各個模型的相對誤差,誤差對比情況如表2所示.
表2 各個模型預(yù)測結(jié)果
表3為模型預(yù)測誤差,通過各個預(yù)測模型的結(jié)果計算它們的MAE、MAPE以及RMSE三種誤差,從表3能夠看出,IGA-BP 模型的預(yù)測精度最高,MAE、MAPE以及RMSE分別是0.014 2、0.000 4和0.063 4,與BP 預(yù)測模型相比分別提高了3.13%、0.11%和14.02%;與GA-BP 模型相比分別提高了2.55%、0.09%和11.4%,所以IGA-BP 預(yù)測模型的預(yù)測質(zhì)量更高.
表3 模型預(yù)測誤差比較
通過對訓(xùn)練結(jié)果的分析,改進(jìn)的遺傳算法優(yōu)化的BP 神經(jīng)網(wǎng)絡(luò)具有更好的穩(wěn)定性和精確性,對BP 模型、GA-BP 模型和IGA-BP 模型輸出的相對誤差可以得出,IGA-BP 模型的相對誤差普遍較小;對3 種預(yù)測模型的MAE、MAPE以及RMSE進(jìn)行分析可以得出IGA-BP 模型的預(yù)測效果更精準(zhǔn).
本文提出了一種土壤濕度預(yù)測模型,該模型具有良好的預(yù)測性能,能夠提高土壤濕度的預(yù)測精度,為土壤濕度的預(yù)測提供了新的模型和方法.該模型的具體實(shí)施步驟是:(1)對數(shù)據(jù)進(jìn)行預(yù)處理,初始化BP 神經(jīng)網(wǎng)絡(luò),從而獲得初始權(quán)值和閾值;(2)對初始權(quán)值和閾值進(jìn)行編碼,導(dǎo)入改進(jìn)的遺傳算法模型中并且初始化遺傳算法;(3)通過改進(jìn)的遺傳算法能夠得到最優(yōu)的權(quán)值和閾值,從而提高了預(yù)測模型的精確性.本文通過對黑龍江省哈爾濱市呼蘭區(qū)玉米種植基地采集的數(shù)據(jù)進(jìn)行訓(xùn)練,之后取20 組數(shù)據(jù)對模型進(jìn)行測試,結(jié)果顯示本文提出的土壤預(yù)測模型具有更高了預(yù)測精度.該模型還有很多不足之處,比如該模型的適應(yīng)性有待提升,對環(huán)境氣候不同地區(qū)的預(yù)測可能會產(chǎn)生誤差,因此未來的改進(jìn)方向是如何更好地適應(yīng)不同地區(qū)土壤環(huán)境預(yù)測,對干濕度不同地區(qū)的土壤濕度進(jìn)行準(zhǔn)確預(yù)測.