仝家朋(華北電力大學(xué) 自動(dòng)化系,河北 保定 071003)
PID控制因簡(jiǎn)單可靠,在實(shí)際中應(yīng)用非常廣泛。在智能PID參數(shù)整定方面,有基于蝙蝠算法的設(shè)計(jì)[1]、基于H2函數(shù)的粒子群算法的設(shè)計(jì)[2],優(yōu)化方法眾多。本文將天牛須算法(Beetle Antennae Search,BAS)用于PID控制參數(shù)優(yōu)化。改進(jìn)了BAS,把改進(jìn)BAS應(yīng)用于電廠主汽溫控制系統(tǒng)PID參數(shù)優(yōu)化中,并與粒子群算法、經(jīng)驗(yàn)公式法的PID參數(shù)優(yōu)化結(jié)果進(jìn)行對(duì)比。
BAS的計(jì)算過(guò)程是對(duì)天牛覓食行為的模擬。當(dāng)天牛進(jìn)行覓食時(shí),其覓食策略是根據(jù)左右側(cè)氣味濃度來(lái)移動(dòng),從而找到食物。天牛有兩只觸須,當(dāng)左邊觸須感受出氣味濃度比右邊強(qiáng)時(shí),天牛就向左移動(dòng),否則就向右移動(dòng)[3]。受此啟發(fā),食物氣味就相當(dāng)于適應(yīng)度函數(shù),天牛感受食物氣味強(qiáng)度就相當(dāng)于判斷適應(yīng)度函數(shù)的大小,天牛找到食物就相當(dāng)于找到了全局最優(yōu)值。
用公式描述BAS的覓食策略:用一個(gè)N維向量表示天牛的質(zhì)心,天牛的兩須位于質(zhì)心的兩側(cè),天牛的步長(zhǎng)step與兩須之間距離d的比值為一個(gè)固定值。天牛飛到下一步后,頭的朝向是隨機(jī)的,即右須指向左須的方向向量是隨機(jī)的,定義如下:
式(1)中,rands(·)為隨機(jī)函數(shù);k代表空間的維度。獲得方向向量后,定義左右須的位置如下:
式(2)、式(3)中,xl與xr分別為左右須的位置;xt為t時(shí)刻天牛的質(zhì)心位置;d t為t時(shí)刻兩須間距。此時(shí)便可以確定下一刻天牛的運(yùn)動(dòng)方向和距離,如下式所示:
式(4)中,f(·)為被優(yōu)化函數(shù);δt是t時(shí)刻的搜索步長(zhǎng)。初始時(shí),大步長(zhǎng)方便進(jìn)行全局搜索,然后逐步減小步長(zhǎng)值以進(jìn)行精細(xì)搜索,如公式(5)所示:
式(5)中,g為迭代時(shí)步長(zhǎng)的衰減系數(shù)。
在實(shí)際應(yīng)用中,兩須間的距離d t可隨步長(zhǎng)δt調(diào)整,如式(6)所示:
式(6)中,c為常數(shù)。
BAS的計(jì)算流程如下:①天牛初始位置為隨機(jī)值;②用公式(1)和公式(5)更新須子方向和步長(zhǎng);③用公式(2)、公式(3)確定兩須位置;④計(jì)算兩須適應(yīng)度值;⑤用公式(4)判斷下一刻移動(dòng)方向,更新天牛位置并計(jì)算新適應(yīng)度值;⑥若循環(huán)到最大迭代次數(shù)或得到期望適應(yīng)度值,則結(jié)束迭代過(guò)程,否則轉(zhuǎn)回②,繼續(xù)迭代。
圖1 改進(jìn)前后BAS的步長(zhǎng)下降趨勢(shì)Fig.1 Declining step of BAS and improved BAS
本文從兩個(gè)角度對(duì)BAS進(jìn)行改進(jìn):改進(jìn)原BAS的步長(zhǎng)衰減;加入了變異環(huán)節(jié)。
原BAS是使用步長(zhǎng)的固定衰減系數(shù)進(jìn)行迭代,造成前期步長(zhǎng)衰減過(guò)快、搜索精度低,中、后期步長(zhǎng)衰減過(guò)慢、局部搜索效率慢[4]。經(jīng)過(guò)多次試驗(yàn),本文將原來(lái)的步長(zhǎng)衰減公式變?yōu)槭剑?)的形式:
式(7)中,δt代表第t次迭代時(shí)的步長(zhǎng);δstart代表初始步長(zhǎng);tmax代表最大迭代次數(shù)。這樣改進(jìn)BAS與原BAS的步長(zhǎng)下降的趨勢(shì)如圖1所示(設(shè)定δstart為100,tmax為158)。
從圖1可看出,改進(jìn)BAS的步長(zhǎng)衰減在前期由快變緩,從而進(jìn)行更多次大范圍的搜索,更利于找到全局最優(yōu)值的鄰域;中期衰減較快,有利于算法快速縮小查找范圍;后期衰減變慢,使算法查找更為精準(zhǔn)。經(jīng)實(shí)驗(yàn)測(cè)試,此下降趨勢(shì)比原來(lái)的更符合算法需要。
多次實(shí)驗(yàn)發(fā)現(xiàn)原BAS進(jìn)行到最后階段,其查找方式不足以找到最合適的最優(yōu)值,常常陷于局部最優(yōu)值。
本文在BAS中加入了變異環(huán)節(jié),在算法的最后階段發(fā)揮作用。該變異環(huán)節(jié)為:當(dāng)步長(zhǎng)值衰減到一定長(zhǎng)度h時(shí)(即δt>h時(shí)),算法中生成一個(gè)隨機(jī)數(shù)作為概率,當(dāng)概率小于一定值o的時(shí)候,公式(6)中的d t將按照公式(8)進(jìn)行計(jì)算:
圖2 改進(jìn)BAS的計(jì)算流程Fig.2 Computing flow of improved BAS
式(8)中,rand(·)為隨機(jī)函數(shù)。
該方法可以使算法擁有跳出局部最優(yōu)的能力,擴(kuò)大針對(duì)最終全局最優(yōu)值的搜索范圍。
兩次改進(jìn)后,BAS計(jì)算流程如圖2所示。
為了對(duì)比改進(jìn)前后BAS的尋優(yōu)效果,本文選取了8個(gè)測(cè)試函數(shù)來(lái)對(duì)算法進(jìn)行測(cè)試[5]。這8個(gè)測(cè)試函數(shù)f1~f8分別為:Sphere、Rosenbrock、Rastrigin、Schaffers、Schwefel P2.26、Alpine、Ackley、Griewank。8個(gè)測(cè)試函數(shù)中前兩個(gè)是單峰函數(shù),可以檢測(cè)算法的收斂速度;后6個(gè)是擁有大量局部極值的多峰函數(shù),可以測(cè)試算法的全局搜索能力。
函數(shù)測(cè)試時(shí),原BAS設(shè)定為:須子間距與步距大小之比c為2.5,每次迭代后步距衰減系數(shù)g為0.95。改進(jìn)BAS設(shè)定為:c為2.5,變異概率o為0.3,限制值h=0.00004。在測(cè)試時(shí),函數(shù)維度都設(shè)為二維,原BAS與改進(jìn)BAS參數(shù)尋優(yōu)初始位置都設(shè)為(5,5),步距δt初始值設(shè)為這8個(gè)函數(shù)的定義域范圍兩端值相減后絕對(duì)值的3%。例如,Rosenbrock函數(shù)對(duì)應(yīng)的步距初始值為(|30-(30)|×0.03)。測(cè)試時(shí),每個(gè)函數(shù)都獨(dú)立運(yùn)行100次,然后統(tǒng)計(jì)這100次結(jié)果的最好值、最差值、平均值、標(biāo)準(zhǔn)差,最多只統(tǒng)計(jì)到9位小數(shù)。迭代次數(shù)為3000時(shí)統(tǒng)計(jì)結(jié)果見(jiàn)表1,結(jié)果中的最好值加粗顯示;改進(jìn)BAS與BAS對(duì)應(yīng)在函數(shù)f3、f8最優(yōu)值隨迭代次數(shù)的變化曲線如圖3、圖4所示。
圖3 函數(shù)f3最優(yōu)值隨迭代次數(shù)的變化曲線Fig.3 The curve of the optimal value of f3 follows the number of iterations
圖4 函數(shù)f8最優(yōu)值隨迭代次數(shù)的變化曲線Fig.4 The curve of the optimal value of f8 follows the number of iterations
從表1可以看出,除了f1這樣較簡(jiǎn)單的函數(shù),其他函數(shù)上改進(jìn)BAS都比BAS的表現(xiàn)好,更容易搜索到全局最優(yōu)值且搜索效果更穩(wěn)定。BAS在個(gè)別函數(shù)上最好值一項(xiàng)中能找到最優(yōu)值0,但效果太不穩(wěn)定,其對(duì)應(yīng)的最差值表現(xiàn)的也更為不好,標(biāo)準(zhǔn)差較大。在這一點(diǎn)上改進(jìn)BAS表現(xiàn)很好,而且隨著迭代次數(shù)的增加,改進(jìn)BAS的搜索結(jié)果也更好。從圖3、圖4中可以看出工作時(shí)改進(jìn)BAS比BAS下降更快,搜索更快。
某電廠的主汽溫控制系統(tǒng)[6]結(jié)構(gòu)如圖5所示,內(nèi)回路采用PI控制,即比例積分控制器,外回路也采用PI控制,R為給定值。
表1 迭代3000次時(shí)測(cè)試結(jié)果Table 1 Test results at 3000 iterations
以該控制系統(tǒng)為測(cè)試系統(tǒng)。內(nèi)環(huán)控制器參考前人的控制方式,其傳遞函數(shù)為kp1+ki1/s,其中kp1=10,ki1=0.0128;外環(huán)控制器的傳遞函數(shù)為kp+ki/s,使用改進(jìn)BAS對(duì)外環(huán)控制器中的參數(shù)kp和ki進(jìn)行尋找最優(yōu)值,并與粒子群算法優(yōu)化PID參數(shù)的方式、經(jīng)驗(yàn)公式法設(shè)置PID參數(shù)的方式來(lái)進(jìn)行對(duì)比。目標(biāo)函數(shù)為能反映系統(tǒng)調(diào)節(jié)品質(zhì)的絕對(duì)誤差一階矩積分ITAE,即:
利用經(jīng)驗(yàn)公式法(臨界比例度法)整定出的基本參數(shù):kp=0.7399,ki=0.001327。
粒子群算法的設(shè)定為:迭代次數(shù)為100,設(shè)140個(gè)粒子,c1和c2均為1.4,慣性權(quán)重ω為0.7,單個(gè)粒子的維度為2,系統(tǒng)仿真時(shí)間為3000s,仿真步距為1s,最大速度Vmax為1,最小速度Vmin為-1,kp參數(shù)的尋優(yōu)范圍為[0,1],ki參數(shù)的尋優(yōu)范圍為[0,1]。
改進(jìn)BAS的設(shè)定為:迭代次數(shù)為2500,須子間距與步距的大小之比c為2.5,個(gè)體的維度為2,系統(tǒng)仿真時(shí)間為3000s,仿真步距為1s,kp參數(shù)的尋優(yōu)范圍為[0,1],ki參數(shù)的尋優(yōu)范圍為[0,1],步距δt初始值設(shè)為0.3,限制值h為0.00004,變異概率o為0.15。
基本BAS的設(shè)定值:迭代次數(shù)為2500,須子間距與步距的大小之比c為2.5,個(gè)體的維度為2,系統(tǒng)仿真時(shí)間為3000s,仿真步距為1s,kp參數(shù)的尋優(yōu)范圍為[0,1],ki參數(shù)的尋優(yōu)范圍為[0,1],步距δt初始值設(shè)為0.3,每次迭代后步距的衰減系數(shù)g為0.95。
本文基于Matlab2018a仿真平臺(tái)來(lái)驗(yàn)證其有效性,電腦主頻為2.60GHz,內(nèi)存為8.00GB,CPU為i7-4720HQ。測(cè)試時(shí),每個(gè)算法都獨(dú)立運(yùn)行100次,然后統(tǒng)計(jì)這100次結(jié)果的最好值、最差值、平均值、標(biāo)準(zhǔn)差,最多只統(tǒng)計(jì)到9位小數(shù);另外,還統(tǒng)計(jì)這100次中在上升時(shí)間、超調(diào)量、調(diào)節(jié)時(shí)間3個(gè)指標(biāo)上改進(jìn)BAS比PSO好的情況。統(tǒng)計(jì)結(jié)果見(jiàn)表2,結(jié)果中的最好值加粗顯示,經(jīng)驗(yàn)公式法的標(biāo)準(zhǔn)差不進(jìn)入比較,且經(jīng)驗(yàn)公式的算法用時(shí)不進(jìn)行測(cè)量。
圖5 主汽溫控制系統(tǒng)結(jié)構(gòu)圖Fig.5 Structure drawing of main steam temperature control system
表2 4種算法的測(cè)試結(jié)果Table 2 Test results of four algorithms
從表2可以看出:經(jīng)驗(yàn)公式法對(duì)應(yīng)的響應(yīng)曲線表現(xiàn)最差,其上升時(shí)間雖然短,但是超調(diào)量和調(diào)節(jié)時(shí)間都比較大;BAS算法對(duì)應(yīng)的響應(yīng)曲線最不穩(wěn)定;改進(jìn)BAS法對(duì)應(yīng)的響應(yīng)曲線的上升時(shí)間平均值比PSO法的略大一點(diǎn),超調(diào)量平均值和PSO法的較為接近,但調(diào)節(jié)時(shí)間平均值比PSO法的要好,而且改進(jìn)BAS對(duì)應(yīng)的響應(yīng)曲線在多次試驗(yàn)時(shí)表現(xiàn)更穩(wěn)定。而在這100次中,改進(jìn)BAS對(duì)應(yīng)的響應(yīng)曲線3個(gè)指標(biāo)均比PSO好的情況發(fā)生了4次,其有兩個(gè)指標(biāo)比PSO好的情況發(fā)生了49次,只有一個(gè)指標(biāo)比PSO好的情況發(fā)生了47次;在49次中,改進(jìn)BAS對(duì)應(yīng)的上升時(shí)間和超調(diào)量更好的情況發(fā)生了3次,上升時(shí)間和調(diào)節(jié)時(shí)間更好的情況發(fā)生了23次,超調(diào)量和調(diào)節(jié)時(shí)間更好的情況發(fā)生了23次。另外,從算法用時(shí)的角度看,改進(jìn)BAS法的優(yōu)化用時(shí)接近PSO法用時(shí)的一半(PSO算法此時(shí)迭代次數(shù)已到最少,再少則沒(méi)有此時(shí)的搜索效果),較為可觀。綜上所述,改進(jìn)BAS法優(yōu)化控制器參數(shù)后,控制器表現(xiàn)更好,響應(yīng)曲線表現(xiàn)更穩(wěn)定,而且更有利于在算力較弱的設(shè)備上使用,更有利于在硬實(shí)時(shí)要求的環(huán)境中使用。
本文在BAS的基礎(chǔ)上進(jìn)行改進(jìn),改變了原來(lái)的步長(zhǎng)衰減趨勢(shì),在局部搜索時(shí)加入了變異環(huán)節(jié)。在主汽溫系統(tǒng)控制器參數(shù)尋優(yōu)后,改進(jìn)BAS法對(duì)應(yīng)的響應(yīng)曲線表現(xiàn)更好,在3個(gè)指標(biāo)上各有更好的優(yōu)勢(shì)。同時(shí)大幅度減少尋優(yōu)用時(shí),更有利于在算力較弱的設(shè)備上使用。當(dāng)然,改進(jìn)后的BAS也存在一些不足,較為明顯的則是改進(jìn)的BAS在高維度空間表現(xiàn)不佳。其進(jìn)一步的改進(jìn)方向可以為加入某些環(huán)節(jié)來(lái)增強(qiáng)該算法在高維度空間的搜索效果。