李曉含, 王聯(lián)國
(1.甘肅農(nóng)業(yè)大學(xué) 機(jī)電工程學(xué)院,甘肅 蘭州 730070;2.甘肅農(nóng)業(yè)大學(xué) 信息科學(xué)技術(shù)學(xué)院,甘肅 蘭州 730070)
細(xì)菌覓食優(yōu)化(bacterial foraging optimization,BFO)算法具有魯棒性強(qiáng)、易于實(shí)現(xiàn)、可并行處理與全局搜索的特點(diǎn)[1],在許多領(lǐng)域已廣泛應(yīng)用,但其存在著收斂速度慢,極易陷入局部最優(yōu)缺點(diǎn)。文獻(xiàn)[2]將粒子群優(yōu)化(particle swarm optimization,PSO)與SA結(jié)合作為一個(gè)PSO-SA變異因子,改善細(xì)菌的交流能力;文獻(xiàn)[3,4]將BFO與PSO結(jié)合,提高算法的尋優(yōu)機(jī)制;文獻(xiàn)[5]將遺傳算法(genetic algorithm,GA)與BFO算法混合,增大其搜索能力,提出了電力系統(tǒng)無功優(yōu)化的遺傳—細(xì)菌覓食優(yōu)化混合算法(GA-BFO),文獻(xiàn)[6]在細(xì)菌覓食算法趨向操作中,引入碰壁策略優(yōu)化初始位置,提高收斂速度;文獻(xiàn)[7]提出了定義進(jìn)化域的方法確定細(xì)菌前進(jìn)方向,解決離散域問題存在的缺陷;文獻(xiàn)[8]提出了自適應(yīng)步長與概率,解決陷入局部最優(yōu)問題,并應(yīng)用于圖像分割中;文獻(xiàn)[9]將粒子群與細(xì)菌覓食算法結(jié)合,提高了搜索能力,應(yīng)用于三電平逆變器中;文獻(xiàn)[10]將改進(jìn)細(xì)菌覓食算法應(yīng)用于軟測(cè)量建模中。
本文對(duì)細(xì)菌覓食算法的趨化操作與遷移操作改進(jìn),以加快細(xì)菌覓食的搜索速度與尋優(yōu)精度,并采用測(cè)試函數(shù)及比例—積分—微分(proportion integration differentiation,PID)參數(shù)整定的仿真試驗(yàn)檢驗(yàn)效果及可行性。
標(biāo)準(zhǔn)細(xì)菌覓食算法包括:趨化、群聚、復(fù)制和遷徙,算法存在的問題為:個(gè)體間交流信息較少,影響收斂速度。
將粒子群優(yōu)化算法運(yùn)用于細(xì)菌覓食算法趨化操作中,加大個(gè)體間的信息交流,提高收斂速度與精度,則細(xì)菌覓食算法在趨化操作時(shí)任意方向翻轉(zhuǎn)移動(dòng)更新公式為[11]
ψ(j+1)=w×ψ(j)+c1r1(pbest-pcurrent)+
c2r2(gbest-pcurrent)
(1)
權(quán)重w在粒子群算法用來平衡算法的全局尋優(yōu)與局部尋優(yōu),當(dāng)取值大時(shí)利于全局尋優(yōu),但難以得到精確值;當(dāng)取值小時(shí)利于局部尋優(yōu),但易陷入局部極值點(diǎn)。故采用自適應(yīng)調(diào)節(jié)方法,即每個(gè)粒子依據(jù)自身當(dāng)前適應(yīng)值來調(diào)節(jié)變化,即
(2)
式中wmin,wmax[12]分別為最大值與最小值;fi為當(dāng)前粒子適應(yīng)值;fav,fmin分別為平均值與最小值。
采用自身適應(yīng)度來調(diào)節(jié)遷移方式,在遷徙操作時(shí),先對(duì)個(gè)體適應(yīng)度值比較,得出最優(yōu)2個(gè)個(gè)體不進(jìn)行遷徙,最差的3個(gè)個(gè)體直接遷徙,中間則延續(xù)一般方式,根據(jù)適應(yīng)度進(jìn)行動(dòng)態(tài)調(diào)整按照式(3)對(duì)遷徙概率優(yōu)化
(3)
式中Pmin與Pmax為遷徙概率最大值與最小值;Jmax與Ji為最好健康適應(yīng)度值與當(dāng)前i健康適應(yīng)度值。
當(dāng)進(jìn)化較快時(shí),以低概率進(jìn)行遷徙,可以保持當(dāng)前有利信息;當(dāng)較慢時(shí),易陷入局部最優(yōu),需要較高概率遷徙,以跳出局部最優(yōu)。
1)初始化各參數(shù),s,p,Nc,Ned,Nre,Sr,Ped,c1,c2,r1,r2等,其中,s為細(xì)菌總個(gè)數(shù),p為搜索空間維度,Nc為趨向操作次數(shù),Ned為遷徙操作數(shù),Nre為復(fù)制操作數(shù),Sr為細(xì)菌總數(shù)1/2,Ped為遷徙概率,c1,c2,r1,r2為PSO隨機(jī)參數(shù)。
2)計(jì)算細(xì)菌適應(yīng)度值,將細(xì)菌目前適應(yīng)度值作為個(gè)體細(xì)菌歷史最好位置,所有細(xì)菌適應(yīng)度最好值作為全局最優(yōu)。
3)利用新公式更新細(xì)菌方向與位置。
4)在返回步驟(2)重新計(jì)算適應(yīng)度值,與歷史最好位置比較,如果更優(yōu),將取代歷史最好值。再將結(jié)果與群體最優(yōu)比較,若更優(yōu),將其作為全局最優(yōu)。
5)復(fù)制循環(huán),計(jì)算適應(yīng)度值,滿足條件個(gè)體復(fù)制新個(gè)體取代另一半不滿足條件個(gè)體。
6)遷徙循環(huán),復(fù)制完后生成一個(gè)隨機(jī)概率,與動(dòng)態(tài)遷徙概率比較,若小于概率,進(jìn)行遷徙。
7)輸出結(jié)果。
本文采用6個(gè)常見的標(biāo)準(zhǔn)非線性測(cè)試函數(shù)對(duì)細(xì)菌覓食算法及改進(jìn)細(xì)菌覓食算法進(jìn)行測(cè)試對(duì)比,測(cè)試函數(shù)最優(yōu)值一般都難獲得,且隨著維度增加,優(yōu)化難度隨之急劇加大,測(cè)試函數(shù)如下:
1)Sphere函數(shù)(x∈[-5.12,5.12],最優(yōu)解為0)
(4)
2)Quartic函數(shù)(x∈[-1.28,1.28],最優(yōu)解為0)
(5)
3)Griewank函數(shù)(x∈[-600,600],最優(yōu)解為0)
(6)
4)Schewefel函數(shù)(x∈[-500,500]最優(yōu)解-12 569.5)
(7)
5)Rastrigrin函數(shù)(x∈[-5.12,5.12],最優(yōu)解為0)
(8)
6)Ackley函數(shù)(x∈[-32,32],最優(yōu)解為0)
本文細(xì)菌覓食算法參數(shù)選取值參考文獻(xiàn)[13],設(shè)置測(cè)試函數(shù)維度為30;細(xì)菌種群規(guī)模為30;Nc為40;游動(dòng)次數(shù)為5次;復(fù)制次數(shù)為5次;遷徙次數(shù)為5次,仿真結(jié)果表1。
表1 固定迭代次數(shù)下尋優(yōu)結(jié)果(四舍五入值)
表1為原始與改進(jìn)細(xì)菌覓食算法在測(cè)試每個(gè)函數(shù)時(shí),獨(dú)立運(yùn)行20次結(jié)果。由平均值可以看出:較難獲得全局最優(yōu)解的Rastrigrin函數(shù)與函數(shù)Ackley函數(shù)提高了尋優(yōu)精度,獲得較優(yōu)的值;Griewank函數(shù)尋優(yōu)精度提高約有5個(gè)數(shù)量級(jí);其他測(cè)試函數(shù)也獲得較好的尋優(yōu)解;說明改進(jìn)細(xì)菌覓食算法對(duì)易陷入局部最優(yōu)特點(diǎn)得到改善。從運(yùn)行時(shí)間列可以看到,改進(jìn)細(xì)菌覓食算法運(yùn)行時(shí)間較短,說明改進(jìn)后的搜索速度要快些。因此,改進(jìn)細(xì)菌覓食算法在尋優(yōu)進(jìn)度和搜索速度上均得到一定改善,驗(yàn)證了算法的可行性與有效性。
為了達(dá)到更好的控制效果,本文在PID控制器參數(shù)優(yōu)化設(shè)計(jì)中,采用細(xì)菌覓食優(yōu)化算法優(yōu)化調(diào)整PID的ki,kp,kd3個(gè)參數(shù),實(shí)現(xiàn)輸入與輸出的實(shí)時(shí)跟蹤。細(xì)菌覓食智能算法PID控制結(jié)構(gòu)如圖1所示。
圖1 智能控制
圖1中,r(t)為系統(tǒng)輸入函數(shù);y(t)為系輸出函數(shù);U(t)為控制器輸出。
本文采用一階系統(tǒng)與一階慣性延遲兩個(gè)基本模型,進(jìn)行PID控制仿真實(shí)驗(yàn),其被控對(duì)性為
(9)
評(píng)價(jià)誤差性能選用時(shí)間誤差絕對(duì)積分(integral of time multiplied absolute value of error,ITAE)作為目標(biāo)函數(shù),其公式為
(10)
在整定中,PID控制器參數(shù)設(shè)置為細(xì)菌在空間中位置,在細(xì)菌覓食算法中,v表示算法的維度,則用一組參數(shù)向量Xi=(x1,x2,…,xv)表示細(xì)菌所在的位置,ki,kp,kd為細(xì)菌覓食算法中的優(yōu)化參數(shù),細(xì)菌覓食算法的位置則定義為 (ki,kp,kd)。在參數(shù)整定中,將個(gè)體值依次賦給參數(shù)ki,kp,kd,然后到運(yùn)行控制系統(tǒng)Simulink模型,得到對(duì)應(yīng)的性能指標(biāo),該指標(biāo)傳遞到細(xì)菌覓食算法中作為適應(yīng)度值,進(jìn)行一步對(duì)比優(yōu)化,最后退出算法[14]。PID參數(shù)整定流程如圖2。
采用MATLAB軟件進(jìn)行仿真,對(duì)PID參數(shù)整定,用改進(jìn)細(xì)菌覓食進(jìn)行擇優(yōu),并將改進(jìn)結(jié)果與原始算法在性能指標(biāo)對(duì)比。
圖2 參數(shù)整定運(yùn)行
表2所示為控制性能指標(biāo),性能指標(biāo)ITAE取值越小,其超調(diào)量越小,則系統(tǒng)的穩(wěn)定性越好;反之,系統(tǒng)穩(wěn)定性較差。在性能評(píng)價(jià)指標(biāo)ITAE中,改進(jìn)細(xì)菌覓食算法中ITAE獲得值更小,則改進(jìn)細(xì)菌覓食算法整定參數(shù)用于系統(tǒng)獲得更穩(wěn)定的效果。
表2 控制性能指標(biāo)
圖3為原始BFO算法與改進(jìn)BFO算法得到參數(shù)代入系統(tǒng)中所得到的相應(yīng)系統(tǒng)階躍響應(yīng)曲線。上升時(shí)間為第一次達(dá)到穩(wěn)定時(shí)間,從圖3可知:改進(jìn)后BFO算法與原始BFO算法相比,其上升時(shí)間較快;而峰值時(shí)間與調(diào)整時(shí)間的速度均用了評(píng)價(jià)系統(tǒng)的響應(yīng)速度,從圖3可知到達(dá)峰值時(shí)間與調(diào)整時(shí)間都較快,具有更快的反應(yīng)速度。
圖3 對(duì)象階躍響應(yīng)曲線
圖4為BFO算法和改進(jìn)BFO算法優(yōu)化的ITAE變化曲線。從圖4中可以看出,改進(jìn)BFO算法在迭代120次左右收斂,原始細(xì)菌覓食算法在280次左右得到收斂,得出改進(jìn)算法收斂速度更好些,可以得出改進(jìn)算法有效性及適用性。
圖4 2算法的迭代曲線
可知,改進(jìn)細(xì)菌覓食算法在PID整定應(yīng)用中,其階躍響應(yīng)的超調(diào)量減少,收斂速度與反應(yīng)時(shí)間得到提升,系統(tǒng)響應(yīng)速度快,控制品質(zhì)得到了很大改善。
針對(duì)細(xì)菌覓食算法存在收斂速度不夠快,易陷入局部極值等不足,提出了一種細(xì)菌覓食改進(jìn)算法,對(duì)趨化操作與遷徙操作進(jìn)行改進(jìn)。用標(biāo)準(zhǔn)測(cè)試函數(shù)和PID參數(shù)整定實(shí)驗(yàn),對(duì)改進(jìn)細(xì)菌覓食算法進(jìn)行測(cè)試,結(jié)果表明該改進(jìn)方法可以提高尋優(yōu)精度與搜索速度。