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