孫秋戎,李 勇*,唐 歉,吳紹飛
(1.昆明市滇池水生態(tài)管理中心,云南 昆明 650228;2.南昌工程學(xué)院鄱陽湖流域水工程安全與資源高效利用國家地方聯(lián)合工程實驗室,江西 南昌 330099)
多目標(biāo)水庫優(yōu)化調(diào)度問題在目前水庫優(yōu)化調(diào)度中非常常見,一般較大型水庫都兼具多目標(biāo)屬性如供水、發(fā)電、防洪等,而這些目標(biāo)一般又屬于不相容的,單一目標(biāo)優(yōu)化問題一般取得一個目標(biāo)值的最大化或最小化,而多目標(biāo)優(yōu)化問題由于兩個目標(biāo)之間存在競爭關(guān)系,一個目標(biāo)取得較優(yōu)的值勢必將使另一個目標(biāo)的值下降,最終得到的解集是一個非劣解集。非劣解集是從集合論的觀點出發(fā)探討多目標(biāo)問題的解,對于多個目標(biāo)它指不存在使一個目標(biāo)更好而其他目標(biāo)不劣的解。
近些年,智能算法在水庫優(yōu)化調(diào)度中得到廣泛應(yīng)用,如2003年,游進軍等[1]將一種多目標(biāo)遺傳算法應(yīng)用到該模型的求解中。2006年,M.Janga Reddy等[2]將多目標(biāo)遺傳算法應(yīng)用到水庫優(yōu)化調(diào)度中。2007年,Reddy M J等[3]將多目標(biāo)差分進化(MODE)算法應(yīng)用到水庫優(yōu)化調(diào)度問題中。2008年,劉濤等[4]應(yīng)用多目標(biāo)交叉微粒群算法來求解水庫調(diào)度中的多目標(biāo)優(yōu)化問題。周建中等[5]將混合蛙跳算法引入到粒子群算法中,提出一種混合粒子群算法并將其應(yīng)用到多目標(biāo)優(yōu)化調(diào)度的求解中。2011年,盧有麟等[6]引入多目標(biāo)混沌搜索策略用以加強差分進化算法的局部搜索能力,并將改進后的算法應(yīng)用到多目標(biāo)生態(tài)優(yōu)化調(diào)度中。2018年,賈一飛等[7]利用改進的快速非劣排序遺傳算法(NSGA-Ⅱ)對黃河上游水庫群的多目標(biāo)優(yōu)化調(diào)度模型進行求解。馬志鵬等[8]提出一種混合粒子群算法(HPSO)求解水庫優(yōu)化調(diào)度問題。2019年,郭榮等[9]將一種新型群智能仿生算法——飛蛾火焰優(yōu)化(MFO)算法應(yīng)用到梯級水庫群豐、平、枯優(yōu)化調(diào)度問題中。2020年,羅德河等[10]將模擬退火算法應(yīng)用于水庫優(yōu)化調(diào)度圖繪制中。劉東等[11]提出一種更好保護優(yōu)秀個體的擇優(yōu)方法——雄獅選擇法,并將該法用來改進NSGA-Ⅱ算法,應(yīng)用于水庫雙目標(biāo)調(diào)度問題中。鄧志誠等[12]提出基于聚集度自適應(yīng)反向?qū)W習(xí)粒子群算法并應(yīng)用于水庫優(yōu)化問題。張佳丹等[13]將自適應(yīng)權(quán)重以及連續(xù)禁忌搜索算法引入標(biāo)準(zhǔn)蝙蝠算法,改善標(biāo)準(zhǔn)蝙蝠算法在水庫優(yōu)化調(diào)度應(yīng)用中。史利杰等[14]將改進的多目標(biāo)蝙蝠算法(IMOBA)用于求解水庫多目標(biāo)優(yōu)化調(diào)度模型。智能算法在水庫多目標(biāo)優(yōu)化調(diào)度應(yīng)用中主要存在早熟收斂、非劣解集少、分布不均勻等問題,上述研究對方法進行改進以使其更好的應(yīng)用于多目標(biāo)水庫優(yōu)化調(diào)度中。本文為避免上述問題提出一種新思路,即采用外部精英集策略,并用擁擠距離維護外部精英集來改進傳統(tǒng)多目標(biāo)差分進化算法,使其更好的應(yīng)用在水庫優(yōu)化調(diào)度中。
第一代廣義差分進化算法(GDE)僅對標(biāo)準(zhǔn)差分進化的選擇操作進行了改進,采用約束支配準(zhǔn)則進行選擇,其選擇原理為:若試驗個體在約束支配關(guān)系上優(yōu)于目標(biāo)個體,則用試驗個體取代該目標(biāo)個體;若試驗個體在約束支配關(guān)系差于目標(biāo)個體,則不改變。這種改進使得其能夠處理帶約束的多目標(biāo)優(yōu)化問題,但該方法在應(yīng)用中有明顯的不足,如沒有對種群中的非劣個體進行排序,不能得到分布均勻且較多的非劣解,算法的兩個控制參數(shù)對非劣解的影響較大。第二代廣義差分進化算法(GDE2)引入擁擠距離來處理當(dāng)試驗個體和目標(biāo)個體互不占優(yōu)的情況,該算法提高了GDE的非劣解分布均勻性,但降低了種群的聚集度,該算法仍需對控制參數(shù)進行優(yōu)選。經(jīng)過前兩代GDE的發(fā)展,為解決前兩代算法存在的不足S.Kukkonen和Jouni Lampinen[15]提出了第三代通用差分進化算法(GDE3),本文即以該方法為基礎(chǔ)對水庫多目標(biāo)優(yōu)化調(diào)度問題進行優(yōu)化求解。GDE3算法的求解步驟如下。
步驟一初始化種群及算法的控制參數(shù),并計算各個目標(biāo)的適應(yīng)度。
步驟二對每個個體進行變異、交叉、選擇操作,在選擇操作時,根據(jù)約束支配關(guān)系進行操作,如果試驗個體和目標(biāo)個體互不支配則將該試驗個體放在一個獨立的臨時集合中,如果試驗個體支配目標(biāo)個體則試驗個體代替目標(biāo)個體。直到種群中每個個體都操作一遍,這時原有種群個體與臨時集合之和的種群大小介于NP(種群大小)和2NP之間,對臨時集合中的每一個個體根據(jù)約束支配關(guān)系和擁擠距離的計算進行選擇,直到種群大小回到NP為止。
步驟三判斷是否滿足收斂條件或是否達(dá)到最大迭代次數(shù),若是則輸出結(jié)果,若不是則繼續(xù)進行下一次迭代。
GDE3算法每次循環(huán)一代后的種群大小介于NP和2NP之間,然后采用非支配排序和擁擠距離方法將種群重新降到NP。這使得在種群中搜索到的非劣解較少,本文采取一個外部精英集來維持種群的多樣性和大小。在選擇操作時,如果試驗個體與目標(biāo)個體互不支配,則直接將試驗個體放入外部精英集中進行更新操作,如果試驗個體支配目標(biāo)個體則首先將試驗個體代替目標(biāo)個體并將試驗個體放進外部精英集進行更新操作。本文加入外部精英集并用擁擠距離來維持算法在進化過程中得到的非劣解,改進后算法的具體計算步驟如下。
步驟一初始化算法的控制參數(shù)(種群大小、交叉概率因子、縮放系數(shù)、精英集大小、最大迭代次數(shù)等),初始化種群并計算各個目標(biāo)的適應(yīng)度。
步驟二將種群個體按精英集維持策略加入外部精英集中。
步驟三對每個種群個體進行DE算法的變異、交叉、選擇操作,具體操作如下:變異操作同標(biāo)準(zhǔn)的DE算法,但加入邊界約束,若超過邊界約束則在邊界范圍內(nèi)隨機生成該維數(shù)據(jù);交叉操作與標(biāo)準(zhǔn)的DE算法相同均是根據(jù)交叉概率因子進行選擇,同時為了避免出現(xiàn)不進化現(xiàn)象發(fā)生隨機選擇一維數(shù)據(jù)進行變異操作;進行選擇操作時,首先對目標(biāo)函數(shù)進行求解得出各個目標(biāo)的適應(yīng)度,判斷實驗個體與目標(biāo)個體的支配關(guān)系,如果目標(biāo)個體支配試驗個體則進行下個循環(huán);若試驗個體支配目標(biāo)個體則將實驗個體存為目標(biāo)個體,并將實驗個體加入精英集更新操作中;若實驗個體與目標(biāo)個體互不支配,則直接將試驗個體加入精英集更新操作中。判斷種群中的每個個體是否都操作一遍,更新種群。判斷收斂條件或是否達(dá)到預(yù)設(shè)的最大迭代次數(shù),若是則輸出結(jié)果,不是則繼續(xù)迭代。改進的GDE3算法流程見圖1。
圖1 改進的GDE3算法流程
中型及以上水庫通常為綜合利用水庫,其各方面用水量存在一定矛盾,如供水量(包括城鄉(xiāng)生活或農(nóng)田灌溉)與發(fā)電用水量是競爭關(guān)系,為提高水庫的綜合利用效益,有必要對供水量與發(fā)電量之間的關(guān)系進行探討。
2.1.1目標(biāo)函數(shù)
a)供水量最大
(1)
式中T——時段總數(shù);Vid(t)——t時段供水量,m3;Virr(t)——t時段水庫提供的供水量,m3。
b)調(diào)度期內(nèi)發(fā)電量最大
(2)
式中K——出力系數(shù);H(t)——t時段平均發(fā)電水頭,m;Qfd(t)——t時段平均發(fā)電引用流量,m3/s;ΔT(t)——t時段時段長。
2.1.2約束條件
a)水量平衡約束:
V(t+1)=V(t)+Vin(t)-Virr(t)-Vfd(t)-Vgs-ΔV(t)
(3)
式中V(t+1)——t時段末水庫庫容,m3;V(t)——t時段初水庫庫容,m3;Vin(t)——t時段水庫入庫徑流量,m3;Vgs(t)——t時段水庫城鎮(zhèn)工業(yè)、生活供水量,m3;ΔV(t)——t時段水庫棄水及其它滲漏等損失水量,m3。
b)水位約束:
Zmin(t+1)≤Z(t+1)≤Zmax(t+1) ?t∈T
(4)
式中Zmin(t+1)——t時段末水庫允許運行的最低水位(死水位),m;Zmax(t+1)——t時段末水庫允許運行的最高水位(汛期為汛限水位,非汛期為正常高水位),m。
c)水電站預(yù)想出力約束:
N(t)≤Nmax(t) ?t∈T
(5)
式中Nmax(t)——t時段某水位下水電站預(yù)想出力,kW。
d)水電站發(fā)電流量約束:
(6)
e)供水量約束:
Virr(t)≤Vid(t) ?t∈T
(7)
f)城鎮(zhèn)工業(yè)、生活需水約束:
(8)
g)非負(fù)約束。上述各式中所有的變量均為非負(fù)值。
采用改進的GDE3進行求解,設(shè)置種群大小NP,精英集個數(shù),最大迭代次數(shù),縮放因子F,概率選擇因子CR等算法參數(shù)。當(dāng)各目標(biāo)供水過程生成后,用動態(tài)規(guī)劃法求解確定性優(yōu)化調(diào)度過程,具體求解步驟如下。
a)種群初始化。本文采取初始化供水量策略,因為如果供用水過程及其他用水過程已知(除發(fā)電用水過程外)就可以根據(jù)動態(tài)規(guī)劃法求出相應(yīng)的最優(yōu)發(fā)電量。為保證供水量在各月的一定需求,需設(shè)定一定的破壞深度。在供水量與供水量下限之間隨機生成各時段的實際供水量,求和即得出目標(biāo)f1總供水量,考慮城市生活和工業(yè)用水及蒸發(fā)滲漏損失,在供水量確定的情況下,可以采用確定性動態(tài)規(guī)劃法對模型進行優(yōu)化調(diào)度,求出目標(biāo)f2總發(fā)電量。然后對種群進行非支配排序,并將非支配解加入外部精英集中。
b)變異、交叉、選擇。對每個個體進行變異操作,在變異操作中考慮灌溉用水量的上下限約束,對違反灌溉用水量限制約束的時段,在該時段灌溉需水量與灌溉用水量下限之間重新生成該時段灌溉用水量。然后進行交叉、選擇操作,如果試驗個體支配目標(biāo)個體則將實驗個體代替目標(biāo)個體并更新外部精英集;若目標(biāo)個體支配試驗個體則直接進行下一個循環(huán);若試驗個體與目標(biāo)個體互不支配則將實驗個體進行更新外部精英集操作。直到迭代至最大進化代數(shù),輸出外部精英集中的非劣解集。
漳河水庫是以灌溉為主,兼顧防洪、發(fā)電、城市生活工業(yè)用水、水產(chǎn)、旅游、航運等用途的多年調(diào)節(jié)綜合利用的大(1)型水庫,由觀音寺水庫和雞公尖水庫經(jīng)明渠串聯(lián)而成,總集水面積為2 212 km2。目前,漳河水庫實際運行時電站總裝機為8 720 kW。年均發(fā)電量4 200萬kW·h,年發(fā)電用水量達(dá)4.2億m3。
目前漳河水庫調(diào)度原則是在確保工程安全的前提下,其優(yōu)先級依次為:防洪、城市生活工業(yè)用水、灌溉用水、發(fā)電用水。水庫泄洪與下游河道防洪發(fā)生矛盾時,下游河道行洪服從于水庫安全度汛的要求。漳河水庫4月15日至6月20日為前汛期,7月1日至8月20日為主汛期,9月1—30日為后汛期,主汛期前后10 d為過渡期,前、后汛期汛限水位122.6 m,主汛期汛限水位122.0 m,汛后按正常高水位123.5 m蓄水運用。實際運行中視上游來水量與預(yù)報情況,汛限水位允許在±0.5 m內(nèi)調(diào)節(jié),盡可能地發(fā)揮水庫調(diào)蓄作用,減少下泄流量,延長下泄時間,滿足下游防洪要求。主要的用水有城鎮(zhèn)生活和工業(yè)用水、灌溉用水、發(fā)電用水。各用水項中除對城鎮(zhèn)生活、工業(yè)用水予以優(yōu)先照顧外,其他用水均應(yīng)服從灌溉用水需求。
本文選取漳河水庫2006年4月至2007年3月這一典型枯水年為調(diào)度期,其徑流過程見表1。由于城市生活工業(yè)用水量在漳河水庫日常運行中是必須要滿足的,而水庫蒸發(fā)滲漏損失也是不可避免的,本文根據(jù)實際情況統(tǒng)計出這兩項的各月用水量見表2。根據(jù)灌溉用水實際運行情況其需水量主要集中在5—8 4個月,本文也僅考慮這4個月的灌溉用水情況,其具體分配情況見表3。
表1 漳河水庫2006年4月至2007年3月典型徑流過程
表2 漳河水庫2006年4月至2007年3月水文年各月城市工業(yè)生活及損失水量
表3 各月灌溉需水量分配
由于漳河水庫為多年調(diào)節(jié)水庫,根據(jù)其實際運行情況取起調(diào)水位和調(diào)度期末水位均為118 m,電站平均出力系數(shù)7.7。采用改進的多目標(biāo)差分進化算法進行求解,算法參數(shù)設(shè)置如下:種群大小NP為100,精英集個數(shù)為100,最大迭代次數(shù)為300,縮放因子F取為0.4,概率選擇因子CR為0.25。當(dāng)灌溉用水過程生成后,用動態(tài)規(guī)劃法求解確定性優(yōu)化調(diào)度過程。為保證灌溉用水量在各月的一定需求,本文取各月的灌溉需水量的0.7倍為灌溉用水量的下限,而不是直接取0為下限值。在灌溉需水量與灌溉用水量下限之間隨機生成各時段的實際灌溉用水量,求和即得出目標(biāo)f1灌溉總用水量,考慮城市生活和工業(yè)用水及蒸發(fā)滲漏損失,在灌溉用水量確定的情況下可以采用確定性動態(tài)規(guī)劃法對模型進行優(yōu)化調(diào)度求出目標(biāo)f2總發(fā)電量。經(jīng)種群初始化、變異、交叉、選擇等操作,得到非劣解集。
通過計算得出近似非劣解集,灌溉用水量與發(fā)電量非劣關(guān)系(圖2),其中灌溉用水量,單位為萬m3,發(fā)電量指調(diào)度期內(nèi)總發(fā)電量,單位萬kW·h。
圖2 灌溉用水量與發(fā)電量關(guān)系
從圖2可以看出,在灌溉需水范圍內(nèi)灌溉用水量越大,發(fā)電量則越小,這是與漳河水庫灌溉用水與發(fā)電用水互相競爭的實際情況相符合的。圖中點距分部比較均勻說明算法加入精英集維持策略并用擁擠距離來維持精英集是可行的,可以得到較好的非劣解前端。圖中每一個點代表在灌溉用水量一定情況下,從不同灌溉用水量月內(nèi)供水分配組合下優(yōu)選出的最大發(fā)電量。從圖中可以看出:①水庫發(fā)電量與灌溉用水量近似成反比線性關(guān)系,其線性相關(guān)方程為y=-0.0981x+5489.5,說明在上述條件下灌溉用水量每減少10 m3,最多可增發(fā)電量約1 kW·h;②由于圖2中所取坐標(biāo)變化范圍較大,因此圖形近似呈直線,從局部放大圖來看,非劣解前端并非完全是線性變化的。
本文將多目標(biāo)差分進化算法進行了改進,加入精英保留機制并用擁擠距離來維持精英集,改善了多目標(biāo)優(yōu)化中存在早熟、收斂問題,使其更好的處理多目標(biāo)水庫優(yōu)化調(diào)度問題。采用改進的GDE3求解水庫多目標(biāo)優(yōu)化調(diào)度模型,并以綜合利用水庫漳河水庫為例,以在灌溉需水范圍內(nèi)灌溉用水量最大和調(diào)度期發(fā)電量最大為目標(biāo),用改進的GDE3進行優(yōu)化求解,得到了分布較均勻的非劣解集,驗證了算法的可行性,為更好的求解多目標(biāo)水庫優(yōu)化調(diào)度問題提供了新思路。