王玉蓮 黃林顯 桑國慶等
關鍵詞:地下水管理模型;自適應罰函數;遺傳算法(GA);MODFLOW
中圖分類號:P641.2 文獻標志碼:A
doi:10.3969/j.issn.1000-1379.2022.03.014
引用格式:王玉蓮,黃林顯,桑國慶,等.基于自適應罰函數遺傳算法求解地下水管理模型[J].人民黃河,2022,44(3):69-73.
近幾十年來,地下水管理模型被廣泛應用于地下水資源優化管理工作中[1-3],對于無約束優化問題的求解產生許多成熟的方法,如基于梯度尋優的方法等。但地下水資源優化管理往往涉及復雜的環境、水文地質和經濟等約束條件,并且其代價函數往往不連續可導,對于約束優化問題(特別是非線性約束優化問題),傳統的梯度尋優類方法通常很難取得好的優化效果[4-7]。
國內外學者對利用遺傳算法求解地下水管理模型進行了許多研究。利用遺傳算法求解約束優化問題的難點在于有效合理選取罰函數,最簡單的罰函數使用方法是對違反限制條件的解施加某種固定罰因子,使其適應度函數變差[8],但是如何合理有效選取罰因子成為制約該方法優化效果的難點。罰因子取值過大容易造成算法過早地收斂于局部極值點,取值過小又可能造成算法的收斂性能變差。Wu等[9]提出了一種可以人為進化罰因子和目標函數的自適應罰函數方法,Lin等[10-11]提出了一種新型自適應罰函數方法用于解決約束條件優化問題,Powell等[12]提出了一種罰函數構造方法并指出可行域解優先度高于非可行域解。以上幾種方法同樣需要人為確定罰因子數值,同時當種群含有較多非可行域解時,過度降低非可行域解的優先度會大大影響搜索效率[8]。Cai等[13]、Wang等[14]和Afshari等[15]提出了多目標優化技術用來求解約束條件優化問題。在各種多目標優化方法中,約束條件優化問題被轉化為最小化(或最大化)目標函數和最小化約束條件違反程度的雙目標優化問題。多目標優化方法的主要缺點是其需要耗費大量計算資源,同時需要人為提供一些計算參數。
基于以上分析,本文提出一種自適應罰函數遺傳算法用于求解有約束條件的地下水管理優化問題,并進行實際案例驗證。該算法將地下水流數值模型MODFLOW嵌入到優化算法GA中,數值模型模擬結果返回到優化算法中作為約束條件,優化過程通過GA求解;同時,該算法能夠根據求解過程中可行域個體的數量來自動選擇合適的罰因子值,克服了一般遺傳算法中罰因子取值的困難。
1方法原理
本研究提出的自適應罰函數遺傳算法模型利用MODFLOW模擬地下水流運移的物理過程;自適應罰函數算法根據遺傳算法種群中可行域解所占的比例自動選取罰因子值的大小,并計算適應度函數;GA優化算法根據適應度函數,通過選擇、交叉和變異3個過程,按照優勝劣汰、適者生存的自然法則,最終搜索到全局最優的個體。3個模塊通過計算機程序實現相互之間的鏈接,并通過變量實現數據交換。模型的主要結構及不同模塊之間的鏈接見圖1(其中BAS、LPF和WEL等為MODFLOW的子程序包,如WEL為模擬井流子程序包,見參考文獻[16])。
1.1地下水控制方程
根據能量守恒、質量守恒以及Darcy定律,在不考慮水密度變化條件下,孔隙介質中地下水三維流動偏微分方程可以用下式表示[16]:
本研究中,地下水水流模擬程序MODFLOW被用來模擬地下水滲流場的時空分布狀況。
1.2優化模型
在一定的等式約束和不等式約束條件下,優化模型往往表現為補給量或抽水量的最大化或抽水成本的最小化及最優井位分布。本研究的實例為抽水量最大化,但在數值模型MODFLOW中抽水量為負值,因此其目標函數可表示為
2基于自適應罰函數的遺傳算法
2.1遺傳算法(GA)
遺傳算法(GA)是由美國Holland教授于20世紀70年代提出的建立在自然選擇和遺傳學機理基礎上的全局隨機進化和搜索算法,目前已得到了廣泛應用[17]。與傳統的基于梯度尋優方法相比,遺傳算法尋優不需優化函數連續可導,且能收斂到全局最優解,因此能夠克服一些基于梯度尋優方法的缺點。遺傳算法在每次迭代過程中都生成一個群體,群體中的每個個體對應一組決策變量,按照某種標準從群體中選取較優的個體,通過選擇、交叉和變異對種群進行進化,產生新一代種群;如此反復,通過種群的不斷進化,使個體逐代向全局最優解空間轉移,直到達到某種收斂指標為止。GA算法計算流程見圖2。
2.2自適應罰函數法
罰函數法主要用來解決約束條件下的最優化問題,通過把約束條件變為罰函數使有約束的目標函數變為無約束的目標函數;違反約束條件的個體將被附加一個罰函數值,從而使其適應度值降低,減小其被選擇的概率。對于式(2)~式(4)的求解可以轉化為下列無約束問題:
傳統罰函數法的最大弊端是無法有效地選擇罰因子值,而如果罰因子值選取不恰當,適應度值就可能在可行域之外達到某一平衡值或者陷入不成熟收斂而終止搜索。比如,內罰函數法和外罰函數法若罰因子值無限增大則容易引起優化結果對于輸入過度敏感的病態問題;乘子法通過引入拉格朗日乘子,可克服罰因子值無限增大的問題,但需要通過解決一系列無約束極小值問題來獲得最優乘子和最優解,從而增大了計算的復雜程度。
自適應罰函數算法不需要人為選取罰因子值,而是根據優化算法求解過程中可行域個體的數量來選擇合適的罰因子值:①對于可行域個體只考慮個體的標準化適應度;②當種群中可行域個體為0時,則只考慮個體的標準化偏離值,這樣設計的目的是首先找到位于可行域中的解,然后再去尋找最優解;③當位于可行域中的個體數量較少甚至接近于0(即rf很小或接近于0)時,則非可行域個體的標準化偏離值越大,懲罰的程度就越大;④當位于可行域中的個體數量很大(即rf很大)時,則非可行域個體的標準化適應度值越大,懲罰的程度就越大。
由于自適應罰函數法可以在優化過程中根據實際情況實時調整罰因子值,因此能夠更加迅速、有效地收斂到全局最優解。自適應罰函數GA算法的計算流程見圖3。
3案例研究
案例研究采用McKinney等[18]提出的一個擬建水源地實例,見圖4。該研究區為一個10000m×4500m的矩形區域,地下水流為二維潛水穩定流;含水層底板水平,高程為980m;東部和西部邊界均為山體,可以概化為隔水邊界;南部和北部邊界均為地表水體,可以概化為給定水頭邊界(水位均為1000m)。假設潛水層單位面積上的補給強度B=0.001m/d,含水介質為均質各向同性,滲透系數K=50m/d。水源地擬建10口開采井,每口開采井的最大允許開采量為7000m3/d,最低允許水位為0m。對研究區進行概化,如圖5所示。McKinney等[18]利用遺傳算法對該地下水管理實例進行了求解,本文利用所提出的自適應罰函數遺傳算法對該問題進行求解,并與McKinney等的計算結果進行比較。
設置進化代數為100代,每一個群體包含200個個體,交叉概率為0.7,變異概率為0.05,優化結果見表1。
由表1可以看出,相比McKinney等的遺傳算法,自適應罰函數遺傳算法能夠收斂到更加精確的全局最優解,原因主要是自適應罰函數遺傳算法可以根據種群中可行域解的數量自動調節罰因子值的大小,且能夠同時保留可行域解和非可行域解的有用信息。對比不同的編碼精度可以看出,通過提高遺傳算法的編碼精度可以提高優化結果的精度。
總開采量(即優化模型的目標函數)隨進化代數的變化見圖6。可以看出,當進化代數較少時,總開采量較小,優化模型無法收斂到全局最優解;隨著進化代數的增加,總開采量不斷增大,在進化85代后基本達到穩定,說明通過增加進化代數可以收斂到全局最優解,且該優化模型求解的收斂速度較快。但需要注意的是,進化代數的增加會帶來較大的計算負擔,因此需要耗費更長的時間去獲得最優解,需要進一步研究解決計算效率問題。
4結論
(1)自適應罰函數遺傳算法可以根據可行域解的數量自主選取罰因子值,克服了一般遺傳算法中罰因子值選取的困難,能夠同時保留可行域解和非可行域解的搜索信息,確保獲得可行域上的全局最優解,與傳統的一般遺傳算法相比,該算法求解精度更高。
(2)通過接口程序,實現了優化算法GA和地下水水流模擬程序MODFLOW的鏈接,使得優化過程中數據交換由文件讀取改進為內部變量傳遞,大大提高了優化模型的計算效率。
(3)通過案例測試,自適應罰函數遺傳算法收斂速度快、穩定性好,在進化代數較少的情況下就能夠收斂到全局最優解。
(4)隨著進化代數的增加,能夠提高求解精度,但計算負擔也會加大,需要進一步研究解決計算效率問題。
【責任編輯 張華興】