孔祥宇,賈敏智
(太原理工大學電氣與動力工程學院,山西 太原 030024)
水是生命之源,是我們生產(chǎn)、生活中必不可少的資源,水對于人類的重要性不言而喻。隨著我國農(nóng)業(yè)的發(fā)展,農(nóng)業(yè)生產(chǎn)用水量也在迅速增長,在農(nóng)業(yè)生產(chǎn)中,灌溉用水量占總用水量的60%以上,而利用率卻不足五成,水資源浪費較為嚴重,因此,必須對灌溉過程進行優(yōu)化,以減少水資源的浪費。國內(nèi)大部分的農(nóng)田灌溉模式是渠道灌溉,渠道灌溉系統(tǒng)中,最重要的一環(huán)就是控制流量,若流量大小已知,便可根據(jù)時間計算水量。在使用步進電機實現(xiàn)的閘門開度控制系統(tǒng)中,步進電機對閘門的控制是離散的,步進電機轉(zhuǎn)過一個角度,對應的閘門增加一定的開度,因此,找到一個合適的閘門開度,以使得閘門流量最接近于給定的流量,成為了一個尋求最優(yōu)解的過程。
矩形平板閘門具有占地面積小、驅(qū)動功耗低、安裝方便等優(yōu)點,性價比高,非常適合在各型灌區(qū)中使用。根據(jù)明渠測流理論,矩形平板閘門通過調(diào)節(jié)閘門開度來調(diào)節(jié)流量,當閘門開度與閘門上游水位之比e/H≤0.65時,屬于閘孔出流狀態(tài);當e/H>0.65時,屬于堰流狀態(tài)。閘孔出流狀態(tài)又分為自由出流和淹沒出流,如果下游水位不影響射流,為自由出流,否則,為淹沒出流[1]。
收縮斷面的躍后共軛水深計算公式為:
(1)
(2)
hc=eε
(3)
(4)
閘孔自由出流狀態(tài)下的流量計算公式為:
(5)
(6)
式中:μ0為流量系數(shù);b為閘門寬度。
閘孔淹沒出流狀態(tài)下的流量計算公式為:
(7)
(8)
(9)
式中:ht為閘門下游液位;φ為流速系數(shù),取0.97。
堰流出流狀態(tài)下的流量公式為:
(10)
(11)
(12)
式中:ha為堰上水頭;σ為淹沒系數(shù);m0為流量系數(shù);a為堰高,閘門安裝好后a為固定值[2]。
從公式(1)到公式(12)可以看出,除了堰流狀態(tài),自由出流狀態(tài)和淹沒出流狀態(tài)對于流量Q的計算均和閘門開度e相關。因此,只有選擇合適的閥門開度,使得流量達到給定值,才能更加精確地控水,從而達到節(jié)約用水的目的[3]。
反向數(shù):設x∈[a,b],且為實數(shù),則反向數(shù)的定義為:
x*=a+b-x
(13)
(14)
一般反向?qū)W習(Generalized Opposition-Based Learning, GOBL):設x是當前搜索空間[a,b]中的一個解,新解x*以如下方式定義:
x*=Δ-x
(15)
式中:Δ是一個可計算的值,x∈[Δ-b,Δ-a]。同理,D維搜索空間的一般反向?qū)W習可定義為:
(16)
式中:i∈(1,2,…,D)。運用一般反向?qū)W習,我們不但可以評估當前候選解x,還可以計算評估其轉(zhuǎn)換解x*。這使得找到或接近最優(yōu)解的可能性大大增加。設Δ=k(a+b),k為實數(shù),則一般反向?qū)W習的具體形式為:
x*=k(a+b)-x
(17)
根據(jù)k值的不同,我們有四種不同的GOBL模式。我們這里取k=rand(0,1),即k為[0,1]之間的隨機數(shù)。這個模式的定義為:
x*=rand(0,1)(a+b)-x
(18)
這種模式生成的反向種群與正向種群相結(jié)合,全局性更強,減小了局部最優(yōu)的發(fā)生概率,更容易找到最優(yōu)解。
人工蜂群算法(ABC)是模擬蜜蜂的采蜜行為得出的算法。ABC算法將人工蜂群分為3類:雇傭蜂,跟隨蜂和偵查蜂,雇傭蜂和跟隨蜂對食物源進行開采,偵察蜂是為了防止食物源種類過少。雇傭蜂和跟隨蜂各占蜜蜂種群的一半,雇傭蜂的數(shù)量和食物源的數(shù)量相等,即一處食物源對應一只雇傭蜂。如果某個食物源被雇傭蜂和跟隨蜂放棄,那么這個食物源對應的雇傭蜂變?yōu)閭刹旆鋄4-6]。在ABC算法中,每個食物源代表優(yōu)化問題的一個可行解,每個食物源的蜜量代表一個解的適應度。
(1)初始化。首先,初始化蜂群數(shù)量NP,食物源數(shù)量NP/2(即ABC算法根據(jù)公式(19)隨機產(chǎn)生NP/2個初始解)。
xi,j=xmin,j+rand(0,1)(xmax,j-xmin,j)
(19)
式中:xi,j表示第i個解的第j維值;xmax,j,xmin,j分別表示第j維搜索空間的上下界,且1≤i≤NP/2,j∈{1,2,…,D},D是解的維度。
(2)雇傭蜂階段。初始化完成后,蜜蜂開始對所有的初始解進行循環(huán)搜索,雇傭蜂會根據(jù)公式(20),對記憶中的食物源進行改變產(chǎn)生一個新的食物源(即產(chǎn)生一個新的可行解),并根據(jù)公式(21)計算新食物源的蜜量(即新解的適應度),現(xiàn)實中的蜜蜂則是對原來食物源周圍的其他食物源的視覺信息進行比較來發(fā)現(xiàn)新的食物源。如果新食物源的蜜量高于原來的食物源,那么雇傭蜂將記憶中原來的食物源替換為新的食物源(即用新解替換舊解)。
vi,j=xi,j+δi,j(xi,j-xk,j)
(20)
式中:δi,j為[-1,1]之間的隨機數(shù),k∈{1,2,…,NP/2},為不同于i的整數(shù);vi,j是產(chǎn)生的新的可行解。
(21)
式中:f(xi)為第i個解的目標函數(shù)值;fiti是第i個解的適應度值。
雇傭蜂完成搜索后回到蜂巢,將所獲取的食物源信息與跟隨蜂共享。
(3)跟隨蜂階段。跟隨蜂對雇傭蜂搜索到的食物源的信息進行評估,按照公式(22)計算出來的概率選擇一個食物源。然后,跟隨蜂同雇傭蜂一樣,對記憶中的食物源進行修正,若新修正的食物源的蜜量高于原來的食物源,那么就用新食物源來代替記憶中的舊的食物源。否則,保持對原來食物源的記憶。
跟隨蜂對食物源的選擇根據(jù)食物源蜜量相關的概率來進行,概率的公式為:
(22)
式中:fitmax為所有解的最大適應度值;pi為第i個解對應的概率。
(4)偵查蜂階段。搜索過程中,如果食物源xi經(jīng)過t次檢驗,且達到上限值limit,但是沒有找到更好的食物源,則該食物源會被舍棄,依據(jù)公式(19)產(chǎn)生新的食物源。
(5)輸出最優(yōu)解。在完成以上三步后,如果達到終止條件,那么就可以輸出最優(yōu)解,見圖1。
圖1 人工蜂群算法流程圖
由以上可知,將反向?qū)W習運用于人工蜂群算法的食物源初始化階段,可以使得食物源的多樣性得到提高,更有利于尋找最優(yōu)解。反向食物源的公式為:
(23)
圖2 引入反向?qū)W習的算法流程
利用人工蜂群算法對正向食物源進行搜索的同時,對反向食物源也進行搜索,再對正、反向食物源中的最優(yōu)解進行比較,從而選擇出最終的最優(yōu)解。
根據(jù)公式(5)和公式(7)來計算自由出流狀態(tài)和淹沒出流狀態(tài)下的短時間內(nèi)的流量。通過不停地調(diào)節(jié)閘門開度的大小,使閘門的流量趨于穩(wěn)定,讓其達到所需求的流量大小。可以將給定流量Q0和計算流量Q之差ΔQ作為一個約束條件,作為目標函數(shù),求得目標函數(shù)的最小值,同時求得此時對應的參數(shù),即最優(yōu)閘門開度。
已知某渠道分水閘門的開度范圍設置為:0~0.3 m,閘門寬度為:0.5 m,閘門上游液位為0.8 m,閘門下游液位為0.4 m,這時的流態(tài)為閘孔出流狀態(tài)。根據(jù)流態(tài)判斷的流程,閘門開度在0~0.16 m時,流態(tài)為淹沒出流,在0.16~0.3 m的范圍內(nèi)時,為自由出流,見圖3。
圖3 共軛水深與閘門下游液位的差同閘門開度的關系圖
在閘門上、下游液位和閘門的開度已知時,閘門流量的范圍就可以得到。因此,只要用戶在對應區(qū)間內(nèi)設定流量大小,便可以通過調(diào)節(jié)閘門開度實現(xiàn)。為了求得此時的最優(yōu)閘門開度,我們采用引入反向?qū)W習的人工蜂群算法來計算。在這里我們能夠設定的需求流量大小,是根據(jù)上下游的水位變化的,系統(tǒng)會給出一個合理的范圍,在這個范圍內(nèi)設定所需流量,才能通過調(diào)節(jié)閘門開度實現(xiàn)。
當閘門上游液位為0.8 m的時候,在淹沒出流狀態(tài)下,閘門所能控制的流量大小范圍為:0~0.14 m3/s;在自由出流狀態(tài)下,閘門所能控制的流量大小范圍為:0.18~0.31 m3/s,見圖4。
圖4 閘門開度同閘門流量關系圖
在閘孔出流流態(tài)下,運用引入反向?qū)W習的人工蜂群算法在10次迭代左右便找到了最優(yōu)解,使得計算流量與給定流量差約等于0,這樣的收斂速度完全符合要求,見圖5和圖6。
圖5 迭代次數(shù)同計算結(jié)果的關系(Q0=0.25 m3/s)
圖6 迭代次數(shù)同計算結(jié)果的關系(Q0=0.1 m3/s)
當閘門上游液位0.8 m,閘門寬度0.5 m,閘門下游液位0.4 m時,為達到不同的給定流量Q0,通過所得的最優(yōu)閘門開度e求得計算流量Q,可以看出計算流量與給定流量的絕對誤差都小于1%,本文所用算法的計算精度符合要求,見表1。
表1 計算流量與給定流量相關數(shù)據(jù)統(tǒng)計
同上面自由出流的條件相同,這次采用粒子群算法來求最優(yōu)解。
當閘門上游液位為0.8 m的時候,在自由出流狀態(tài)下,閘門所能控制的流量大小范圍為:0.18~0.31 m3/s,將給定流量設置為0.25 m3/s,此給定流量在自由出流的流量范圍內(nèi),此時,閘門為自由出流狀態(tài)。通過使用粒子群算法,求得在自由出流狀態(tài)下,達到給定流量的閘門最優(yōu)開度為 0.23 m。在使用普通粒子群算法進行計算時,迭代接近40次才能找到最優(yōu)解,而人工蜂群算法只需要10次左右便可得到,粒子群算法的收斂速度不如引入反向?qū)W習的人工蜂群算法,見圖7。
圖7 兩種算法的比較
在自由出流狀態(tài)下,通過粒子群算法和引入反向?qū)W習的人工蜂群算法的求解過程進行比較發(fā)現(xiàn),引入反向?qū)W習的人工蜂群算法的收斂速度更快,精準度更高。
我國的水資源并不豐富,在渠道灌溉占大多數(shù)的情況下,節(jié)約用水是不變的主題,分水閘門的流量控制是渠道灌溉的關鍵,控制了流量,便控制了水量。在分水閘門流量控制的過程中,為了達到所要求的流量大小,控制閘門開度是主要的解決方法。實際操作中,技術人員根據(jù)土壤濕度,來確定一定面積的農(nóng)田需要灌溉的水量,控制系統(tǒng)根據(jù)所需要的水量,根據(jù)當前的條件計算出合適的給定流量Q0,再通過調(diào)節(jié)閘門實現(xiàn) 。本文采用了能夠準確計算閘門開度的基于反向?qū)W習的人工蜂群算法,該算法的收斂速度和計算精度都滿足閘門開度計算的需求,在不同的閘門出流條件下,計算出相關的閘門開度大小,并根據(jù)實時液位變化進行計算和調(diào)節(jié),使得閘門流量保持穩(wěn)定。知道了閘門流量的大小,便可通過時間計算出流出的水量,更好地節(jié)約用水。