趙 睿,劉 勇,張仁貢
(1.山東省陽谷縣水利局,山東 聊城 252326;2.山東弘潤建設(shè)集團(tuán)有限公司,山東 聊城 252000;3.浙江禹貢信息科技有限公司,浙江 杭州 310009)
遺傳算法(Genetic Algorihm,簡稱GA 算法)是一種目前比較成熟的優(yōu)化算法[1],它可以從多點(diǎn)出發(fā)同時在整個約束空間上作快速搜索。但是它也有明顯的缺陷:①采用二進(jìn)制編碼,當(dāng)計算變量較多且取值范圍較大時,編碼長度也將過長,大大降低算法效率。②遺傳算法是整個約束空間上的搜索算法,追求全局最優(yōu)解,會出現(xiàn)收斂脹滯或收斂速度很低。但很多工程性的優(yōu)化問題,獲取局部最優(yōu)解就能滿足條件,從而提高收斂速度是根本。為此筆者經(jīng)過研究,提出了一種對變量進(jìn)行實數(shù)染色體編碼,并對傳統(tǒng)遺傳算法的收斂值函數(shù)進(jìn)行改造的改進(jìn)型遺傳算法,即螺旋梯度法向逼近遺傳算法(Spiral Gradient Normal Approximation Genetic Algorithm,簡稱SGNA-GA)。
傳統(tǒng)的遺傳算法是在適應(yīng)值函數(shù)上加概率函數(shù)進(jìn)行全局搜索,但針對水電站機(jī)組負(fù)荷優(yōu)化調(diào)度的工程性應(yīng)用,獲取局部最優(yōu)解即可滿足條件[2]。為此,需要在適應(yīng)值函數(shù)上加螺旋函數(shù),再采用高斯分布隨機(jī)矢量的梯度法向逼近,構(gòu)造一個螺旋梯度法向逼近函數(shù),具體方法如下:
先構(gòu)造螺旋函數(shù)g(X),對求最小值的優(yōu)化問題:
min?(X)X=[x1,x2,…xn]
在發(fā)生第t次求解迭代時,在Xt處將有λ個隨機(jī)分布高斯矢量[3],表示為Zi(i=1,…,λ),矢量的標(biāo)準(zhǔn)方差為σt/n0.5,服從均值為0,從而該矢量在螺旋函數(shù)g(X)的點(diǎn)Xt上具有垂直于切線方向即“法向”的特性,且點(diǎn)Xt具有螺旋時間周期性,簡稱螺旋周期。
現(xiàn)在令Ti=Xt+Zi,可定義函數(shù)G(Xt):
此處,稱g(Xt)為函數(shù)f(X)在點(diǎn)Xt的螺旋周期法向逼近函數(shù)。
令s為SGNA-GA的二維個體編碼,s=[X,g(X)],其中X為實際變量值,g(X)為螺旋函數(shù)。X采用實際變量值而不是二進(jìn)制,可以節(jié)約計算存儲容量和提升計算速度;針對水電站而言,X可取在t時刻每臺機(jī)組的輸出功率Pit,(i=1,2,…n)[4-5]。g(X)為螺旋函數(shù),記錄和加強(qiáng)了父代個體進(jìn)化到當(dāng)前個體的變化方向,該方向正是優(yōu)化求解的收斂梯度法向方向。
SGNA-GA 雜交在個體編碼參數(shù)段上進(jìn)行,即從第t 代群體的匹配集中已選擇好待雜交的兩個父代個體分別為:svt=<v1,v2,…,vn>和swt=<w1,w2, …,wn>,則子代個體的參數(shù)由父代個體的參數(shù)加權(quán)和產(chǎn)生,即:
式中α為動態(tài)因子[6],取值范圍在0~1 之間。父代的樣本群體m可以生成2m的后代樣本個體,然后采用SGNA-GA 算法進(jìn)行選擇并依據(jù)計算策略優(yōu)先排序,再取排在最先的m個個體作為新的樣本群體,這種優(yōu)先排序選擇法可以加快收斂速度且有效避免群體早熟。
SGNA-GA 變異是通過一種自構(gòu)造函數(shù)實現(xiàn)的變異運(yùn)算。
式中Xt是第t個待優(yōu)化的個體參數(shù);g(Xt)是點(diǎn)Xt在螺旋法向逼近時的適應(yīng)值函數(shù);ζ為權(quán)系數(shù)(1.0~2.0);α為動態(tài)因子(0~1);sit+1是sit個體變異后的新個體。
收斂值是判斷算法是否收斂的關(guān)鍵值[7-9],收斂值由收斂值函數(shù)決定,在SGNA-GA 中目標(biāo)變量在其定義域內(nèi),采用懲罰函數(shù)方式的目標(biāo)函數(shù)為:
式中,n為機(jī)組臺數(shù),Q為總流量,WF(t,A)為t時段A組合下的發(fā)電用水量,WZt為機(jī)組運(yùn)行狀態(tài)從t-1 時刻到t時刻的耗水量總和,σ為懲罰因子,C(t)為懲罰函數(shù),P(t)為t時刻的總出力,Pi(t)為第i臺機(jī)組的出力。在SGNA-GA 進(jìn)化計算過程中,如何選取懲罰函數(shù)非常關(guān)鍵,它的大小直接決定了算法的收斂性能,一般懲罰因子σ可以取為σ=1/Tt,Tt+1=αTt。當(dāng)T減少時,σ將增大,以保證約束條件得到滿足,為此可以構(gòu)造收斂值函數(shù):
其中Qmax,Qmin為目標(biāo)函數(shù)的最大值和最小值;K為自定義參數(shù)(取0.0~0.1)。
收斂準(zhǔn)則可以采用:
式中ε為收斂設(shè)定閾值,x為迭代次數(shù)[10],F(xiàn)(x)為x次時的適應(yīng)值,F(xiàn)(x+1)為迭代x+1 次時的適應(yīng)值。
SGNA-GA算法的計算機(jī)計算程序求解流程[12-13]如圖1 所示。
圖1 計算機(jī)求解程序框圖
本文的研究參照了母親河黃河流域劉家峽水電站實例進(jìn)行,該水電站為混流式水電站,共有5 臺機(jī)組,其中1 號與3 號發(fā)電機(jī)組為一致品牌和廠家,裝機(jī)容量為260 MW,2 號與4 號發(fā)電機(jī)組為一致品牌和廠家,裝機(jī)容量為255 MW,5 號發(fā)電機(jī)組為另外品牌和廠家,裝機(jī)容量為320 MW。考慮水電站的開機(jī)停機(jī)耗用水量、振動區(qū)域、汽蝕區(qū)域、日負(fù)荷計劃、最大功率限制等,結(jié)合時間和空間優(yōu)化數(shù)學(xué)模型[14]。根據(jù)水電站最小耗用水量優(yōu)化準(zhǔn)則,一天日負(fù)荷計劃分為m時段時的數(shù)學(xué)模型:
式中,n表示發(fā)電機(jī)組的臺數(shù),Pi(t)為第i臺發(fā)電機(jī)組的輸出功率,Hdi(t)表示在t時刻第i臺機(jī)組的機(jī)組段水頭,f(Hdi(t),Pi(t))表示在t時刻在機(jī)組段水頭Hdi(t)下的第i臺機(jī)組的耗水流量,W(i)表示在t時刻第i號機(jī)組的開停機(jī)耗水流量,Woni為開機(jī)時第i臺發(fā)電機(jī)組的耗用水流量,Woffi為停機(jī)時第i臺發(fā)電機(jī)組的耗用水流量,Wzi為開機(jī)和停機(jī)時第i臺機(jī)組的設(shè)備耗用水流量總和;v表示檢修機(jī)組,Wsi為檢修計劃改變時所引起的耗用水流量;P為電力系統(tǒng)某一天所給定的總負(fù)荷;Ps(t)為瞬時負(fù)荷(t時刻),Ph(t)為日計劃負(fù)荷(t時刻),Hdi1[Pmin1,Pmax1]為在機(jī)組段水頭Hdi1下第i號第1 個發(fā)電機(jī)組的汽蝕或振動區(qū)域出力上下限,Pmini為第i號發(fā)電機(jī)組的最小輸出功率,Pmaxi為第i號發(fā)電機(jī)組的最大輸出功率[15]。
該日的動態(tài)不確定因素有:①第2~8 時段4 號機(jī)組在檢修狀態(tài);②5 號機(jī)組20~100 MW 時為汽蝕或振動區(qū)域;③日負(fù)荷的計劃特性有突變發(fā)生,如圖2 所示。第6~8 時段計劃負(fù)荷為50 萬kW,分別突變?yōu)?0 萬kW、90 萬kW 和80 萬kW;第14~15 時段,負(fù)荷計劃由85 萬kW 突變?yōu)?0 萬kW 和95 萬kW。
圖2 水電站日負(fù)荷圖
按照式(10)計算動態(tài)不確定因素,由該水電站的動力特性分析可知,Hd1(t)=Hd2(t)=Hd3(t)=Hd4(t)=Hd5(t)=93.5 m,t=8,m=24,n=5,v=4,T=1,R5=[0,100],0≤P1(t)≤260,0≤P2(t)≤255,0≤P3(t)≤260,0≤P4(t)≤255,0≤P5(t)≤320,Won1=37.0 m3/s,Won2=36.6 m3/s,Won3=49.4 m3/s,Won4=36.4 m3/s,Won5=43.6 m3/s,Woff1=37.5 m3/s,Woff2=36.0 m3/s,Woff3=48.6 m3/s,Woff4=37.0 m3/s,Woff5=36.0 m3/s,查詢開機(jī)和停機(jī)設(shè)備耗用水量總和曲線,Ws1=3.21 m3/s,Ws2=3.62 m3/s,Ws3=2.93 m3/s,Ws4=3.21 m3/s,Ws5=4.22 m3/s,建立不確定動態(tài)優(yōu)化調(diào)度模型。
目標(biāo)函數(shù):
開停機(jī)耗水:
檢修瞬變計劃:
日瞬變負(fù)荷:
振動或汽蝕區(qū)域:
各臺發(fā)電機(jī)組輸出功率限制:
采用SGNA-GA 算法對其進(jìn)行最優(yōu)分配,經(jīng)過軟件調(diào)試,取m=40,ζ=1.82,α=0.6,k=0.05,ε=0.001,編碼精度保留一位小數(shù),分配結(jié)果如表1 所示。
當(dāng)水電站機(jī)組具有振動或汽蝕率定區(qū)域時,可以采用SGNA-GA 算法將懲罰函數(shù)中增加一個懲罰因子,增加樣本在振動或汽蝕率定區(qū)域時的淘汰率[17],從而在樣本替代選種過程中淘汰振動或汽蝕率定區(qū)域內(nèi)的樣本,避開汽蝕或振動區(qū)域。
從表1 可知,采用SGNA-GA 算法進(jìn)行計算,日耗用水量計算結(jié)果為27515.13×3600 m3,而當(dāng)日實際耗用水量計算結(jié)果為28115.04×3600 m3,效益γ=×100%,通過計算可得γ=2.168%。同理計算2020 年6 月整個月的數(shù)據(jù),效益大致在2.0%左右,如圖3 所示。
表1 水電站2020 年6 月12 日SGNA-GA 算法最優(yōu)分配表
圖3 該月水電站優(yōu)化效益圖
SGNA-GA 算法能同時在空間上和時間上進(jìn)行優(yōu)化計算,在實際運(yùn)行中,SGNA-GA 算法雖然比其他算法具有占內(nèi)存少、實時性好,編程簡便等特點(diǎn)[18-20],但是在實踐應(yīng)用過程中要注意以下問題:
(1)懲罰因子σ選擇要恰當(dāng)
由懲罰函數(shù)C(t)的計算公式可以看出σ的選取對F(Q)值是有影響的,即不同的σ選取方法能影響SGNA-GA 算法的收斂速度[21-23]。由公式可以看出,懲罰因子σ是懲罰假設(shè)的運(yùn)行負(fù)荷與給定負(fù)荷的偏離程度,如果懲罰因子σ選取過小時,會導(dǎo)致約束條件不滿足P=5∑i=1Pi。因此如何合理地選取罰因子σ變得相當(dāng)重要。①當(dāng)Pi大于第i臺發(fā)電機(jī)組在最大出力限制負(fù)荷或振動區(qū)域限制負(fù)荷時,則σ選4 100~5 900;②當(dāng)該發(fā)電機(jī)組的Pi在最優(yōu)效率區(qū)外 時,σ可 選 取410~620;③正 常 情 況 下 選 取σ=150~220,可以獲得比較滿意結(jié)果。
(2)處理早熟問題
SGNA-GA 算法的隨機(jī)收斂特性會帶來個體的早熟問題[24-25]。即個體沒達(dá)到最優(yōu)時就計算結(jié)果收斂。我們可以采用以下策略:①在迭代次數(shù)x小于1 500 次的時候就出現(xiàn)了收斂情況,則繼續(xù)進(jìn)行SGNA-GA 運(yùn)算,使得計算次數(shù)大于1 500 次;②對于迭代次數(shù)x 大于1 500 次出現(xiàn)早熟現(xiàn)象,則可以插入一批干擾個體,直到下次收斂為止[26-28]。當(dāng)總負(fù)荷1 100 MW,水頭95.30 m時,收斂圖如圖4所示,縱坐標(biāo)是βmin/106。
圖4 水電站1100 MW 時的SGNA-GA 算法收斂圖
(3)合理選取各種參數(shù)
m,ζ,α,k,ε選取對實時性、收斂速度及最優(yōu)解都有一定的影響。因此合理地選取m,ζ,α,k,ε的值也是很重要的。當(dāng)母體的數(shù)目m過小時,可能導(dǎo)致最優(yōu)解的不穩(wěn)定性,而當(dāng)m過大時,則運(yùn)算速度變慢,可能實時性的要求達(dá)不到[29]。權(quán)系數(shù)ζ和動態(tài)因子α的選擇對算法雜交具有較大的影響,大小不合理會出現(xiàn)早熟或收斂速度過緩,甚至出現(xiàn)不穩(wěn)定現(xiàn)象[30-31]。經(jīng)過反復(fù)參數(shù)選取調(diào)試,設(shè)置參數(shù)m=42,k=0.48,ζ=1.83,α=0.58,ε=0.001 時,取得比較滿意的計算結(jié)果。
本研究提出一種基于螺旋梯度法向逼近改進(jìn)型遺傳算法,在實踐中比較應(yīng)用可以得出如下結(jié)論:
(1)采用SGNA-GA 算法對水電站不確定模型求解,可以做到在時間上和空間上進(jìn)行優(yōu)化計算,工程實踐表明是可行的。
(2)SGNA-GA 算法與傳統(tǒng)遺傳算法相比,具有收斂速度較快、占內(nèi)存少、實時性好,編程簡單等優(yōu)點(diǎn)。
(3)由于SGNA-GA 算法可能引起早熟問題或收斂速度慢問題,合理選取各種參數(shù)非常關(guān)鍵,這需要長期的測試和調(diào)節(jié)。