劉洪山,王衛(wèi)星,孫道宗,高鵬,
陳文彬1,林楚婷1,謝家興1,3*
(1. 華南農(nóng)業(yè)大學(xué)電子工程學(xué)院,廣東 廣州 510642; 2. 廣東省智慧果園科技創(chuàng)新中心,廣東 廣州 510642; 3. 廣東省農(nóng)情信息監(jiān)測工程技術(shù)研究中心,廣東 廣州 510642)
全球的水資源日益緊缺,對于中國而言,全國供水量的60%左右為農(nóng)業(yè)灌溉用水,但灌溉水利用率僅為43%[1-3],因此,如何合理利用農(nóng)業(yè)用水成為一個(gè)亟待解決的問題.針對作物需水量規(guī)律錯(cuò)綜復(fù)雜的特點(diǎn),利用BP神經(jīng)網(wǎng)絡(luò)具有自組織、自適應(yīng)、自學(xué)習(xí)能力,可有效表明灌溉需水量與環(huán)境因子之間的非線性關(guān)系.夏澤豪等[4]通過多維氣象因子和參考作物需水量的相關(guān)度分析,建立預(yù)測作物需水量的灰色神經(jīng)網(wǎng)絡(luò)模型.沈岳等[5]以農(nóng)田水分平衡公式為基礎(chǔ),建立了農(nóng)田灌溉量的BP神經(jīng)網(wǎng)絡(luò)預(yù)測模型.商志根[6]應(yīng)用神經(jīng)網(wǎng)絡(luò)集成模型,以空氣濕度、溫度、太陽輻射以及風(fēng)速為輸入,利用交叉驗(yàn)證方法確定網(wǎng)絡(luò)隱層節(jié)點(diǎn)數(shù),建立作物需水量預(yù)測模型.但在實(shí)際應(yīng)用中,BP神經(jīng)網(wǎng)絡(luò)存在易陷入局部最優(yōu)、迭代收斂速度緩慢等問題[7-10].遺傳算法是一種借鑒生物界自然進(jìn)化機(jī)制的全局隨機(jī)搜索算法,具有很強(qiáng)的全局搜索能力.因此,為BP神經(jīng)網(wǎng)絡(luò)避免網(wǎng)絡(luò)陷入局部極小,采用遺傳算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)的權(quán)值和閾值是一種有效的方法,它可以提高BP神經(jīng)網(wǎng)絡(luò)的收斂速度和精度.
通過調(diào)研中國各地區(qū)的荔枝生產(chǎn)情況,例如廣東省、福建省、海南省及四川省等多地,可知荔枝產(chǎn)量主要受降雨量是否充沛、年平均溫度及日照這3個(gè)主要因素的影響.文中提出一種基于GA-BP神經(jīng)網(wǎng)絡(luò)的荔枝果園需水量預(yù)測方法,通過傳感器節(jié)點(diǎn)實(shí)時(shí)獲取果園的空氣溫度、土壤含水率、光照強(qiáng)度等環(huán)境數(shù)據(jù),預(yù)測當(dāng)前作物的需水量,以實(shí)現(xiàn)精準(zhǔn)灌溉的同時(shí),有效節(jié)約水資源和果園灌溉成本,并驗(yàn)證模型的有效性.
系統(tǒng)框圖如圖1所示.本環(huán)境信息采集系統(tǒng)的傳感器節(jié)點(diǎn)主要由多個(gè)傳感器、處理器、無線通信模塊和電源等組成,實(shí)物如圖2所示.采集數(shù)據(jù)的傳感器分別為測量土壤含水率的TDR-3傳感器、測量空氣溫濕度的DHT22數(shù)字傳感器及測量光照強(qiáng)度的GY-30傳感器[1,3],處理器則為ST公司的STM32F103C8T6.
圖1 環(huán)境信息采集系統(tǒng)結(jié)構(gòu)
圖2 傳感器節(jié)點(diǎn)實(shí)物圖
在充分考慮環(huán)境氣象數(shù)據(jù)和網(wǎng)絡(luò)復(fù)雜度的基礎(chǔ)上,采用聯(lián)合國糧食及農(nóng)業(yè)組織推薦的Penman-Monteith公式結(jié)合作物系數(shù)對作物需水量進(jìn)行計(jì)算,將溫度、土壤含水率、光照強(qiáng)度這3個(gè)環(huán)境影響因子作為BP神經(jīng)網(wǎng)絡(luò)的輸入,預(yù)測灌溉需水量作為網(wǎng)絡(luò)的輸出,建立基本BP神經(jīng)網(wǎng)絡(luò)預(yù)測模型.
為了使網(wǎng)絡(luò)獲得良好的收斂和映射關(guān)系,削弱各環(huán)境因子不同量綱的數(shù)據(jù)對網(wǎng)絡(luò)模型訓(xùn)練和預(yù)測值的影響,采用式(1)對環(huán)境數(shù)據(jù)進(jìn)行歸一化,將訓(xùn)練樣本的所有數(shù)據(jù)轉(zhuǎn)化到[0,1]區(qū)間內(nèi).
(1)
式中:Xi為樣本數(shù)據(jù);Xmax,Xmin為樣本數(shù)據(jù)的最大值和最小值;X′i為歸一化后的值.圖3繪制了傳感器網(wǎng)絡(luò)采集環(huán)境數(shù)據(jù)中的小部分樣本數(shù)據(jù),圖中ET為需水量,E為光照強(qiáng)度,φ為濕度,t為溫度.
圖3 樣本數(shù)據(jù)
BP神經(jīng)網(wǎng)絡(luò)是一種多層前饋神經(jīng)網(wǎng)絡(luò),包含輸入層、隱含層、輸出層.學(xué)習(xí)的過程中主要采用信號(hào)前向傳遞、誤差反向傳播的方式.
BP神經(jīng)網(wǎng)絡(luò)算法核心是將期望輸出與網(wǎng)絡(luò)輸出進(jìn)行對比得出誤差值,將誤差值反向傳播,逐層修改權(quán)值和閾值,直至誤差值達(dá)到預(yù)設(shè)的誤差范圍,完成對信息的學(xué)習(xí)和記憶.
具體算法是:
設(shè)ui為輸出層的輸入信號(hào),則隱含層所對應(yīng)神經(jīng)元的輸入信號(hào)netj表示為
netj=∑ωijui+θj.
(2)
隱含層神經(jīng)元節(jié)點(diǎn)的輸出信號(hào)οj為
oj=φ(netj)=φ(∑ωijui+θj).
(3)
輸出層神經(jīng)元節(jié)點(diǎn)接收到的輸入信號(hào)為
netk=∑ωjkoj+θk=∑ωjkφ(∑ωijui+θj)+θk,
(4)
則經(jīng)過輸出層神經(jīng)元后的輸出信號(hào)為
(5)
式中:φ(·),τ(·)分別為隱含層和輸出層傳遞函數(shù);ωij,ωjk和θj,θk分別為各層的權(quán)值和閾值;i,j,k為各層神經(jīng)元數(shù)目.
在誤差反向傳播過程中,權(quán)值、閾值按式(6),(7)進(jìn)行迭代更新.
Δωij(jk)=ηδj(k)oi(j),
(6)
Δθj(k)=ηδj(k),
(7)
式中:η為誤差反向傳播學(xué)習(xí)率(0<η<1);δj(k)為各層誤差信號(hào).BP神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)算法流程如圖4所示.
圖4 反向傳播網(wǎng)絡(luò)示意圖
據(jù)研究,BP神經(jīng)網(wǎng)絡(luò)的輸入節(jié)點(diǎn)數(shù)是u時(shí),單個(gè)隱含層節(jié)點(diǎn)數(shù)選取2u+1時(shí),BP神經(jīng)網(wǎng)絡(luò)模型能很好反映實(shí)際情況.由于隨著神經(jīng)網(wǎng)絡(luò)層數(shù)的增加,需要確定的權(quán)重越多,網(wǎng)絡(luò)復(fù)雜度越高,運(yùn)算時(shí)間成本也會(huì)增加.多數(shù)BP預(yù)測模型中,3層神經(jīng)網(wǎng)絡(luò)已可滿足要求,根據(jù)多次實(shí)際仿真試驗(yàn),結(jié)合網(wǎng)絡(luò)復(fù)雜度、預(yù)測時(shí)間和預(yù)測效果的折中考慮,采用3層神經(jīng)網(wǎng)絡(luò)對于荔枝需水量預(yù)測模型已可達(dá)到基本要求.由于BP神經(jīng)網(wǎng)絡(luò)易陷入局部最優(yōu),因此采用遺傳算法進(jìn)行優(yōu)化[9-11].隱含層節(jié)點(diǎn)數(shù)為7,確定BP結(jié)構(gòu)為3-7-1.隱含層和輸出層所采用的傳遞函數(shù)分別為tansig和purelin.由于Levenberg-Marquardt算法可以調(diào)整阻尼因子來控制收斂程度及收斂速度,克服了梯度法存在最終階段線性收斂且速度慢和牛頓法存在最終階段收斂速度快但是初始階段效果不好的缺點(diǎn),同時(shí)具備了牛頓法局部收斂性和梯度法全局性的特點(diǎn),因此網(wǎng)絡(luò)訓(xùn)練函數(shù)選用Levenberg-Marquardt算法.訓(xùn)練樣本選取40組樣本數(shù)據(jù),根據(jù)文獻(xiàn)經(jīng)驗(yàn),學(xué)習(xí)率設(shè)為0.1,最大訓(xùn)練次數(shù)設(shè)為500,最小均方差設(shè)為0.001[11-13].BP神經(jīng)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)如圖5所示,仿真訓(xùn)練中,訓(xùn)練集訓(xùn)練至400次左右,訓(xùn)練誤差便已下降至0.001,達(dá)到性能要求.
圖5 BP神經(jīng)網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)
遺傳算法是一種基于達(dá)爾文進(jìn)化論和孟德爾遺傳學(xué)的全局優(yōu)化隨機(jī)搜索算法,不易陷入局部最優(yōu).遺傳算法基本流程如圖6所示.通過選擇、交叉和變異等操作,尋找最優(yōu)個(gè)體.
圖6 遺傳算法
BP神經(jīng)網(wǎng)絡(luò)存在全局搜索能力不強(qiáng),收斂速度慢和易陷入局部最小值等缺陷.故先采用遺傳算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)值和閾值進(jìn)行全局搜索,定位最優(yōu)解后再用BP神經(jīng)網(wǎng)絡(luò)局部尋優(yōu)并進(jìn)行結(jié)果預(yù)測,如圖7所示.
算法具體步驟如下:
1) 個(gè)體編碼
隨機(jī)產(chǎn)生1個(gè)種群Χm×n,每個(gè)神經(jīng)網(wǎng)絡(luò)的初始權(quán)值分布為Χ1×n,并且每個(gè)基因值相當(dāng)于一個(gè)連接權(quán)值,因此個(gè)體的個(gè)數(shù)也代表神經(jīng)網(wǎng)絡(luò)權(quán)值的個(gè)數(shù),即
n=r×s1+s1×s2+s1+s2,
(8)
式中:n為個(gè)體的長度;r為輸入層節(jié)點(diǎn)數(shù);s1為隱含層節(jié)點(diǎn)數(shù);s2為輸出層節(jié)點(diǎn)數(shù).關(guān)于權(quán)值編碼的選擇,為了提高算法的精度,采用的方式是浮點(diǎn)數(shù)編碼.
2) 適應(yīng)度函數(shù)確定
圖7 GA-BP模型
個(gè)體評價(jià)的依據(jù)是適應(yīng)度函數(shù)值,BP神經(jīng)網(wǎng)絡(luò)輸入樣本則通過對每個(gè)個(gè)體進(jìn)行解碼來獲得,適應(yīng)度函數(shù)f設(shè)定為神經(jīng)網(wǎng)絡(luò)誤差平方和的導(dǎo)數(shù),即
(9)
式中:SE為神經(jīng)網(wǎng)絡(luò)期望輸出與預(yù)測輸出的誤差平方和.神經(jīng)網(wǎng)絡(luò)預(yù)測誤差越小,適應(yīng)度越好.在得到各個(gè)體的適應(yīng)值后,比較個(gè)體的適應(yīng)度值,選取種群個(gè)體適應(yīng)度最大作為子種群.
3) 選擇算子
選擇策略上采用賭輪方法選擇算子,這種方法反映個(gè)體被選擇的概率與其適應(yīng)值大小成正比.將第i個(gè)個(gè)體的適應(yīng)值設(shè)為fi,在種群規(guī)模k下,第i個(gè)體被選中的概率計(jì)算公式為
(10)
4) 交叉算子
采用數(shù)值交叉算子方法作為基因交叉組合的方式,設(shè)第i個(gè)個(gè)體在第k位的基因?yàn)閄i(k),假設(shè)Xi(k),Xi+1(k)以交叉概率pc進(jìn)行交叉操作,通過線性組合的方式來產(chǎn)生子代個(gè)體,則交叉后的子代個(gè)體為
(11)
式中:α,β為隨機(jī)數(shù),取值范圍為0~1.
5) 變異算子
為實(shí)現(xiàn)對基因局部進(jìn)行改變來產(chǎn)生新個(gè)體,采用均勻變異算子,對每一基因組,以變異概率pm進(jìn)行替換.
Xi=Xi(p)+r×q+Xi(n-p-1),
(12)
式中:q為第p+1個(gè)基因值對應(yīng)的閾值寬度.
6) 計(jì)算適應(yīng)度函數(shù)值
根據(jù)每次計(jì)算所得的適應(yīng)度函數(shù)值,進(jìn)行優(yōu)化條件判斷,若達(dá)到所設(shè)置的最大迭代次數(shù)或者滿足精度要求,則獲取最優(yōu)權(quán)值和閾值,否則返回循環(huán),進(jìn)行重新計(jì)算.
文中遺傳參數(shù)的具體數(shù)值:種群規(guī)模設(shè)置為100,交叉概率和變異概率分別設(shè)置為0.3和0.1,進(jìn)化迭代次數(shù)設(shè)置為250.
為保證隨機(jī)性和不重復(fù),從硬件端采集的同時(shí)期數(shù)據(jù)中每次隨機(jī)選取50組數(shù)據(jù)作為樣本數(shù)據(jù)進(jìn)行試驗(yàn),檢驗(yàn)效果時(shí),檢驗(yàn)樣本采用樣本數(shù)據(jù)中40組訓(xùn)練樣本外的10組數(shù)據(jù),分別對網(wǎng)絡(luò)模型進(jìn)行了測試.選擇神經(jīng)網(wǎng)絡(luò)誤差平方和的倒數(shù)作為遺傳算法的適應(yīng)度函數(shù),經(jīng)過200次迭代得到最佳適應(yīng)度函數(shù).在尋優(yōu)過程,最優(yōu)適應(yīng)度與平均適應(yīng)度變化如圖8所示,圖中f為適應(yīng)度函數(shù)值,m為迭代次數(shù).
圖8 適應(yīng)度函數(shù)變化曲線
由圖8可以看出,適應(yīng)度曲線先呈現(xiàn)曲折上升的趨勢,后逐漸趨于平穩(wěn)狀態(tài),在進(jìn)化迭代到120代之后適應(yīng)度基本趨于穩(wěn)定,說明此時(shí)個(gè)體在算法優(yōu)化下達(dá)到最優(yōu)解.可見遺傳算法在改善BP神經(jīng)網(wǎng)絡(luò)的誤差和收斂速度方面有非常好的效果.
根據(jù)荔枝生長主要環(huán)境影響因子建立的2個(gè)預(yù)測模型,能夠?qū)崿F(xiàn)有效的預(yù)測,預(yù)測值與實(shí)際值基本吻合,如圖9所示,圖中ET為需水量.計(jì)算了2個(gè)模型下預(yù)測結(jié)果的3個(gè)特征指標(biāo),分別為平均絕對百分比誤差(MAPE)、均方根誤差(RMSE)和平均絕對誤差(MAE),若預(yù)測效果越差則所計(jì)算各類指標(biāo)值越大.由表1中的指標(biāo)值大小比較可知,遺傳算法優(yōu)化的BP神經(jīng)網(wǎng)絡(luò)與未優(yōu)化前相比,擬合效果明顯得到提高.表1中XMAPE,XRMSE,XMAE分別為計(jì)算所得的MAPE,RMSE,MAE特征指標(biāo)值.
圖9 預(yù)測比較圖
為分析GA-BP神經(jīng)網(wǎng)絡(luò)模型預(yù)測輸出變化相對于目標(biāo)輸出變化的變化率,采用線性回歸的方法,文中利用Matlab工具箱函數(shù)postreg,線性回歸結(jié)果為
P=1.031 5T-0.170 9,R=0.979 9,
(13)
式中:P為預(yù)測值;T為試驗(yàn)值;R為相關(guān)度系數(shù).由回歸分析結(jié)果可知,經(jīng)過遺傳算法優(yōu)化后,最佳線性回歸方程的相關(guān)系數(shù)達(dá)0.979 9,表明預(yù)測值與實(shí)際值的偏差極小,優(yōu)化后的BP神經(jīng)網(wǎng)絡(luò)預(yù)測性能有所提高,預(yù)測效果比較理想.
表1是10組未進(jìn)行學(xué)習(xí)的樣本分別進(jìn)行預(yù)測后的特征指標(biāo)值,比較2組XMAPE,XRMSE,XMAE的數(shù)值,可以看出,相比優(yōu)化前的BP神經(jīng)網(wǎng)絡(luò),遺傳BP神經(jīng)網(wǎng)絡(luò)模型的特征指標(biāo)值明顯有所減小,證明其預(yù)測效果和收斂速度優(yōu)于未優(yōu)化的BP神經(jīng)網(wǎng)絡(luò).
1) 針對傳統(tǒng)果園需水量預(yù)測方法精度低、魯棒性差等問題,提出了基于GA-BP神經(jīng)網(wǎng)絡(luò)的果園需水量預(yù)測模型,通過遺傳算法優(yōu)化BP網(wǎng)絡(luò),獲得最優(yōu)權(quán)值和閾值,改善了BP神經(jīng)網(wǎng)絡(luò)易陷入局部極值的問題,提高了模型的收斂速度和預(yù)測精度.對荔枝的需水量進(jìn)行更高精度的預(yù)測,可以更加有利于荔枝果園水資源的合理分配,從而提高荔枝的產(chǎn)量.
2) 3種優(yōu)化后的算法評價(jià)指標(biāo)(XMAPE,XRMSE,XMAE)及相關(guān)性系數(shù)表明,基于GA-BP神經(jīng)的果園需水量模型預(yù)測性能優(yōu)于傳統(tǒng)BP神經(jīng)網(wǎng)絡(luò),它可以更準(zhǔn)確表達(dá)果園灌溉需水量與主要環(huán)境因子的非線性關(guān)系,具有一定的實(shí)用性.