尹宋麟,譚 飛,b,楊茂華
(四川輕化工大學a.自動化與信息工程學院;b.人工智能四川省重點實驗室,自貢 643000)
模式搜索算法的基本思想是通過探測性移動和模式性移動,尋找到一條最優(yōu)的路徑接近最優(yōu)點,求得在最優(yōu)目標值時的參數(shù)[1]。廣義模式搜索算法是模式搜索的推廣,它較網(wǎng)格自適應搜索算法更為穩(wěn)定[2]。該算法是一種直接搜索方法。由于其解決一般優(yōu)化問題不需要問題的導數(shù)梯度等信息,只需要已知點的函數(shù)值,便于計算機迭代,在求解最優(yōu)化問題上得到了較好應用,并用于解決約束優(yōu)化問題[3-4]。劉文斌等[1]使用模式搜索算法,對三相無源PFC拓撲的相電流諧波函數(shù)進行電路參數(shù)的整定,實驗結(jié)果表明模式搜索算法能正確的找到最優(yōu)解。陽洋等[5]提出廣義搜索算法結(jié)合無模型快速損傷定位理論形成全新?lián)p傷診斷方法,結(jié)果與標準偏差在3%以內(nèi),證明了方法的精確性及抗噪性效果。BEIGI等[6]提出模式搜索與螢火蟲算法相結(jié)合的算法,來對單雙二極管太陽能電池模型進行參數(shù)估計,結(jié)果表明改進算法有較強的競爭性。
但模式搜索的最優(yōu)結(jié)果與搜索的起點有關(guān),而且要求目標函數(shù)在搜索域可導且是單峰函數(shù)才能求解到全局最優(yōu)解,因此必須選好初始點,這在實際應用時很難辦到。模式搜索算法同全局性不夠好的其它算法結(jié)合同樣會陷入局部[7-8]。本文將詳細分析模式搜索的缺陷,并改進模式計算方式,引入遺傳交叉算法,適時與環(huán)境學習,解決全局優(yōu)化的速度和精度問題。
模式搜索通常由軸向探索,模式移動,配合模式步距自適應調(diào)整策略達到算法的收斂。
設優(yōu)化函數(shù):
maxf(x),x=(x1,x2,…,xn),x∈Rn,xi∈(biL,biU)
(1)
式中,biL、biU分別表示變量xi的下界和上界。
算法步驟如下:
步驟1:設置搜索步距Δ;設置步距終止標量條件ε=1E-10(一個較小的正數(shù));令搜索變量維數(shù)j=1,步距放大系數(shù)α>1,通常取2;設置步距縮小系數(shù)β∈(0,1),通常取0.5。根據(jù)經(jīng)驗選取搜索域中一個起點x0并賦值給x1;
步驟2:對x1的第j維作x1j=x0j+Δ,
iff(x1)>f(x0),Δ?αΔ,轉(zhuǎn)步驟4;
else,x1j?x0j,轉(zhuǎn)步驟3,endif;
步驟3:對x1的第j維作x1j=x0j-Δ,
iff(x1)>f(x0),Δ?-αΔ,轉(zhuǎn)步驟4,
else,x1j?x0j,Δ?-βΔ,轉(zhuǎn)步驟4,endif;
步驟4:ifj=n,
iff(2·x1-x0)>f(x1),x0?2·x1-x0else,x0?x1,
endif;轉(zhuǎn)步驟5;
else,j=j+1,
ifj>n,j=1;轉(zhuǎn)步驟5,else,轉(zhuǎn)步驟2,endif;
endif
步驟5:if |Δ|<ε,輸出結(jié)果,算法停止,
else,x1?x0,轉(zhuǎn)步驟2;endif。
經(jīng)典模式搜索算法在搜索中自適應縮放搜索步距,如步驟2和步驟3,加速搜索;每一輪軸向搜索完成,進行組合模式搜索,如步驟4;當步距Δ小到給定精度時,算法停止,如步驟5。
圖1 函數(shù)式(2)的曲面圖形
該算法存在的問題不容忽視:①全局性不好。收斂位置與給的搜索起始位置密切相關(guān),對多峰函數(shù),函數(shù)很難收斂到全局最優(yōu)解;②對約束問題的邊界或目標函數(shù)一階導數(shù)不連續(xù),存在不穩(wěn)定收斂,比如四面錐體,會收斂于棱上任意一點,因為軸向搜索無法改進搜索結(jié)果,所以很難搜索到錐體的最優(yōu)頂點,這給約束優(yōu)化帶來困難。③在光滑曲面上,如果存在駐點,如式(2)所示,在點(0,0)各維的偏導數(shù)等于0但非極值點,經(jīng)典模式搜索算法在這樣的點上將無法啟動搜索,最后收斂于這樣的點,但若有擾動就可以離開改點,擾動方向不同,得到的極值也不同。
z=-(3x+1)sin[x·sin(x)]sin(y)
x∈(-3,3),y∈(-3,3)
(2)
所以模式搜索算法只能說是一種局部直接搜索算法,并且不能很好解決非光滑函數(shù)的極值求解,也不能滿足全局搜索的要求。
為了改進經(jīng)典模式搜索算法,克服算法缺陷,采用方法有:
(1)給每一維變量設置一個搜索半徑,半徑覆蓋全搜索域,半徑乘以一個(0,1)間的系數(shù)作為搜索的具體位置。在每一維變量搜索到區(qū)域內(nèi)足夠小后區(qū)間后,隨機初始化系數(shù),以擴散到全域任意位置,擴大搜索范圍,這改進了原算法只有一個步距的局限。
(2)每輪軸向搜索結(jié)束后,采用搜索成功方向的增益(適應值增量比步距增量)來進行組合模式搜索,這樣更有利于向最優(yōu)目標靠近,而非經(jīng)典模式搜索算法的第4步的步距增量組合模式搜索。
(3)所有維變量軸向搜索都失敗時,引入遺傳交叉搜索(即以概率變異當前解的部分維變量后進行評價),尋找優(yōu)于當前最優(yōu)解坐標點,改善全局性;若找到更優(yōu)點再次重新進入模式搜索,快速搜索精確解;如果找不到更優(yōu)解,并且達到給定的搜索評價次數(shù)后,算法結(jié)束。
算法每一維變量引入一個搜索信息向量,所有信息向量構(gòu)成一個信息矩陣I,每一維變量的信息向量如式(3)所示。
Ij=[dj,cj,hj,wj,kj]T
(3)
式(3)表示變量xj的信息向量。式中,d表示每維變量搜索可達的最大半徑,通常等于變量的上界減下界的差,對于不定域函數(shù)可根據(jù)搜索點的位置在線調(diào)整;c表示搜索方向,若c=0表示軸向搜索不成功,c=1表示正向搜索成功,c=-1表示反向搜索成功;h表示搜索步距系數(shù),h∈(0,1);Δj=dj·cj·hj表示第j維搜索變量的增量;w表示軸向搜索的位置;kj表示搜索成功時增益,等于增加的目標適應值除以Δj。設置一個計數(shù)器ρ,算法進行搜索成功時保存c好的狀態(tài),計數(shù)器ρ清零;一旦搜索失敗,置c=0,不成功計數(shù)器ρ加1,當ρ大于變量維數(shù),進行一代遺傳搜索,然后繼續(xù)模式搜索。當ρ大于給定限值ρz,表明多次搜索失敗,算法結(jié)束。
對于成功的軸向搜索,進行組合搜索,取新探測點方法如式(4)所示。
(4)
在模式搜索失敗后轉(zhuǎn)入進行ms次遺傳交叉搜索,ms通常取2~10倍目標函數(shù)的變量數(shù)。遺傳交叉算法是以當前模式搜索得到的最優(yōu)解x為基點,按式(5)隨機修改基點的部分元素進行搜索,一旦成功搜索到比當前更優(yōu)解,計數(shù)器ρ清零,重新轉(zhuǎn)入模式搜索,以保證解具有較好的全局性。
(5)
式中,ri為(0,1)的隨機變量;biL和biU分別為變量xi的下界和上界。
對算法的信息矩陣I初始化,第1行搜索半徑I1取對應維變量的上下界之差;第2行搜索方向向量I2設置為全0;第3行I3搜索步距系數(shù)向量設為0.05~0.15間的隨機數(shù),便于算法快速找到搜索方向;第4行I4為給定的變量初值點,可通過隨機在定義域產(chǎn)生mr個點,用目標函數(shù)評價后選取mr中的最優(yōu)點x0作為模式搜索的初值點,令I4=x0;第5行為軸向搜索的增益向量,初值令為I5=0。
改進的模式遺傳搜索算法流程如圖2所示。
圖2 模式遺傳搜索算法流程圖
算法首先初始化信息矩陣,步距行向量I1=BU-BL;設置步距終止標量條件ε=1E-10(一個較小的正數(shù));步距放大系數(shù)α>1,通常取2;設置步距縮小系數(shù)β∈(0,1),通常取0.618;取起點x0,并賦值給x1?x0;f0=f(x0);設置不成功計數(shù)限值ρz=10n,ρ=0。首先進入模式搜索算法,當軸向搜索成功時,清空計數(shù)器同時采用組合模式搜索,在滿足精度要求后,算法結(jié)束。當軸向搜索未成功時,采用遺傳交叉搜索找尋優(yōu)于當前的最有解,若沒有找到更優(yōu)點且達到評價次數(shù),算法結(jié)束;若找到,再次采用模式搜索算法搜索最優(yōu)解。
由于算法中引入了隨機遺傳交叉搜索,任給一個足夠小的正數(shù)δ,有全局最優(yōu)點x*所在的可接受域D滿足式(6)。
D={x|f(x*)-f(x)|<δ,x∈Rn}
(6)
采用文獻[8]的方法,設隨機事件序列Am。
Am={ω|x∈D}
(7)
通過每次隨機抽取落入D的概率為p,第m次迭代落入D的概率為P(Am)。
P(Am)=(1-p)m-1p
(8)
在m次隨機取點中取到可接受域D中的概率為(p-(1-p)mp)/(1-p),當m趨于足夠大時取到的概率為1 。所以該模式遺傳算法保證了搜索結(jié)果的全局性和精度[2-4]。
采用文獻[15]對應的標準測試函數(shù),如表1所示。f1~f4為多峰函數(shù),f5為單峰函數(shù)。對20維函數(shù),用改進模式遺傳搜索算法IPSGA,隨機取點優(yōu)化,最大2000次迭代或者連續(xù)20代結(jié)果無更新或結(jié)果優(yōu)于1E-5終止。程序50次獨立運行,與文獻[8]的群模式搜索算法迭代結(jié)果以及文獻[11]群遷移優(yōu)化算法結(jié)果作比較,結(jié)果如表2所示。改進的模式搜索算法取得了較好的優(yōu)化結(jié)果,算法的優(yōu)化精度明顯高于其他兩種算法。
表1 測試函數(shù)
表2 5個測試函數(shù)的3算法計算結(jié)果對比
對表1中的函數(shù)6,設維數(shù)2,用本文改進的模式遺傳搜索算法計算,與人工魚群算法(AFSA)[12]、人口遷移算法(PMA)[13]、差分算法(DE/BEST/2)[14]、粒子群模式搜索算法(PSwarm)[10]、蟻群協(xié)同模式搜索算法(ACPSA)[15]、群模式全局搜索算法(SPGSA)[14]比較。這些群算法都設置為20。當算法計算值優(yōu)于1E-3或高于50萬次評價停止。獨立運行50次,算法平均評價次數(shù)如表3所示??梢钥吹奖疚腎PSGA算法達到規(guī)定精度的評價次數(shù)最少,是一種快速的搜索方法,這種改進的模式遺傳搜索方法對評價耗時的目標進行搜索提供一種可選方案。
表3 不同算法對函數(shù)6的測試快速性對比
把本文改進的模式搜索算法用于實際微分PID控制器式(9)參數(shù)優(yōu)化,它比常規(guī)理想微分PID有更好的抗噪聲影響能力。
(9)
式中,kp為比例控制增益;Ti為積分時間;Td為微分時間;kd是微分增益,取值越大,微分作用越強。
控制對象為:
(10)
根據(jù)控制性能穩(wěn)定快速準確的要求,設計偏差積分與控制快速性的綜合控制指標:
(11)
式中,ts為系統(tǒng)調(diào)節(jié)時間(2%);tr為上升時間;e(t)為系統(tǒng)控制偏差,進行時間t加權(quán)積分,考慮系統(tǒng)平穩(wěn),超調(diào)不應過大,對超過給定值的偏差進行2倍懲罰。
圖3 系統(tǒng)最優(yōu)PID控制的階躍響應
用式(9)和式(10)構(gòu)成單回路控制,kd取2,采用本文IPSGA算法進行優(yōu)化。以ZN法參數(shù)的兩倍為搜索上界,進行1000次評價,優(yōu)化得到的結(jié)果如表4所示。與文獻[16]中ZN-PID和GA-PID以及文獻[17]的自適應二次變異差分ASMDE-PID比較。優(yōu)化的PID階躍響應曲線如圖3所示,改進的模式遺傳混合算法得到的參數(shù)響應比差分算法快,總體可見本算法取得了快速且超調(diào)小的滿意控制質(zhì)量。
表4 不同方法的PID參數(shù)優(yōu)化結(jié)果比較
本文分析了模式搜索算法特點,結(jié)合它現(xiàn)存在的不足,提出了結(jié)合遺傳交叉的混合算法,主要做了3方面改進:①引入信息向量,并改進了模式搜索半徑,搜索點全域可達,便于全局尋優(yōu);②組合模式搜索改為方向增益組合,實驗發(fā)現(xiàn)更有利于提高搜索速度;③引入遺傳交叉學習,使算法具有更好的全局性。接著本文選取了典型的測試函數(shù)進行測試,取得了較好的計算結(jié)果。并把這種改進的模式搜索算法用于實際微分PID參數(shù)的優(yōu)化,最后與ZN法、GA法和ASMDE法進行比較,結(jié)果表明本文算法具有快速而精確的尋優(yōu)能力,也說明改進的模式遺傳搜索算法的工程可用性。