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