趙魯斌,宋曉丹
(山東水利職業(yè)學院,山東 日照 276800)
為了適應社會的發(fā)展,對汛限水位進行優(yōu)化研究十分必要。汛期是我國大部分地區(qū)的主要降水時間,由于汛期降水量較大,若不及時調整限制水庫的汛期水位,則水庫水位會快速提升,可能導致漫壩甚至垮壩等情況發(fā)生[1]。因此,在汛期對水位進行調整,可以起到防洪的效果。同時,我國發(fā)電形式主要還是以火力發(fā)電為主,但在“環(huán)保節(jié)能”及“碳中和”的背景下,水電的發(fā)展已經(jīng)成為重點關注對象。水庫汛限水位的調整,對提高水庫發(fā)電效益有明顯作用,但防洪效益與發(fā)電效益之間存在一定矛盾。因此,實現(xiàn)水庫汛限水位的動態(tài)調整,即可同時實現(xiàn)防洪效益與發(fā)電效益[2]。
遺傳算法是一種在工程領域較為常用的優(yōu)化算法。該算法將原始數(shù)據(jù)作為初代種群,模仿自然法則中的基因遺傳,實現(xiàn)個體的優(yōu)化[3-5],并經(jīng)過多次遺傳篩選,最終得到種群最優(yōu)個體,即問題最佳解。遺傳算法具體流程見圖1。
圖1 遺傳算法具體流程圖
圖1中,遺傳算法通過對實際問題進行分析,并將問題進行編碼,確定遺傳算法中的適應度評價函數(shù);然后通過遺傳操作,形成適應度較高的種群;重復上述步驟,直至算法收斂或達到最大迭代次數(shù)。其中,遺傳操作包含種群選擇、交叉操作以及變異操作。但標準遺傳算法的收斂速度只能滿足求解簡單問題,當面臨復雜問題時,該算法則存在易陷入局部最佳解、搜索效率較低等問題。因此,研究對標準遺傳算法進行改進。
應用遺傳算法首先要解決的問題是編碼操作。編碼方式的好壞可決定遺傳算法的運行效率。二進制編碼、實數(shù)編碼、浮點編碼、格雷碼編都是遺傳算法常見的編碼方式,針對水庫水位調整問題,研究采用具有高效率、簡單且應用廣泛等特點的實數(shù)編碼。
遺傳算法第二步是確定適應度函數(shù),該函數(shù)是遺傳算法中判斷個體進化優(yōu)劣的重要指標。因此,適應度函數(shù)的質量對進化方向以及算法運行效率都具有重要作用。針對水庫水位調整問題,選擇線性變換適應度函數(shù),該函數(shù)表達式如下:
f′=αf+β
(1)
式中:f為初始適應度;α、β均為變換系數(shù);f′為經(jīng)線性變換的適應度。
函數(shù)的變換系數(shù)選擇,需滿足兩點要求:①變換前后所有個體適應度的平均值應滿足相等;②變換后個體最大適應度值與初始種群的平均適應度值呈一定比例關系。因此,變換系數(shù)的計算方式如下:
(2)
式中:C為常數(shù),取值范圍[1,2];fmax為最大適應度值;favg為平均適應度值。
線性變換適應度函數(shù)避免了算法早熟、后期效率低下的問題[6-7]。適應度函數(shù)確定之后是遺傳操作,遺傳操作包括選擇、交叉與變異。選擇操作是在樣本屬性中選擇可解決問題的屬性,將選擇的屬性進行重新組合,得到新的樣本,樣本的質量決定了算法的輸出結果,樣本的選擇方法常用比例選擇[8]。交叉操作是將相配對的染色體通過一定手段將部分基因進行交換,以此獲得新的個體[9]。變異操作是將染色體中的某些基因進行替換,以此形成新的個體[10]。研究在交叉與變異操作進行優(yōu)化,選擇自適應的交叉變異概率,計算公式如下:
(3)
式中:pc為自適應交叉概率;pm為自適應變異概率;pc1、pc2為交叉概率的上下限值;pm1、pm2為變異概率的上下限值。
改進后的自適應交叉變異率,能使適應度較高的個體交叉率與變異率不再接近于0,而是將其概率變化至pc2與pm2,保證種群進化的活力,以此避免算法陷入局部最優(yōu)解的情況。
根據(jù)遺傳算法基本運行方式,現(xiàn)將遺傳算法應用水庫水位的動態(tài)調整中。不同的水庫均有一個汛限水位值,對水庫水位調整就是對汛限水位進行優(yōu)化。研究采用實數(shù)編碼,將汛限水位的原始值作為編碼值,并對編碼進行解碼,計算后水庫庫容不小于給定的值。假設存在3個水庫,對汛期的水庫庫容進行分配,則實數(shù)編碼后的形式見圖2。
圖2 水庫汛期庫容的實數(shù)編碼
解碼是對圖2中的9項參數(shù)進行運算。根據(jù)查詢水位-庫容關系曲線,得到汛期期間各水庫的庫容值。給定的水庫庫容最小值需滿足式(4)要求:
(4)
式中:V1為上旬的庫容值;V2為中旬的庫容值;V3為下旬的庫容值。
若枯榮最小值不滿足式(4)要求,則舍去當前水位值,并重新生成水位值。對庫容分配進行優(yōu)化的主要目的是為得到一組汛期水位值,該水位值可在式(4)的約束條件中,使目標函數(shù)的值最大。因此,在經(jīng)過實數(shù)編碼后,以這些汛限水位值代替原始時段的汛限水位值,然后對水庫進行調度計算,最后得到相應的目標函數(shù)值,并將該值作為適應度函數(shù)值。在汛期水位調整中,研究采用單點交叉的交叉操作,交叉操作形式見圖3。
圖3 單點交叉過程示例圖
圖3中,在染色體上隨機選取一個交叉點,將染色體分成前后兩部分,在交叉點前部分或者交叉點后部分進行基因交換,產(chǎn)生新的子代個體,這一過程為交叉操作。需要注意的是,交叉操作之后可能會出現(xiàn)適應度值小于原有適應度值的個體,即水庫庫容的值小于給定庫容值,此時則需對交叉操作進行調整。假設經(jīng)交叉后的染色體,在汛期上旬的庫容值小于給定庫容閾值,則需要對總庫容進行增大,其汛限水位需下降。調整步驟如下:第一步,利用水位庫容關系,計算該染色體上汛期上旬水庫汛限水位所對應的庫容值,并將各庫容值進行總和,得到總庫容值,再計算各水庫的庫容比;第二步,計算庫容閾值與當前計算庫容的差值,并將該差值按照第一步所得的庫容比,分配至各水庫庫容中;第三步,判斷增加的庫容是否超過該水庫庫容的上限值,若已經(jīng)超過,則該水庫庫容值直接取庫容上限值,多余部分按照比例分配至其他庫容;第四步,利用水位庫容關系,反向對汛限水位值進行求解,以得到的汛限水位代替交叉后的汛限水位值。
交叉操作與調整措施結束后,進行變異操作。變異操作是將某個汛限水位值進行替換,替換值為水位可行域范圍內的隨機值。變異操作與交叉操作類似,變異之后同樣會出現(xiàn)不滿足庫容約束條件的情況,變異操作的調整方式只需重新隨機選取水位值即可,直至滿足約束條件。
研究將提出水位控制方法在山東峽山水庫進行應用分析。峽山水庫控制流域面積4 210km2,總庫容14.05×108m3。根據(jù)計算方式,將水庫入庫流量作為輸入數(shù)據(jù)進行計算,并確定改進后遺傳算法的基本參數(shù)。改進后,遺傳算法的最大迭代次數(shù)為200;初始種群大小為50;算法的選擇概率值為0.7;算法交叉概率值0.5;變異概率值0.03。根據(jù)水庫對應規(guī)則,計算不同級別洪水條件的調度結果。水庫對應的調度規(guī)則見圖4。
圖4 峽山水庫調度規(guī)則設置
圖4中,水庫的入庫流量為2 000~2 500m3/s時,水位高度不高于70m,而下泄控制流量為2 000m3/s;水庫的入庫流量為2 500~3 000m3/s時,水位高度為70~71m,而下泄控制流量與入庫流量相等;水庫的入庫流量為3 000~3 500m3/s時,水位高度為70~71m,而下泄控制流量與入庫流量相等;水庫的入庫流量在3 500~4 000m3/s時,水位高度不低于71m,而下泄控制流量為3 500m3/s;水庫的入庫流量在4 000m3/s以上時,水位高度不低于71m,而下泄控制流量與入庫流量相等。
根據(jù)圖4的調度規(guī)則,得到不同頻率洪水條件下水庫水位的調節(jié)結果,見圖5。
圖5 不同頻率的洪水條件下水庫水位調節(jié)結果
圖5(a)中,原調度措施在20%的頻率中,水庫水位高度69.5m,下泄流量2 000m3/s;15%的頻率中,水庫水位高度71.4m,下泄流量2 500m3/s;1%的頻率中,水庫水位高度72.1m,下泄流量4 500m3/s;0.1%的頻率中,水庫水位高度72.9m,下泄流量5 500m3/s;0.01%的頻率中,水庫水位高度74.9m,下泄流量6 300m3/s。
圖5(b)中,改進遺傳算法的調度措施在20%的頻率中,水庫水位高度69.7m,下泄流量2 000m3/s;15%的頻率中,水庫水位高度71.0m,下泄流量2 500m3/s;1%的頻率中,水庫水位高度72.0m,下泄流量4 450m3/s;0.1%的頻率中,水庫水位高度72.7m,下泄流量4 800m3/s;0.01%的頻率中,水庫水位高度74.2m,下泄流量5 100m3/s。
數(shù)據(jù)結果顯示,洪水頻率較大的條件中,兩種調度方式在下泄流量中相同,但遺傳算法的調度措施占用的庫容更小;在洪水頻率較小的條件中,采用遺傳算法的調度措施,水庫下泄流量更低,表明遺傳算法的汛限水位與調度措施更有利于水庫自身與下游地區(qū)的防洪安全。
試驗進一步驗證模型性能,通過水庫發(fā)電效益進行評估,其效益結果見圖6。
圖6 基于遺傳算法的水位控制效益評估結果
由圖6可知,在洪水頻率為0.01%的條件下,遺傳算法的汛限水位與原水位相比上漲0.7m;從水庫的總庫容分析,總庫容增加2 947m3;從發(fā)電庫容分析,發(fā)電庫容增加1 400×104m3。根據(jù)峽山水庫單位電能耗水量的平均值進行計算,遺傳算法的汛限水位可增加233.33×104kW·h的發(fā)電量。結果表明,遺傳算法的汛限水位可使水庫獲得更多的蓄水量與發(fā)電效益。
通過增加不同算法的對比,進一步驗證改進遺傳算法性能,其中包括標準遺傳算法、粒子群算法、免疫算法、人工神經(jīng)網(wǎng)絡。試驗模型通過Schaffer測試函數(shù),對收斂度、收斂代數(shù)與模型運行時間3項指標進行對比,且試驗對5種算法分別進行30次測試。不同算法在測試函數(shù)中的性能結果見圖7。
圖7(a)中,標準遺傳算法的平均收斂值為0.980;粒子群算法的平均收斂值為0.981;免疫算法的平均收斂值為0.983;人工神經(jīng)網(wǎng)絡的平均收斂值為0.978;改進遺傳算法的平均收斂值為0.993。圖7(b)中,標準遺傳算法的平均收斂代數(shù)為107.6次;粒子群算法的平均收斂代數(shù)為64.3次;免疫算法的平均收代數(shù)為52.7次;人工神經(jīng)網(wǎng)絡的平均收斂代數(shù)為73.3次;改進遺傳算法的平均收斂代數(shù)為36.0次。試驗中,改進遺傳算法在測試函數(shù)里的性能表現(xiàn)最佳。該算法的平均收斂值與平均收斂代數(shù)均明顯優(yōu)于其他算法,表明改進遺傳算法跳出局部最優(yōu)解的能力較強。
圖8為不同算法在模型中運行效率對比。圖8中,標準遺傳算法在迭代50次左右時,其運行時間逐漸穩(wěn)定,最終運行時間穩(wěn)定在53ms;粒子群優(yōu)化算法在迭代40次左右時,其運行時間曲線開始收斂,最終穩(wěn)定在45ms;免疫算法與粒子群算法相比,運行時間曲線均在迭代40次左右開始收斂,但其運行時間最終穩(wěn)定在40ms;人工神經(jīng)網(wǎng)絡在迭代45次左右時,運行時間曲線開始收斂,并最終穩(wěn)定在47ms左右;改進遺傳算法在迭代30次左右,運行時間曲線開始收斂,并最終穩(wěn)定在30ms。試驗中,改進遺傳算法在運行效率上具有明顯優(yōu)勢,表明該算法能更快對問題進行分析,滿足控制系統(tǒng)的實時性。
汛限水位是水庫防洪效益與發(fā)電效益相沖突的因素,對汛限水位進行動態(tài)調整,對防洪與發(fā)電均有重要作用。因此,研究采用遺傳算法,并對算法進行改進,以滿足汛限水位的動態(tài)調整。在實例試驗中,該算法根據(jù)不同的洪水頻率以及入庫流量,對汛限水位進行調整,與原始汛限水位相比提升了0.7m,增加了2 947m3的蓄水量。結果表明,研究建立的水庫汛限水位動態(tài)控制模型,充分考慮了防洪庫容的補償性,對汛限水位實現(xiàn)了實時性控制。但在效益分析中,未充分考慮棄水量因素。因此,后續(xù)研究應充分考慮汛限水位調整的效益沖突,進一步提升汛期水位控制的科學性與安全性。