李姍鴻
(貴州大學大數(shù)據(jù)與信息工程學院,貴陽 550025)
在過去的幾十年中,群智能算法在具有挑戰(zhàn)性的工程領域中越來越受歡迎,究其原因則在于這種方法比傳統(tǒng)的數(shù)值方法更簡便和有效。 群智能算法的優(yōu)點體現(xiàn)在許多方面,首先是該方法的隨機性,這可以保證算法成功地避免局部極值。 其次是黑盒概念,即不需要考慮程序內(nèi)部,只需要知道輸入和預期輸出,操作簡單。 最后,是其算法參數(shù)較少、易于實現(xiàn)且數(shù)學模型簡單。 群智能算法有很多種,但都有一個共同的特點,即優(yōu)化過程分為2 個步驟:勘探和開發(fā)。 在探索階段,算法傾向于在搜索空間中尋找遠離當前峰值的最優(yōu)解,這種搜索過程具有全局性和廣泛性。 而在開發(fā)步驟中,算法傾向于通過搜索解的鄰域來改進迄今為止找到的最優(yōu)解。 顯然,當開發(fā)和探索一起解決問題時,會相互沖突。 一個成功的算法應該能夠在探索和開發(fā)步驟之間保持適當?shù)钠胶?,這可以減輕局部極端停滯和不成熟收斂的問題。 常見的群智能算法有粒子群優(yōu)化算法(Particle Swarm Optimization,PSO)[1]、 蝴蝶優(yōu)化算法(Butterfly Optimization Algorithm,BOA)[2]、正余弦優(yōu)化算法(Sine Cosine Algorithm,SCA)[3]、 鯨魚優(yōu)化算法( Whale Optimization Algorithm,WOA)[4]、野馬優(yōu)化算法(Wild Horse Optimizer,WHO)[5]、 麻雀搜索算法(Sparrow Search Algorithm,SSA)[6]等,但根據(jù)無“免費午餐”定理,不可能提出一種能夠解決所有工程優(yōu)化問題的算法,所以國內(nèi)外學者提出了各種策略來對算法進行優(yōu)化,以更好地解決各類問題。 文獻[7]在海馬優(yōu)化算法的初始化中使用10 種不同的混沌映射產(chǎn)生混沌值、而并非隨機值,提高了方法的性能。 在海馬優(yōu)化算法中,使用混沌映射生成混沌序列的目的是提高原算法的收斂速度并避免局部最優(yōu)。 文獻[8]引入Tent混沌映射初始化種群,利用混沌映射具有的隨機性、遍歷性和有序性等特點,可用于增加種群的多樣性,加快算法前期的收斂速度。 文獻[9]提出了具有慣性權重的蝙蝠優(yōu)化算法,文章采用簡單易行,性能好的隨機、線性遞減和非線性遞減慣量權重。 此外,還提出了慣性權重的新變體,其原理是慣性權重呈指數(shù)增加,呈指數(shù)級增長的慣性權重能避免蝙蝠算法過早收斂。 文獻[10]提出了一種具有自適應隨機慣性權重的粒子群優(yōu)化算法,其慣性權重是由三角概率密度函數(shù)隨機生成,并隨著算法演變持續(xù)更新。 在搜索的早期階段,獲得更大權重的概率非常高,這有利于全局搜索。 隨著迭代次數(shù)的增加,獲得較小權重的概率增加,這有助于局部優(yōu)化。 文獻[11]提出了一種基于Lévy 飛行和正交學習的新型粒子群算法,利用Lévy 飛行的跳躍能力來增強探索,具有增強的開發(fā)能力和更快的搜索效率。 文獻[12]提出了一種基于對立學習和Lévy 飛行分布的飛蛾撲火優(yōu)化算法,Lévy 飛行是與非高斯隨機分布相關的隨機游走,其中步長取自Lévy 飛行,利用Lévy 飛行分布來防止算法陷入局部最優(yōu)。
人工兔優(yōu)化算法[13]( Artificial rabbits optimization)是Wang 等學者于2022年所提出來的一種群智能優(yōu)化算法,該算法將自然界中兔子的生存策略進行了數(shù)學建模,建立了一個有效的優(yōu)化框架。 采用這種方法,處理了2 種模擬策略,即繞行覓食和隨機隱藏。 ARO 優(yōu)點在于其參數(shù)較少、算法復雜度較低、優(yōu)化的時間較短;而其缺點是具有收斂速度慢、求解的精度不高、無法找到理論值、容易陷入局部最優(yōu)、不再隨著迭代的進行向理論更優(yōu)的位置搜索等問題,有著較大的改進空間。 因此本文提出了一種引入慣性權重與萊維飛行的人工兔優(yōu)化算法(WLARO)。 首先,在種群初始化階段引入Tent 慣性權重,增強種群的多樣性和動態(tài)性;其次,在繞道覓食階段引入慣性權重,提高算法的收斂精度及尋優(yōu)速度;最后,在隨機隱藏階段引入Lévy 飛行策略,對目前的最優(yōu)位置進行擾動,避免算法陷入局部最優(yōu)。 通過實驗仿真分析證明了本文所提出算法的優(yōu)勢,并將算法應用于壓力容器工程問題中,取得了較好的結果。
為防止巢穴被捕食者發(fā)現(xiàn),兔子有2 種生存策略,一種是繞道覓食,另一種是隨機躲藏。 兔子的視野非常開闊,很輕易就能在大范圍內(nèi)找到食物,這種繞道覓食策略為勘探階段。 兔子善于挖洞筑巢,為了躲避捕食者或獵人的蹤跡,兔子會在自己的窩周圍挖洞,遇到危險時,會隨機選擇一個洞穴作為避難所,這種生存方式是隨機躲藏,即開發(fā)階段。 由于兔子處于食物鏈的低端,有很多捕食者,為了躲避危險,兔子必須快速奔跑,這樣會使兔子的能量縮減,所以通過能量縮減,免子會在繞路覓食和隨機躲藏之間進行切換,在算法中就是全局搜索與局部開發(fā)之間的轉換。
俗話說“兔子不吃窩邊草”,在ARO 中,兔子忽略近處的食物,傾向于移動到其他個體的領地尋找食物,所以每個搜索個體傾向于在種群中隨機選擇另一個搜索個體更新自己的位置,并增加擾動,其數(shù)學模型如下:
為了躲避捕食者,兔子通常會在其巢穴周圍挖洞穴藏身。 每一次迭代,兔子會沿著搜索空間的維度在自身周圍產(chǎn)生d個洞,以降低被捕食的概率,第i只兔子的第j個藏身洞穴的位置見式(7):
圖1 H 變化圖Fig. 1 The change diagram of H
隨機隱藏的位置更新公式如式(11)所示:
在實現(xiàn)2 種策略后,兔子的位置更新如下:
兔子在迭代的初期階段經(jīng)常進行繞道覓食,而在迭代的后期則經(jīng)常進行隨機隱藏。 這種搜索機制是由兔子的能量決定的,隨著時間的推移,兔子的能量會逐漸減少。 因此,用能量因子來模擬從探索到開發(fā)的轉換過程。 ARO 中的能量因子定義如下:
其中,r是[0,1]之間的隨機數(shù),當A(t)>1時,兔子會繞道覓食,進行全局探索階段;當A(t) ≤1 時,兔子隨機選擇一個洞穴躲藏,進行局部開發(fā)階段,能量因子A的變化趨勢如圖2 所示,其值是整體下降,更好地平衡了探索和開發(fā)階段。
圖2 A 變化圖Fig. 2 The change diagram of A
ARO 采用的是隨機初始化種群,種群可能會密集集中在一個區(qū)域,不利于算法進行迭代尋優(yōu),因此本文引入了Tent 混沌映射[14],利用其具有的小周期和不穩(wěn)定點特點,對種群進行初始化。 保證Tent 映射序列的隨機性、遍歷性和有效性,其表達式如下:
其中,i為兔子的序號;N為兔子的總數(shù);d為對應的維度。 結合改進Tent 序列進行種群初始化,其表達式為:
慣性權重因子[15]對解的搜索精度和收斂速度有著很好的引導作用,較大的慣性權重因子在前期全局搜索時能力較強,較小的慣性權重因子在后期的開發(fā)能力較強。 因此本文采用一種非線性慣性權重因子,更快達到一定的收斂精度,使之在迭代初期慣性權重緩慢減小,使其有很好的全局搜索能力,更快達到一定的收斂精度,在迭代后期,其解容易陷入局部最優(yōu),此時較小慣性權重能夠有較好的局部搜索能力使之達到最優(yōu)解,其公式如下:
其中,t為迭代次數(shù);Tmax為最大迭代次數(shù);ωmin的值為0.4;ωmax的值為0.9;ω的變化曲線如圖3 所示。隨著迭代的增加,慣性權重因子非線性減少、最終達到最小值,將其引入到ARO 中,可用式(19)表示:
圖3 ω 變化圖Fig. 3 The change diagram of ω
Lévy 飛行策略[16]是非高斯隨機步態(tài),其步長服從概率分布,在尋找最優(yōu)解過程中,主要是生成一個正則隨機數(shù),給算法更新提供動態(tài)變化,Lévy 飛行不僅可以在短距離中進行局部搜索,還可以在長距離全局搜索。 因此在搜索到最優(yōu)值附近時,Lévy 飛行能達到增強局部搜索能力的作用,有效解決ARO陷入局部最優(yōu)的問題,本文將Lévy 飛行策略引入式(11)中的人工兔的最優(yōu)位置,因為ARO 會根據(jù)當前位置與人工兔最優(yōu)位置的距離來進行位置更新,改進后的ARO 大大降低了人工兔陷入局部最優(yōu)的風險,而且仍然能充分執(zhí)行局部探索,改進公式如下所示:
其中,D為問題的維度,Lévy 飛行的計算公式如下:
其中,Γ表示標準的Gamma 函數(shù),β是相關參數(shù),本文設置其值為1.5。
由2.1~2.3 節(jié)可得引入慣性權重與萊維飛行的人工兔優(yōu)化算法(ARO)的步驟如下:
Step 1初始化算法參數(shù),建立搜索空間的矩陣。
Step 2使用改進的Tent混沌映射初始化種群,計算其個體適應度值并進行排序。
Step 3通過式(15)計算A的值,若A >1 則隨機選擇一只兔子,根據(jù)式(2)~(5)計算R的值,通過式(19)執(zhí)行繞道覓食,然后計算更新兔子的適應度值,并通過式(14)更新兔子位置。
Step 4若A≤1,則隨機生成洞穴并根據(jù)式(13)選擇一個洞穴隱藏,通過式(20)執(zhí)行隨機躲藏,然后計算更新兔子的適應度值,并通過式(14)更新兔子位置。
Step 5判斷迭代次數(shù)是否達到上限,若是則停止迭代,得到最優(yōu)位置以及其適應度值,否則重復執(zhí)行Step 3~Step 5,直到滿足終止迭代條件,算法流程圖如圖4 所示。
圖4 算法流程圖Fig. 4 Implementation flow chart of WLARO algorithm
本文采用Matlab R2020b 進行實驗仿真,運行環(huán)境為64 位Windows 10 操作系統(tǒng),處理器類型為AMD Ryzen 7 5800H。
為了驗證WLARO 算法的有效性和改進策略的優(yōu)異性,將優(yōu)化后的人工兔算法(WLARO)與傳統(tǒng)人工兔算法(ARO)、蝴蝶優(yōu)化算法(BOA)、粒子群算法(PSO)、正弦余弦算法(SCA)、樽海鞘算法(SSA)、鯨魚優(yōu)化算法(WOA)、野馬優(yōu)化算法(WHO)進行了對比實驗。 本文引入10 個標準測試函數(shù)(見表1)。 F1 ~F6 是單峰函數(shù),局部最優(yōu)即全局最優(yōu),用來檢驗本文提出的WLARO 算法的收斂速度和收斂精度;F7~F10是多峰函數(shù),具有多個局部極值,尤其F9和F10的變量之間相互關聯(lián),使算法很難搜索到全局最優(yōu),用來測試算法的跳出局部最優(yōu)的能力。 在實驗中,將使用30 次獨立運行實驗以測試算法性能,設置種群個數(shù)為50,最大迭代次數(shù)為1 000。另外,測試函數(shù)的維度也是影響算法尋優(yōu)的一個關鍵因素,因此表1 所列出的測試函數(shù)的維度從2 到200 不等,可以更加全面地驗證算法性能。各算法的主要參數(shù)設置見表2。 不同算法的結果對比見表3。
表2 算法參數(shù)Tab. 2 Parameters of functions
表3 不同算法的結果比較Tab. 3 Comparison of results of different algorithms
由表3 可以看出,在與其他的傳統(tǒng)群智能優(yōu)化算法相比時,F(xiàn)1到F5這5 個單峰函數(shù)上WLARO 算法的表現(xiàn)都是遠超過其他的傳統(tǒng)群智能算法,平均值、最優(yōu)值、最差值和標準差都到達了0,證明了其不僅尋優(yōu)精度高、且具有極強的魯棒性,在30 次實驗中均未出現(xiàn)個別尋優(yōu)值偏離理論值的現(xiàn)象,證明其穩(wěn)定性極好,說明本文提出的3 個策略對算法進行改進是有效的;在F6這個單峰函數(shù)上,雖然WLARO 算法沒有找到測試函數(shù)的理論值,但相比于其他算法,無論是最優(yōu)值、還是標準差仍然是最優(yōu);在F7與F9這2 個多峰函數(shù)上,WLARO 算法同樣能夠找到測試函數(shù)的理論值,30 次數(shù)據(jù)的標準差都為0,即其尋優(yōu)過程非常穩(wěn)定;在F8函數(shù)上,雖然WLARO 算法沒有搜索到算法的理論值,但相比于其他的幾個傳統(tǒng)算法有著較大的改進,在30 次實驗中每一次都在迭代后期陷入了局部最優(yōu)值8.88E-16,其尋優(yōu)精度相比于其他傳統(tǒng)算法提高了16 個數(shù)量級;在F10多峰函數(shù)上,WLARO 算法沒有找到理論值,但是非常接近理論值,且標準差為0,算法十分穩(wěn)定。 綜上,雖然相比于其他的各種傳統(tǒng)群智能算法,WLARO 算法對各個測試函數(shù)精度以及穩(wěn)定性的提升不盡相同,但總地來說,WLARO 算法在求解各種基準函數(shù)上都具有一定的優(yōu)勢。
根據(jù)實驗所得數(shù)據(jù),圖5 給出了8 個基準函數(shù)的平均收斂曲線,由圖5(a)~圖5(d)可知,在迭代前期,WLARO 算法在一段時間內(nèi)收斂曲線下降速度很快,表明引入的Tent 慣性權重起到了作用,增加了種群的多樣性,使得算法一開始收斂速度就較快,隨著更迭次數(shù)的增加算法持續(xù)尋優(yōu),未出現(xiàn)停止搜索的狀況,并一直尋優(yōu)到了理論最優(yōu)值。 圖5(e)和圖5(g)的曲線有多處拐點,說明本文提出的Lévy飛行策略能夠使得算法跳出局部最優(yōu),算法的收斂精度得到提升。 圖5(f)和圖5(h)的WLARO 算法的曲線雖然和其他2 種群智能算法的收斂精度相差不大,但從曲線可明顯看出WLARO 算法的收斂速度較其他算法有很大的優(yōu)勢,在迭代前期就迅速收斂,說明本文提出的引入慣性權重與萊維飛行的人工兔優(yōu)化算法能夠提高算法的收斂速度。
圖5 不同算法的平均收斂曲線Fig. 5 Average convergence curves of different algorithms
雖然在30 次獨立實驗所得到的平均值與標準差雖然有一定的參考意義,但在多次實驗中,可能會出現(xiàn)某一次實驗的效果極優(yōu)或極差的情況,這是實驗數(shù)據(jù)的平均值與標準差無法體現(xiàn)的,因此在評估改進的算法的性能時,僅僅依據(jù)平均值與標準差是不夠的,需要進行統(tǒng)計檢驗來證明所提出的改進算法的優(yōu)越性。
本文在5%的顯著性水平下進行Wilcoxon 秩和檢驗[17],判斷WLARO 算法在某些特定問題上是否有顯著的性能提升。 Wilcoxon 秩和檢驗是非參數(shù)統(tǒng)計的一種檢驗方法,本文使用該檢驗方法與BOA、PSO、SCA、SSA、ARO、WOA 和DA 算法進行比較,判斷WLARO 與其他算法之間是否存在顯著性的差異。 表4 列出了所有測試函數(shù)中WLARO 算法與其他算法秩和檢驗的P值。 表4 中,每個數(shù)據(jù)表示W(wǎng)LARO 算法與該數(shù)據(jù)對應的算法在對應的測試函數(shù)中相比的P值,當P小于5%時,可認為是拒絕零假設的有利證據(jù)[18],即“改進算法與其對比的算法是有顯著區(qū)別”這一說法是錯誤的。 因此,表4 中P的數(shù)值越小,說明WLARO 與其對比的算法區(qū)別越大,S為“+”表明WLARO 算法顯著性高于其他算法,WLARO 的結果有明顯改善。 結合表4 的數(shù)據(jù),即可綜合判斷改進算法的效果,WLARO 算法與其他算法在各個測試函數(shù)的Wilcoxon 秩和檢驗的P值均遠遠小于0.05,所以很明顯本文提出的改進算法在統(tǒng)計上具有優(yōu)越性。
表4 Wilcoxon 秩和檢驗的值Tab. 4 Values of Wilcoxon rank sum test of test function
為進一步將WLARO 算法在具體的工程中得到實際優(yōu)化應用,本文選用壓力容器設計問題。 這個問題的目標是使壓力容器的制造成本最小化,壓力容器設計問題的目標是使壓力容器制作(配對、成型和焊接)成本最小。 壓力容器的設計如圖6 所示,壓力容器的兩端都有蓋子封頂,頭部一端的封蓋為半球狀。L是不考慮頭部的圓柱體部分的截面長度,R是圓柱體部分的內(nèi)壁直徑,TS和Th分別表示圓柱體部分壁厚和頭部的壁厚,L、R、TS和Th為壓力容器設計問題的4 個優(yōu)化變量,問題的目標函數(shù)和4 個優(yōu)化約束表示如下:
圖6 壓力容器設計模型Fig. 6 Design model of pressure vessel
約束條件為:
利用文獻[19]中罰函數(shù)的方法進行約束組合處理建立約束目標函數(shù),同時應用ARO、MFO、GA和DE 與WLARO 算法進行求解結果的比較,其對比結果見表5。 從表5 可看出,WLARO 在實際應用中也是有效的,具有較好的尋優(yōu)能力,進一步驗證了該算法在工程應用中的可行性。
表5 不同優(yōu)化算法對壓力容器問題求解的結果對比Tab. 5 Comparision of pressure vessel solved by different optimization algorithms
針對傳統(tǒng)人工兔優(yōu)化算法的缺點,本文提出了一種引入慣性權重與萊維飛行的人工兔優(yōu)化算法(WLARO)。 首先,在種群初始化階段引入Tent 慣性權重,增強種群的多樣性和動態(tài)性;其次,在繞道覓食階段引入慣性權重,提高算法的收斂精度及尋優(yōu)速度;最后,在隨機隱藏階段引入Lévy 飛行策略,對目前的最優(yōu)位置進行擾動,避免算法陷入局部最優(yōu)。 通過實驗仿真分析證明了本文所提出算法的優(yōu)勢,并將算法應用于壓力容器工程問題中,取得了較好的結果。 今后的工作會將WLARO 應用于更加復雜的應用場景中,優(yōu)化實際復雜工程的難題,如應用到車聯(lián)網(wǎng)資源管理中是下一步研究的重點。