本發明屬于設施農業環境預測領域,尤其是一種基于滾動bp神經網絡的溫室小氣候中長期預測方法。
背景技術:
溫室的高效生產依賴于適宜的溫室小氣候環境,建立高精度的溫室小氣候中長期預測模型對實現溫室環境優化調控具有重要意義。目前溫室中常用的閾值調控法雖然簡單易行,但能耗高、系統穩定性差。基于比例-積分-微分(proportion-integral-derivative,pid)控制器和模型預測控制(modelpredictivecontrol,mpc)等自動控制方法,可靠性高、能耗較低,但需要提前預測多個時段的環境參數。溫室小氣候模擬模型主要分為兩類:一是機理模型,其參數較難確定,不適用于溫室環境控制。二是實驗模型,也稱系統辨識,可以對模型參數進行在線調整,以滿足控制的要求。實驗模型中常用的是人工神經網絡模型,由于bp神經網絡簡單且容錯能力強,在溫室小氣候預測中應用最為廣泛。
目前國內外學者針對不同溫室環境建立了基于bp神經網絡的小氣候模擬模型,取得了良好的效果,研究表明人工神經網絡在溫室小氣候環境預測方面切實可行,但這些預測模型多數只能進行單步預測,即短期預測,無法實現中長期預測,不能滿足優化調控的要求。另外,采用bp神經網絡建模具有一定的優勢,但是其也有一些缺陷與不足,如易陷入局部最小值、過分依賴初始權值的選取以及泛化能力差等問題,因此bp神經網絡預測的精度仍有很大的提升空間。以往的很多研究者針對bp神經網絡的缺陷沒有提出改進的方法,僅選取最優的結果展示出來,事實上這些結果在一定程度上并沒有說服力。如何提高bp神經網絡的預測精度,并實現溫室小氣候的中長期預測,值得進一步研究和探討。
技術實現要素:
本發明所解決的技術問題在于提供一種基于滾動bp神經網絡的溫室小氣候中長期預測方法,根據預測時間構建一個滾動的bp神經網絡群,將前一個網絡的輸出作為后一個網絡的部分輸入進行滾動式的訓練和預測,有效提高溫室小氣候的預測精度。
實現本發明目的的技術解決方案為:
基于滾動bp神經網絡的溫室小氣候中長期預測方法,包括以下步驟:
步驟1:建立初始bp神經網絡f1,設當前時刻為t,輸入t時刻的溫室內部溫濕度,輸出預測的t+1時刻的溫室內部溫濕度,并得到f1的網絡參數;
步驟2:建立滾動的bp神經網絡群,包括n-1個神經網絡fn,每個神經網絡fn包含訓練集train_xn和測試集test_xn,相鄰兩個神經網絡的訓練集和測試集之間均相隔一個時刻,其中,train_xn表示t+n-1時刻的訓練集,test_xn表示t+n-1時刻的測試集,n≥2;
步驟3:利用train_xn和網絡參數結合梯度下降法訓練fn模型,訓練完成后,再將train_xn輸入到fn模型中,輸出模擬結果train_yn;將test_xn輸入到fn模型中,輸出預測結果test_yn;
步驟4:令n=n+1,轉到步驟3。
進一步的,本發明的基于滾動bp神經網絡的溫室小氣候中長期預測方法,步驟1具體包括:
步驟1-1:基于無監督學習模型對t時刻的溫室內部溫濕度進行預訓練,抽取輸入數據的特征,并重構后輸出;
步驟1-2:將數據的特征作為bp神經網絡的初始化參數,進行有監督的目標學習,采用改進的局部粒子群優化方法結合遺傳算法優化該bp神經網絡的權重和閾值參數;
步驟1-3:采用最優權重和閾值參數建立初始bp神經網絡f1,輸出預測的t+1時刻的溫室內部溫濕度。
進一步的,本發明的基于滾動bp神經網絡的溫室小氣候中長期預測方法,步驟1-1所述的對輸入數據重構的方法具體為:將輸入層與隱藏層之間的權重和閾值{w(1),b(1)}作為編碼器,編碼函數采用sigmoid函數;將隱藏層與輸出層之間的權重和閾值{w(2),b(2)}作為譯碼器,譯碼函數采用tanh函數。
進一步的,本發明的基于滾動bp神經網絡的溫室小氣候中長期預測方法,步驟1-2的具體步驟為:
步驟1-2-1:將種群分為兩個子群,在spmd并行結構中同時進行計算,初始化種群速度和位置、學習率c1和c2、慣性權重;
步驟1-2-2:將次數低于平均值的粒子次數清零,全局最優賦給子群全局最優,即badnum[n]=0,plg=pg,badnum為粒子次數,n為次數低于平均數的粒子編號,plg為子群全局最優,pg為全局最優;
步驟1-2-3:更新粒子的速度和位置:
vi(t+1)=ωvi(t)+c1r1(pavg-xi(t))+c2r2(plg-xi(t)),xi(t+1)=xi(t)+vi(t+1),其中,i=1,2,…,n,t為當前迭代次數,ω是慣性權重,c1、c2是加速因子,r1、r2是[0,1]區間的隨機數,vi(t)為粒子原速度,vi(t+1)為更新后的粒子速度,pavg為個體極值中心點,plg為每個子群的全局最優位置,xi(t)為粒子原位置,xi(t+1)為更新后的粒子位置;
步驟1-2-4:引入交叉算子,若產生的隨機數小于交叉概率pc,則兩個子群執行交叉操作:xik=plg1k,xjl=plg2l,其中,xik為第一個子群中第i個粒子位置的第k維元素,plg1k為第一個子群全局最優位置的第k維元素,xjl為第二個子群中第j個粒子位置的第l維元素,plg2l為第二個子群全局最優位置的第l維元素,i、j=1,2,…,n/2且i≠j,k∈[(in+1)*hn+1,d],l∈[1,(in+1)*hn],in為神經網絡的輸入層神經元個數,hn為隱藏層神經元個數,d為粒子的維度,并計算每個粒子的適應度j(i),若隨機數大于交叉概率pc,則不進行任何操作;
步驟1-2-5:更新局部最優pi,若更新后的粒子位置優于原來的粒子位置,則將新粒子位置作為該粒子的pi,并作為本次迭代中的全局最優plg,更新個體機制中心點pavg,計算每個子群平均適應度fit_avg,若更新后的粒子位置未優于原來的粒子位置,則不進行任何操作;
步驟1-2-6:引入變異算子,若j(i)<fit_avg,則令badnum(i)+1,若badnum(i)≥badnumlimit,則隨機初始化粒子的位置和速度:xid=a+(b-a)*rand,vid=m+(n-m)*rand,其中d=1,2,…,d,a和b是限定粒子的最小和最大位置,m和n是限定粒子的最小和最大速度,rand為[0,1)之間的均勻隨機數;
步驟1-2-7:判斷是否達到預設的內部迭代次數,若是,則比較兩子群的子群最優,獲得全局最優,若否,則轉步驟1-2-3;
步驟1-2-8:判斷是否達到最大迭代次數或滿足gbest(n)-gbest(n-4)<=0.0001,若是,則停止迭代,若否,則磚步驟1-2-2。
進一步的,本發明的基于滾動bp神經網絡的溫室小氣候中長期預測方法,步驟1的預測公式為:
其中,(p)t為t時刻環境參數,(tin)t為t時刻溫室實測溫度,(hin)t為t時刻溫室實測濕度,
進一步的,本發明的基于滾動bp神經網絡的溫室小氣候中長期預測方法,步驟2中的一個時刻為15min。
進一步的,本發明的基于滾動bp神經網絡的溫室小氣候中長期預測方法,訓練集train_xn包括t+n-1時刻的溫室外部環境影響因素(p)t+n-1和神經網絡fn-1的訓練集模擬結果train_yn-1,其中train_yn-1包括預測的t+n-1時刻的溫室內部溫濕度。
進一步的,本發明的基于滾動bp神經網絡的溫室小氣候中長期預測方法,滾動的bp神經網絡的預測公式為:
其中,(p)t+n-1為t+n-1時刻的環境參數,
本發明采用以上技術方案與現有技術相比,具有以下技術效果:
1、本發明的方法可連續預測未來6-12小時的溫室小氣候,實驗結果表明,與傳統的bp單步提前滾動預測模型相比,滾動bp模型預測未來6小時溫濕度誤差可降低50%以上,大大降低了中長期滾動預測的累計誤差,能夠較準確地預測不同季節不同地域下的溫室中長期環境變化趨勢,為制定合理的小氣候調控方案提供了依據。
2、本發明的方法第一階段采用改進的bp神經網絡,實驗結果表明,與初始神經網絡模型采用傳統bp網絡相比,本發明提出的滾動bp模型預測未來6小時溫濕度誤差可降低9.3%~45%,說明改進的bp神經網絡是十分有效的,可切實提高滾動bp模型的整體預測精度。
3、本發明的方法首次將無監督學習模型用于溫室小氣候中長期預測中,實驗結果表明,預測誤差降低了10%左右,運行效率提高了20%以上。
4、本發明的方法采用改進的局部粒子群優化方法對bp神經網絡進行優化,與標準的局部粒子群優化方法相比,預測溫濕度誤差降低10%~30%。
附圖說明
圖1是本發明的基于滾動bp神經網絡的溫室小氣候中長期預測方法的模型結構圖;
圖2是本發明的改進的局部粒子群優化方法流程圖;
圖3是本發明的基于滾動bp神經網絡的溫室小氣候中長期預測方法的第n個bp神經網絡學習和預測流程圖。
具體實施方式
下面詳細描述本發明的實施方式,所述實施方式的示例在附圖中示出,其中自始至終相同或類似的標號表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附圖描述的實施方式是示例性的,僅用于解釋本發明,而不能解釋為對本發明的限制。
基于滾動bp神經網絡的溫室小氣候中長期預測方法的結構圖如圖1所示,模型分為兩個階段,即建立初始bp神經網絡和滾動的bp神經網絡群。第一階段的初始神經網絡包括兩步,即ae無監督學習和bp神經網絡有監督學習。第二階段構建滾動的bp神經網絡群,fn-1(n>=2)模型的模擬輸出將作為fn模型的部分輸入,fn-1訓練完成后,將fn-1的網絡參數作為fn的初始網絡參數,由于連續兩個模型的預測時間間隔較短(15分鐘),網絡參數差異較小,而bp神經網絡有較強的反向微調能力,因此f2~fn均采用bp神經網絡,進一步縮小預測模型的誤差。
根據室內外影響因子建立溫室小氣候的函數模型。設當前時刻為t,連續預測t+1~t+n時刻的數據,下式中,f1表示初始bp神經網絡,采用t時刻的真實數據進行訓練,網絡輸出為t+1時刻的溫室內部溫濕度;fn表示滾動bp神經網絡中的第n(n>=2)個模型,采用t+n-1時刻的外界環境參數和fn-1模型室內溫濕度模擬值進行訓練,網絡輸出為t+n時刻的溫室內部溫濕度。
訓練完n個網絡后,保存每個bp神經網絡的權重和閾值參數,再進行中長期滾動預測。預測過程是將fn-1的預測結果作為fn的部分輸入進行不斷滾動預測。
其中,p代表外界環境參數和溫室內部設備狀態,包含[tout,hout,ws,sr,fs,vs]中的任意多個參數,(p)t為t時刻環境參數,(tin)t為t時刻溫室實測溫度,(hin)t為t時刻溫室實測濕度,
以下為實施滾動bp神經網絡溫室小氣候中長期預測的具體過程。
1、構建初始bp神經網絡
初始bp神經網絡的預測結果和網絡參數將分別作為第二個模型的部分輸入和初始網絡參數,進而影響滾動bp模型整體的預測結果。為提高預測精度,初始bp神經網絡首先利用無監督學習模型ae進行無監督學習,抽取數據的特征;然后將ae的特征表達作為bp神經網絡的初始化參數,再進行有監督的目標學習,并采用改進的局部粒子群優化方法來優化該網絡權重和閾值。由于標準pso算法存在易早熟、穩定性差等問題,因此本發明提出了一種改進的局部粒子群優化方法(ipso)。最后將測試集輸入訓練完成的模型中驗證網絡的泛化能力。
(1)基于ae的bp神經網絡初始參數優化
首先建立三層自動編碼器網絡,輸入向量與輸出向量各元素相等。輸入層與隱藏層之間的權重和閾值{w(1),b(1)}為編碼器,編碼函數采用sigmoid函數;隱藏層與輸出層之間的權重和閾值{w(2),b(2)}為譯碼器,譯碼函數采用tanh函數,則有:
hi=sigmoid(w(1)xi+b(1))
yi=tanh(w(2)hi+b(2))
ae是一種無監督學習模型,即訓練數據是無標簽的,輸出為輸入的重構,通過計算重構誤差得到ae的權重參數,獲得輸入數據的特征表達。重構誤差函數j(θ)下式所示。
式中m為訓練樣本的數量,n為網絡層數,θ為神經網絡的參數,包括權重和偏置項。大括號內第一項為模型輸出值和期望值之間的均方差,第二項l2為正則項,用以減小權重變化幅度,避免過擬合。
(2)基于ipso算法的bp神經網絡參數優化
傳統bp神經網絡利用梯度下降法進行訓練,局部微調性較強,但易陷入局部最優點。且由于網絡參數較多,粒子的維度較高,在一定的粒子種群數量下pso算法的性能會隨著被優化問題維數的增加而降低,為了不增加算法的復雜度并提高精度,本發明提出了ipso算法,包括:
(a)采取局部粒子群優化方法。即通過并行算法將種群分成多個子群,粒子的速度基于個體最優和子群全局最優更新,以加強全局搜索能力,同時提高算法的效率。由于神經網絡結構較為復雜,粒子維度較高,因此本發明的方法將粒子速度更新公式基于個體極值中心點和全局極值。個體極值中心點為pavg=[pavg1,pavg2,…,pavgd],其中
vi(t+1)=ωvi(t)+c1r1(pavg-xi(t))+c2r2(plg-xi(t))
其中,plg為每個子群的全局最優位置。
(b)引入遺傳算法的交叉算子。即對粒子位置執行交叉操作,以增加種群多樣性,避免算法早熟收斂。交叉時將網絡參數分為兩個部分,第一部分即神經網絡輸入層到隱藏層的參數{w(1),b(1)},第二部分為神經網絡隱藏層到輸出層的參數{w(2),b(2)}。設交叉概率為pc,第一個子群的個體xi=[xi1,xi2,…,xid]以pc的概率與第一個子群的全局最優位置plg1第二部分參數交叉;第二個子群的個體xj=[xj1,xj2,…,xjd]以pc的概率與第二個子群的全局最優位置plg2第一部分參數交叉,公式如下所示。
xik=plg1k
xjl=plg2l
其中,i,j=1,2,…,n/2且i≠j,k∈[(in+1)*hn+1,d],l∈[1,(in+1)*hn],in為神經網絡的輸入層神經元個數,hn為隱藏層神經元個數,d為粒子的維度,即神經網絡的權重和閾值參數個數之和,設輸出層神經元個數為on,則d=in*hn+hn*on+hn+on。
(c)引入變異算子。種群進化過程中如果某個粒子的適應值多次低于群體平均適應值,則表明粒子的進化方向已經遠遠偏離最優解,不再適應當前的搜索環境,因此引入遺傳算法的變異算子對該粒子執行變異操作,使陷入局部值的粒子跳出并繼續尋找最優解,其他粒子則保持原狀態繼續進化,直至收斂。變異方式下式所示,即按初始化方式改變粒子的位置和速度。
xid=a+(b-a)*rand
vid=m+(n-m)*rand
其中,d=1,2,…,d,a和b是限定粒子的最小和最大位置,也即神經網絡參數的范圍;m和n是限定粒子的最小和最大速度,決定了粒子位子變化的幅度;rand為[0,1)之間的均勻隨機數。
ipso算法流程圖如圖2所示。具體算法流程如下:
步驟1:將種群分為兩個子群,在spmd并行結構中同時計算,初始化種群速度和位置,初始化學習率c1、c2,慣性權重ω等參數;
步驟2:把統計每個粒子低于平均值的次數清0,即badnum[n]=0;把全局最優賦給子群全局最優plg=pg;
步驟3:更新粒子的位置和速度;
步驟4:引入交叉算子。若產生的隨機數小于交叉概率pc,兩個子群分別執行交叉操作;
步驟5:計算每個粒子的適應度j(i);
步驟6:更新局部最優pi,如果粒子位置更新后優于原來的粒子,則將新的粒子的位置作為該粒子的pi;
步驟7:①更新子群全局最優,如果位置更新后粒子優于原來的子群全局最優位置,則將該粒子的位置作為本次迭代中的全局最優plg;②更新個體極值中心點pavg。
步驟8:計算每個子群平均適應度fit_avg;
步驟9:引入變異算子:若j(i)<fit_avg,則令badnum(i)+1;若badnum(i)>=badnumlimit,則隨機初始化粒子的位置和速度。
步驟10:達到內部迭代次數后,兩個子群交互,即比較子群最優,從而得到全局最優;未達到則跳轉步驟3;
步驟11:達到最大迭代次數或滿足gbest(n)-gbest(n-4)<=0.0001(即適應度函數連續5次不變)即停止迭代。循環回到步驟2,直至滿足終止條件。
2、構建滾動的bp神經網絡群
滾動bp模型第二階段是建立滾動的bp神經網絡群,即連續建立n個單步預測模型,每個網絡模型都有對應的訓練集train_xn(n>=2)和測試集test_xn,train_xn和test_xn代表t+n-1時刻的數據,包含(p)t+n-1、
第n個bp神經網絡學習和預測過程如圖3所示,采用t+n-1(n>=2)時刻訓練集train_xn訓練fn模型,該訓練集包括t+n-1時刻的溫室內外環境影響因素(p)t+n-1,以及fn-1模型的訓練集的模擬結果train_yn-1。網絡輸出為t+n時刻的實測數據,采用梯度下降法訓練網絡。訓練完成后將訓練集train_xn再次輸入fn模型中,得到訓練集的模擬結果train_yn,即t+n時刻的溫室內部溫濕度模擬結果集,將作為train_xn+1的一部分用于訓練fn+1模型。然后將t+n-1時刻測試集test_xn輸入模型中得到t+n時刻室內溫濕度預測結果test_yn,并作為test_xn+1的一部分,用于預測t+n+1時刻的室內溫濕度。如此滾動訓練和預測,實現溫室小氣候的中長期預測。訓練多個網絡的目的是為了使訓練集和測試集來源一致,提高預測模型的精度,即fn(n>=2)模型的訓練樣本和測試樣本中的室內溫濕度數據均來自fn-1模型的模擬結果。
以上所述僅是本發明的部分實施方式,應當指出,對于本技術領域的普通技術人員來說,在不脫離本發明原理的前提下,還可以做出若干改進,這些改進應視為本發明的保護范圍。