郝曉瑩,賀興時,薛菁菁
(西安工程大學 理學院,陜西 西安 710048)
2008年,Yang通過模擬螢火蟲的閃光行為提出螢火蟲算法[1-2]。螢火蟲算法具有操作簡單,需要調整參數少,易實現等特點,一經提出就成為啟發(fā)算法研究的熱點,現已廣泛應用于TSP問題[3]、車間調度[4]、圖像檢測[5]等領域。雖然許多學者對標準螢火蟲算法進行了改進[6-8],但螢火蟲算法的收斂速度慢,求解精度不高等缺陷仍然制約其發(fā)展和應用。因此,更好地提升螢火蟲算法的尋優(yōu)性能具有廣闊的研究空間。
對于非線性工程優(yōu)化問題之一的壓力容器設計問題[9],傳統(tǒng)的優(yōu)化方法求解質量往往不高。而螢火蟲算法是一種非常有潛力的工程優(yōu)化算法,因此將其擴展到工程應用領域非常必要。通過引進布谷鳥算法,首先對螢火蟲初始種群進行優(yōu)化,使初始種群的質量大大提高,加快了螢火蟲向最優(yōu)解收斂的速度;其次,通過6個標準測試函數對CSFA算法的性能進行測試;最后應用該算法對壓力容器設計問題進行求解。
螢火蟲算法是由螢火蟲的閃光行為啟發(fā)而來,其主要思想是利用亮度較高的螢火蟲吸引亮度較低的螢火蟲,在亮度較低的螢火蟲向亮度較高的螢火蟲的移動過程中完成位置更新。螢火蟲算法的基本數學模型如下:
Ii=f(xi)
(1)
(2)
(3)
xj(t+1)=xj(t)+βij(rij)(xi(t)-xj(t))+αξj
(4)
布谷鳥算法是模擬布谷鳥尋窩產卵飛行的一種隨機過程。該算法可以用以下三點理想化條件:(1)每只布谷鳥每次僅產一個蛋,并且隨機產在一個鳥窩中;(2)質量最好的鳥窩將被保留到下一代;(3)固定鳥窩的數量n,鳥窩宿主發(fā)現布谷鳥鳥蛋的概率是Pa∈[0,1][10-13]。在這種情況下,鳥窩主人可以將該鳥蛋丟棄,或者放棄這個鳥窩,在新的地方重新建立一個鳥窩。在這3個理想化條件下,布谷鳥根據Levy飛行進行搜索,步長更新公式為:
(5)
Levy~u=t-λ(1<λ≤3)
(6)
眾所周知,初始值對啟發(fā)式算法意義重大,初始種群的選取能夠直接影響算法的性能及收斂速度。為了更好地改進螢火蟲算法初始種群的質量,將CS算法思想用于FA算法的位置初始化過程,提出了一種布谷鳥初始化的螢火蟲算法,從而改善了螢火蟲算法的尋優(yōu)性能。
CSFA算法步驟如下:
(1)初始化布谷鳥種群,設置鳥窩數量n,最大迭代次數N,發(fā)現概率為Pα,搜索域上下界Ub、Lb;
(2)利用目標函數對每個鳥窩進行測試,并記錄當前的最好解,將最優(yōu)鳥窩位置保留到下一代;
(3)利用式5對其他鳥窩位置進行更新,對現有的鳥窩與上一代鳥窩位置進行對比,若較好,將其作為當前最好位置;
(4)用一個服從均勻分布的隨機數與布谷鳥的鳥蛋被鳥窩宿主發(fā)現的概率Pa進行比較,若r>Pa,則隨機對鳥窩的位置進行列維變化,獲得一組新的鳥窩位置,反之不變。再對新的位置進行測試,將最優(yōu)位置保留到下一代;
(5)判斷是否滿足結束條件,若不滿足則返回步驟2重新運行;若滿足,則跳出循環(huán),輸出最優(yōu)位置;
(6)將布谷鳥算法得到的最優(yōu)位置作為螢火蟲算法的初始位置,計算每個螢火蟲個體的熒光亮度;
(7)利用式1和式2計算個體之間的相對亮度和吸引度,并根據相對亮度決定個體的移動方向;
(8)根據式3更新個體位置,并對處在最優(yōu)位置的個體進行隨機擾動,計算每個個體的適應度函數值,并找出最優(yōu)解;
(9)檢驗是否滿足終止條件。若滿足,則輸出全局最優(yōu)值;若未達到終止條件,則返回步驟7。
數值實驗在Windows7環(huán)境下運行,利用Matlab7.0進行編程。對于所有的測試函數,CS算法設置的基本參數值為:種群規(guī)模n=25,最大迭代次數為500,發(fā)現概率為Pα=0.25。FA算法設置的基本參數值為:種群規(guī)模n=50,光強吸收系數λ=1,步長因子α=0.02,最大吸引度β0=1,最大迭代次數為500。
為了驗證CSFA算法的性能,分別將CSFA算法、CS算法、FA算法用于6個典型的測試函數,并對結果進行了比較。這6個測試函數如下所示:
基準測試函數的維數、迭代次數及搜索空間如表1所示。
表1 基準測試函數的維數、迭代次數及搜索空間
為了更好地驗證CSFA算法的性能,對選取的測試函數,分別利用FA算法、CS算法、CSFA算法獨立運行30次,統(tǒng)計結果如表2所示。其中,最差值、最優(yōu)值反映了解的質量,平均值反映了解的整體水平,標準差反映了算法的穩(wěn)定性。
從表2可以看出,無論從最優(yōu)值、最差值,還是標準差和平均值,CSFA算法在尋優(yōu)精度上都明顯高于FA算法和CS算法。
為了直觀地比較3種算法的尋優(yōu)精度及收斂速度,畫出FA算法、CS算法和CSFA算法在六個測試函數上的迭代曲線,如圖1所示。可以發(fā)現,CSFA算法比FA算法和CS算法能更快地收斂到最優(yōu)解,求解精度也大大提高。
表2 FA算法、CS算法和CSFA算法的性能比較
圖1 FA,CS和CSFA的收斂曲線比較
隨著啟發(fā)式算法的發(fā)展,出現了越來越多的新型算法。為了驗證新算法的性能,它們被用于各種工程結構設計中,而其中應用最廣泛的就是壓力容器設計問題。它有4個設計變量:半球形厚度,厚度,內部半徑和長度。其主要目標是在非線性約束條件下,使得設計總成本達到最小。壓力容器示意圖如圖2所示。
圖2 壓力容器示意圖
壓力容器設計問題目標函數和約束條件為:
minf(x)=0.622 4d1rL+1.778 1d2r2+
其中,d1=0.062 5n1,d2=0.062 5n2,1≤n1≤99,1≤n2≤99,10≤r,L≤100。
利用CSFA算法對壓力容器設計問題獨立運行10次進行求解,并與利用SBSM算法[14]、CPSO算法[15]、HPSO算法[16]、TVDFPA算法[17]求解壓力容器問題的結果進行比較。從表3和表4可以看出,CSFA算法不管是最優(yōu)值、最差值還是平均值和標準差都要好于其他算法對壓力容器問題的求解值。
表3 5種算法對壓力容器優(yōu)化設計問題的最好結果比較
表4 5種算法對壓力容器優(yōu)化設計問題的統(tǒng)計結果比較
螢火蟲算法作為一種性能良好的算法,在解決工程優(yōu)化問題中具有巨大的潛力。文中提出一種布谷鳥初始化的螢火蟲算法(CSFA),通過對6個標準測試函數的仿真實驗,對比已有的啟發(fā)算法的測試結果,得到了更高精度的最優(yōu)解。在應用方面,將CSFA算法用在壓力容器設計問題中,也體現了更好的尋優(yōu)性能。而壓力容器設計問題是一種單目標,連續(xù)型優(yōu)化問題,為驗證該算法的廣泛性,將其應用到多目標及離散型優(yōu)化問題,將是今后值得關注的研究方向。