王 偉,龍 文
(1.貴州財經大學管理科學與工程學院,貴州貴陽 550025;2.貴州財經大學數學與統計學院,貴州貴陽 550025)
在過去的幾十年中,元啟發式算法在處理各種工程領域中具有挑戰性的優化問題方面越來越受歡迎,這是因為它比傳統的數值方法更有效。元啟發式算法在搜索過程中需要執行探索和開發兩個關鍵任務。在探索任務中進行“宏觀搜索”以找到解空間中最有潛力的區域,對應于在問題的可行解空間中進行全局搜索,以搜索全局最優解。在開發任務中執行“微搜索”以提取搜索區域中的有用信息,對應于局部搜索,目的是改進可用的最佳解決方案。由于這兩個過程的矛盾性質,所以在任何元啟發式算法中都應該保持探索和開發之間的平衡,以執行性能良好的搜索。若未處理好探索和開發的平衡則會導致跳過真解、局部最優停滯和過早收斂等問題。
目前流行的元啟發式算法有灰狼優化(Grey Wolf Optimizer,GWO)算法[1]、鯨魚優化算法(Whale Optimization Algorithm,WOA)[2]、正弦余弦算法(Sine Cosine Algorithm,SCA)[3]、蝗蟲優化算法(Grasshopper Optimization Algorithm,GOA)[4]、哈里斯鷹優化(Harris Hawks Optimizer,HHO)算法[5]、海鷗優化算法(Seagull Optimization Algorithm,SOA)[6]、蝴蝶優化算法(Butterfly Optimization Algorithm,BOA)[7]等,它們在解決全局優化問題上顯示出一定的有效性。這些算法是基于種群迭代的,并且能夠同時使用多個個體來執行搜索。此外,算法中的個體在搜索過程中還能夠分享經驗,相互交流。這些特性有助于算法在搜索過程中避免局部最優,從而增強了算法的探索能力。
人工兔優化(Artificial Rabbits Optimization,ARO)算法是由Wang等[8]于2022年提出的一種新型元啟發式算法,它的靈感來自自然界中兔子的生存策略,包括迂回覓食和隨機隱藏。ARO算法具有數學模型簡單、需調整的參數少、容易編程實現以及不依賴梯度信息等特點,在函數優化和工程優化領域中得到成功應用[8-11]。然而,基本ARO算法存在精度差、收斂慢以及容易陷入局部最優等缺點。為了改善ARO算法的性能,Wang等[12]首先在隨機隱藏階段引入了Lévy飛行策略,以提高種群的多樣性和動態性,種群的多樣性加深了全局探索過程,從而提高了算法的收斂精度;然后,通過引入選擇性反向策略來提高跟蹤效率,防止ARO陷入當前的局部解。Wang等[13]結合天鷹優化(Aquila Optimizer,AO)算法的全局勘探和ARO算法的局部開發能力,設計了自適應切換機制,引入混沌反向學習策略,提出一種混合算法。
雖然這些元啟發式算法在某些問題上可以找到全局最優,但是沒有算法可以找到所有優化問題的全局最優值。無免費午餐(No Free Lunch,NFL)定理指出,不可能存在適用于所有優化問題的理想算法,該定理使得元啟發式算法領域的研究非常活躍,并允許對現有算法進行修改以提高其性能[14]。為了改善基本ARO算法的搜索能力,本文提出一種改進的ARO算法(稱為IARO算法),不僅設計了一種基于正弦函數的非線性遞減能量因子以平衡IARO算法的探索和開發能力,還在筆者前期工作的基礎上提出了一種動態透鏡成像學習策略以避免算法陷入局部最優。數值實驗部分選取了6個基準測試函數、2個工程設計優化問題和1個包括15個數據集的特征選擇問題對IARO算法進行性能測試。
ARO算法模擬了兔子的生存策略,通過搜索、覓食和躲避攻擊執行優化過程。與其他元啟發式算法一樣,ARO算法通過式(1)隨機產生一組解組成初始種群個體:
P=lb+rand·(ub-lb),
(1)
其中,ub和lb是解空間的上、下界,rand是[0,1]間的隨機數。
ARO算法中的優化過程主要包括兩個階段,即全局勘探(迂回覓食)和局部開發(隨機隱藏),具體數學模型描述如下:
在迂回覓食階段,假設種群中的每只兔子都有自己的區域,有一些草和洞穴,兔子總是隨機地訪問彼此的位置覓食。事實上,在覓食時,兔子很可能會擾亂食物來源以獲取足夠的食物。因此,ARO算法的迂回覓食行為意味著每個搜索個體傾向于使用向群中隨機選擇的其他搜索個體的位置來更新其位置,并添加擾動。迂回覓食策略的數學模型為
Xi(t+1)=Xj(t)+R·(Xi(t)-Xj(t))+round(0.5·(0.05+r1))·r2,
(2)
(3)
式中,X表示個體的位置;i,j=1,2,…,N,i≠j,N為種群規模;r1、r2和r3分別是[0,1]間的隨機數;t為當前迭代次數;T為最大迭代次數;R表示移動步長;k=1,2,…,d,d是問題的維數;c的取值為0或1,round為四舍五入取整函數。
在隨機隱藏階段,為了躲避捕食者,兔子通常會在巢穴周圍挖一些不同的洞來躲藏。在ARO算法的每次迭代中,兔子總是沿著搜索空間的每個維度在其周圍產生若干個洞穴,并且總是從所有洞穴中隨機選擇一個進行隱藏,以降低被捕食的概率,具體數學模型為
Xi(t+1)=Xi(t)+R·(r4·H·g·Xi(t)-Xi(t)),
(4)
(5)
式中,H為隱藏參數,在迭代過程中隨機從1線性減小到1/T,r4和r5分別為[0,1]間的隨機數,g的取值為0或1。
在ARO算法中,兔子總是傾向于在迭代初始階段頻繁地進行迂回覓食,而在迭代后期階段頻繁地進行隨機隱藏,這種搜索機制取決于兔子的能量,它會隨著時間的推移而逐漸收縮。因此,設計一個能量因子來模擬從勘探階段到開發階段的自動轉換,能量因子A的定義如下:
(6)
式中,r6是一個[0,1]間的隨機數。
在搜索過程中平衡好全局勘探和局部開發能力對提高元啟發式算法的搜索性能至關重要。一般來說,算法搜索前期的主要目的是在解空間中進行大范圍搜索,以找到潛在的可行區域;而在搜索中后期,算法主要執行局部精確搜索,以加快收斂速度。不難發現,基本ARO算法設計了一種能量因子A以控制其在全局勘探和局部開發之間的轉換。能量因子A較大表示兔子有足夠的能量和體力進行迂回覓食;反之,能量因子A較小則表明兔子的體力不足,需要隨機隱藏。即,當A>1時,兔子在探索階段隨機探索不同兔子的覓食區域,種群進行全局搜索;當A≤1時,兔子傾向于在開發階段隨機開發自己的洞穴,進行局部搜索。
由式(6)可知,雖然能量因子A的值隨迭代次數的增加而隨機擾動遞減至0,但這不能真實反映ARO算法的優化過程,即前期進行全局搜索需要較大的A值,而中后期局部精確搜索則需要較小的A值。因此,本文設計了一種基于正弦函數的非線性遞減能量因子,其數學公式為
(7)
式中,Amax和Amin分別為能量因子A的最大值和最小值,μ為縮放因子。圖1為式(7)描述的能量因子A隨迭代次數增加的變化曲線。由圖1可以看出,在算法搜索前期,能量因子A取較大值;而在搜索中后期,A取較小值,符合ARO算法前期進行全局勘探、后期進行局部開發的特點。
在基本ARO算法搜索末期,所有個體均向當前群體中最優個體所在區域靠攏,導致群體多樣性降低,算法很容易陷入局部最優,這也是元啟發式算法的固有缺點。為了克服這個缺點,龍文等[15]提出一種基于凸透鏡成像原理的反向學習策略用于改進GWO算法的性能。然而,固定的縮放因子k無法充分利用透鏡成像學習策略的優勢。因此,為了進一步增加群體多樣性,本文提出一種動態透鏡成像學習策略,如圖2所示。

(8)
式中,k=2·r7,r7是[0,1]之間的隨機數,j=1,2,…,m。

(9)
基于上述兩個修改策略,本文提出的IARO算法的流程如圖3所示,迭代步驟如下:

圖3 IARO算法流程
步驟1:初始化算法參數,如種群規模N、最大迭代次數T、Amax、Amin、μ、k;
步驟2:在解空間中隨機產生一組個體位置作為算法種群初始位置,令t=1;
步驟3:計算每個個體的目標函數值,并記錄當前群體最優個體位置;
步驟4:判斷t 步驟5:根據式(7)計算能量因子A的值; 步驟6:判斷A>1,如果是,則根據式(2)更新個體位置;否則,由式(4)更新個體位置; 步驟7:針對當前最優個體,執行動態透鏡成像學習策略,以產生新候選個體,令t=t+1,返回步驟3。 為了測試IARO算法的優化能力,本文選取6個基準函數進行數值實驗,詳細信息如表1所示。其中f1、f2和f3是單峰函數,通常用來測試算法的局部開發能力;多峰函數f4、f5和f6用于研究算法的全局勘探能力。6個基準測試函數的全局最優值均為0。 表1 6個基準測試函數 采用IARO算法對表1中的6個基準測試函數進行求解,并與GWO算法[1]、WOA[2]、SCA[3]和基本ARO算法[8]進行比較。5種算法的種群規模設為30,最大迭代次數設為500。每個函數的維數均設置為30。每種算法均對每個基準測試函數獨立運行30次。 表2列出了5種算法對6個基準測試函數的平均值(Mean)和標準差(Standard deviation,St.dev)的結果。所有算法均在MATLAB R2014a軟件上實現,操作系統為Microsoft windows 8 64位版,處理器為Intel (R) Core (TM) i5-5200U CPU @ 2.20 GHz,內存為4 GB RAM。 表2 5種算法在6個基準測試函數的比較結果 從表2可知,除了f4外,IARO算法在其他5個基準測試函數上均獲得了理論最優值(0),在f4上的尋優結果也非常接近于0。在5種比較算法中,SCA的尋優性能最差。與其他4種算法相比,IARO算法在6個基準測試函數上均獲得了較好的平均值,且具有較強的魯棒性。關于5種算法對6個函數的Friedman檢驗結果的排名,IARO算法在目標函數平均值上排名第一,接下來依次是ARO算法、WOA、GWO算法和SCA。另外,圖4是5種算法對6個基準測試函數的迭代收斂曲線。從圖4可以看出,與ARO算法、WOA、GWO算法和SCA相比,IARO算法在6個基準測試函數上顯示出更快的收斂速度和更高的收斂精度。 圖4 5種算法在6個函數上的收斂曲線 為了分析兩種改進策略的有效性,將基本ARO算法與僅采用非線性能量遞減因子的ARO (NARO)算法、僅采用動態透鏡成像學習策略的ARO(DARO)算法和IARO算法進行比較,選取表1中的6個測試函數進行實驗,結果如表3所示。 表3 4種算法的平均結果比較 從表3的比較結果可知,僅采用非線性能量遞減因子對改進ARO算法性能的幫助有限,IARO算法性能改進的有效算子是引入動態透鏡成像學習策略。 為了進一步驗證IARO算法的有效性,將其應用于求解兩個工程設計優化問題,即壓力容器設計優化和拉壓彈簧設計優化問題。考慮IARO算法在解決這兩個工程設計優化問題時需要結合約束處理技術,本文使用懲罰函數法[16]處理約束條件。這里利用GWO算法、WOA、SCA、ARO算法和IARO算法對兩個工程設計優化問題進行求解,5種算法的種群規模設置為50,最大迭代次數設置為1 000。 壓力容器設計的結構如圖5所示,它有4個設計變量,即壓力容器厚度、封帽厚度、容器內徑和容器長度,優化目標是在一定約束條件下使得容器總造價最低,其目標函數和約束條件的數學表達式如下: 圖5 壓力容器設計 g1=Ts+0.0193R≤0 , g2=Th+0.00954R≤0, g4=L-240≤0, (10) 式中,0≤Ts,Th≤99,10≤R,L≤200。 GWO算法、WOA、SCA、ARO算法和IARO算法在壓力容器設計優化問題上獲得的最優結果如表4所示。從表4的比較結果可知,與GWO算法、WOA、SCA和ARO算法相比,在相同參數設置的條件下,IARO算法在壓力容器設計優化問題上獲得了最低的總造價。 表4 5種算法的最優結果比較 拉壓管柱彈簧設計結構如圖6所示,它有3個設計變量如管柱直徑、平均線圈直徑和有效線圈數。 圖6 拉壓管柱彈簧設計 拉壓管柱彈簧設計優化問題的目標是在最小撓度、剪切應力、外徑限制和設計變量的約束下,使管柱彈簧的重量最小化,其目標函數和約束條件的數學表達式為 minf=(P+2)Dd2, (11) 式中,0.05≤d≤2.00,0.25≤D≤1.30,2≤P≤15。 GWO算法、WOA、SCA、ARO算法和IARO算法在拉壓管柱彈簧設計優化問題上獲得的最優結果如表5所示。由表5的比較結果可以看出,與GWO算法、WOA、SCA和ARO算法相比,IARO算法在拉壓管柱彈簧設計優化問題上獲得了最小的重量。 表5 5種算法的最優結果比較 特征選擇是處理高維數據的一個重要環節,它是指從原數據集的M個特征中選擇出N個特征以降低數據集的維數,從而提高機器學習模型的分類效率。特征選擇通過數學建模后可轉換為求解一個多目標函數優化問題,其目標(適應度)函數可描述為 (12) 其中,E為分類器的分類錯誤率,ρ是權重系數,|l|表示算法所選擇的特征數,|L|為原始數據集的特征數。 為了測試IARO算法求解特征選擇問題的有效性,本文從UCI數據庫中選取15個數據集進行實驗,詳細信息如表6所示。 表6 實驗中使用的15個UCI數據集 利用GWO算法、WOA、SCA、ARO算法和IARO算法對表6中的15個UCI數據集進行特征選擇并進行比較。5種算法的種群規模為10和最大迭代次數為20。在每個數據集中,隨機選擇90%作為訓練集,剩下10%作為測試集,以k最近鄰模型為分類模型,k=3,各種算法分別對每個數據集單獨運行10次,得到的平均分類準確率和平均所選特征數分別見表7和表8。 表7 5種算法的分類準確率比較 表8 5種算法的所選特征數比較 從表7的結果可知,IARO算法在BreastEW、KrvskpEW、PenglungEW和SonarEW數據集上的平均分類準確率達到100%。與GWO算法相比,IARO算法在8個數據集上分類更為準確,在Exactly2、SpectEW和Tic-tac-toe數據集上的分類能力相當,在Clean2、Exactly、Semeion和WaveformEW數據集上,GWO算法分類更加準確。除IonosphereEW數據集外,IARO算法在其他14個數據集上比WOA分類更加準確,并且在IonosphereEW數據集上二者的分類準確率相同。與SCA相比,IARO算法在12個數據集上的分類能力更強,在SpectEW數據集上二者的分類準確率相等;但是,SCA在IonosphereEW和M-of-n數據集上的分類能力更強。與ARO算法相比,IARO算法分別在7個數據集上分類表現更好,在Exactly2、KrvskpEW、Semeion、SonarEW和Tic-tac-toe數據集上二者的分類準確率相同;在數據集Clean2、IonosphereEW和M-of-n上,ARO算法的分類能力更強。 ARO算法是最近提出的一種元啟發式優化技術,它在經典基準測試函數上顯示出強大的尋優性能。然而,基本ARO算法在求解復雜優化問題上存在容易陷入局部最優、后期收斂速度慢等缺點。為了平衡算法的全局勘探和局部開發能力,本研究不僅提出了一種隨正弦函數變化的非線性遞減能量因子,還設計了一種動態透鏡成像學習策略以增強種群多樣性。基于上述兩個改進策略,提出了IARO算法。數值模擬實驗選取了6個基準函數以測試IARO算法的性能,并與GWO算法、WOA、SCA和ARO算法進行比較。數值模擬實驗結果表明,IARO算法在解精度和收斂速度性能上比起對比算法均有較大的提升。此外,將IARO算法應用于求解2個工程設計優化問題和1個含15個UCI數據集的特征選擇問題,結果顯示,與其他4種算法相比,IARO算法在求解工程設計優化問題和特征選擇問題上具有較強的競爭力。下一步的研究方向是將IARO算法應用于多目標優化、動態優化以及其他工程應用領域中。3 函數優化問題測試及比較




4 IARO算法求解工程設計優化問題
4.1 壓力容器設計



4.2 拉壓管柱彈簧設計



5 IARO算法求解特征選擇問題



6 結論