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