賈鶴鳴,力尚龍,陳麗珍,劉慶鑫,吳 迪,鄭 榮
(1.三明學院 信息工程學院,福建 三明 365004;2.海南大學 計算機科學與技術(shù)學院,???570228;3.三明學院 教育與音樂學院,福建 三明 365004)
基于群體智能的元啟發(fā)式優(yōu)化算法能夠有效地解決具有非線性、高緯度和目標函數(shù)不可導的全局優(yōu)化問題[1-2],但是,NFL(No-Free-Lunch)理論也證明不存在一種能解決所有問題的優(yōu)化算法[3]。目前,諸多元啟發(fā)式算法被提出,如正余弦算法(Sine Cosine Algorithm,SCA)[4]、飛蛾優(yōu)化算法(Moth-Flame Optimization algorithm,MFO)[5]、鯨魚優(yōu)化算法(Whale Optimization Algorithm,WOA)[6]、烏燕鷗優(yōu)化算法(Sooty Tern Optimization Algorithm,STOA)[7]、哈里斯鷹優(yōu)化算法(Harris Hawks Optimization algorithm,HHO)[8]、黏菌優(yōu)化算法(Slime Mould Algorithm,SMA)[9]、精子群優(yōu)化算法(Sperm Swarm Optimization algorithm,SSO)[10]、爬行動物搜索算法(Reptile Search Algorithm,RSA)[11],并利用它們解決不同復雜程度的全局優(yōu)化問題[12]。
?魚優(yōu)化算法(Remora Optimization Algorithm,ROA)[13]是一種新的基于仿生學的元啟發(fā)式優(yōu)化算法。它主要模擬了海洋生物?魚的生存狩獵方式,是通過建模?魚依附宿主、經(jīng)驗攻擊和宿主覓食等過程而設計的一種優(yōu)化方法。ROA 原理簡單,探索能力與開發(fā)能力都較強,但由于通過經(jīng)驗攻擊切換宿主,導致探索與開發(fā)之間平衡性較差、求解精度較低并且容易陷入局部最優(yōu)?;谏鲜鰡栴},眾多學者對ROA 進行改進,例如:Zheng 等[14]提出了一種融入自主覓食機制的?魚優(yōu)化算法,通過一種概率選擇的?魚自主覓食機制,增強原算法的探索能力;Liu 等[15]提出了一種融合多策略的?魚優(yōu)化算法,引入布朗運動增強算法的全局探索能力,再利用透鏡成像反向?qū)W習策略增強跳出局部最優(yōu)的能力,實現(xiàn)改進算法探索和開發(fā)能力之間的有效平衡。Tent 混沌映射是現(xiàn)有混沌映射中的一種,具有隨機性、遍歷性和有序性的特點,能夠有效改善優(yōu)化算法的分布隨機性問題[16]。騰志軍等[17]提出了一種基于Tent 映射的混合灰狼優(yōu)化的改進算法,通過Tent 混沌映射產(chǎn)生初始種群,增加初始種群個體的多樣性。周鵬等[18]提出了基于階梯式Tent 混沌和模擬退火的樽海鞘群算法,引入Tent 混沌映射初始化種群,提高算法在迭代前期的收斂速度。
受上述兩種ROA 的改進思想和Tent 混沌映射策略運用的啟發(fā),本文提出一種基于改進宿主切換機制的?魚優(yōu)化算法(Modified ROA,MROA)。針對原始ROA 宿主切換機制存在的問題,設計一種新的宿主切換機制,使宿主的切換更加合理,從而更好地平衡算法的探索和開發(fā)能力;同時,為了使?魚初始宿主多樣化,引入Tent 混沌映射初始化種群,進一步優(yōu)化算法的性能。通過上述兩種改進方法,使探索與開發(fā)基本得到平衡,提高ROA 尋優(yōu)能力、收斂能力和跳出局部最優(yōu)的能力。選取CEC2020 測試函數(shù)[19]驗證算法性能,同時選取了兩個典型工程問題進行測試,實驗結(jié)果印證了本文算法的有效性和工程實用性。
?魚優(yōu)化算法[13]是受?魚寄生行為啟發(fā)的一種優(yōu)化算法。旗魚是海洋中速度最快的魚類,通常采用群體狩獵的模式,旗魚的狩獵方式為輪流攻擊的精英戰(zhàn)術(shù)。座頭鯨體型龐大,經(jīng)常獨自捕食。當?魚吸附在宿主(旗魚、座頭鯨)身上時,可以認為?魚的位置是隨著宿主位置的改變而改變的?;谶@種思想,?魚優(yōu)化算法中采用了旗魚優(yōu)化算法和鯨魚優(yōu)化算法中的運動公式作為?魚的運動公式[13]。此外,?魚還會圍繞宿主做小范圍的移動,依靠“經(jīng)驗攻擊”嘗試捕食。當周圍食物變少時,?魚會判斷是否需要更換宿主。如果不改變宿主,則通過“宿主覓食”策略獲取食物。
1.1.1 旗魚優(yōu)化策略
?魚優(yōu)化算法的探索階段被命名為“自由旅行”。當?魚吸附在旗魚上時,可以認為?魚的位置隨旗魚的改變而同步改變?;谄祠~優(yōu)化算法的精英思想,改進原本的旗魚位置更新公式,數(shù)學模型如式(1)所示:
其中:t代表當前迭代次數(shù);i代表第i個個體;Ri(t+1)代表更新后的個體位置;RBest(t)為更新前的最優(yōu)個體位置;rand為[0,1]的隨機向量;Rrand(t)代表更新前隨機個體的位置。
1.1.2 經(jīng)驗攻擊
為了確定是否需要更換宿主,?魚會圍繞宿主不斷進行小范圍移動,這個過程類似經(jīng)驗的積累。該思想的數(shù)學模型如式(2)所示:
其中:Ri(t)代表個體當前位置,Rpre(t)代表上一次迭代的位置,這可以看作是一種經(jīng)驗。Ratt(t+1)代表?魚試探性的一步。該機制首先利用randn函數(shù)的隨機性在當前位置和上一位置之間進行局部搜索;然后通過比較當前位置的適應度值和試探移動后的適應度值判斷是否需要更換宿主。
1.2.1 鯨魚優(yōu)化策略
在開發(fā)階段,?魚則吸附在座頭鯨表面,這一階段被命名為“細細品味”。當?魚的宿主是座頭鯨時,其位置更新方程如式(3)所示:
其中:e 為自然常數(shù);D代表宿主與獵物之間的距離,計算公式如式(4);l為[-1,1]的隨機數(shù),用于構(gòu)造螺旋體,計算公式如式(5);a為螺旋體的控制系數(shù),在迭代過程中會在[-2,-1]內(nèi)線性下降,計算公式如式(6):
其中:t為當前迭代次數(shù),T代表最大迭代次數(shù)。
1.2.2 宿主覓食
宿主覓食策略進一步細分搜索空間,在此階段,最佳解的空間可以縮小為宿主的位置空間。此時?魚在宿主周圍進行小范圍移動:
其中A代表?魚的移動步長,A值與?魚和宿主的體積空間有關(guān),計算公式如式(8):
其中:C為?魚因子,用于映射?魚的位置,本文選用0.1;B用來模擬?魚寄宿的空間,計算公式如式(9):
其中V代表?魚的體積,計算公式如式(10):
與大多數(shù)元啟發(fā)式算法一樣,原始ROA 使用隨機產(chǎn)生的數(shù)據(jù)初始化種群,這種初始化方法無法確保種群的多樣性。與基本隨機方法不同,混沌映射具有遍歷性和有序性。因此,采用混沌映射序列初始化種群能夠最大限度維持種群的多樣性,增強算法全局搜索的能力。鑒于多種混沌映射序列的分布情況不同,本文選用了Tent 混沌映射序列[18]進行種群初始化。Tent 混沌映射序列的表達式如式(11):
為了展示基本隨機方法與Tent 混沌映射序列對種群初始化的影響,本文給出基本隨機種群初始化與Tent 混沌映射種群初始化在二維平面的示例,如圖1 所示。顯然,基本隨機方法在種群規(guī)模較小的情況下無法維持種群的多樣性,而Tent 混沌映射序列較好地解決了這一問題。
圖1 兩種種群初始化方法在二維平面的示例Fig.1 Examples of two population initialization methods in two-dimensional plane
原始ROA 通過對比經(jīng)驗攻擊前后位置的適應度值判斷是否更換宿主。經(jīng)驗攻擊是基于上一次迭代后的位置和宿主當前位置決定的,并且?魚尋找食物需要依賴宿主,它本身并不具備良好的覓食能力。這種宿主更換方法導致?魚頻繁更換宿主,當算法陷入局部最優(yōu)后這一問題會變得更加顯著,大幅降低了算法的尋優(yōu)性能。
為了解決上述問題,本文提出一種新的宿主切換機制。即?魚在宿主周圍進行經(jīng)驗攻擊后,評估一次宿主周圍環(huán)境,根據(jù)評估結(jié)果選擇是否更換宿主。新的宿主切換機制大幅降低了?魚自身覓食能力的影響,提高了算法的尋優(yōu)性能。
其中:Rnew是宿主附近的一個新位置;k是一個隨機移動因子,用于限制評估的范圍,計算公式如式(13);step表示移動的步長,計算公式如式(14):
其中:β用于控制移動因子,本文選用0.6。
其中Rr1(t)、Rr2(t)是種群中兩個隨機個體更新前的位置。
通過對比宿主位置及其附近新位置的適應度值,決定是否更換宿主。同時為了更好地解決頻繁更換宿主的問題,引入線性遞減的動態(tài)因子P,計算公式如式(15):
在迭代前期由于所處區(qū)域食物匱乏,?魚為了更好地生存會頻繁評估宿主;在迭代后期進入食物豐富的區(qū)域后,由于食物充足,?魚也會減少對宿主的評估,這樣的改進就更加符合?魚的生活習性。
MROA 的流程如圖2 所示。MROA 描述如下。
圖2 MROA的流程Fig.2 Flow of MROA
本文實驗均在主頻為2.50 GHz 的11th Gen Intel Core i7-11700 處理器,16 GB 內(nèi)存,操作系統(tǒng)在64 位Windows 11 的電腦上使用Matlab 2021a 完成。為了驗證MROA 的性能,本文采用了CEC2020 測試函數(shù)[19]進行仿真實驗。CEC2020 測試函數(shù)的詳細介紹如表1 所示,函數(shù)的搜索范圍均為[-100,100]。
表1 CEC2020測試函數(shù)Tab.1 CEC2020 test functions
本文選取了ROA[13]、RSA[11]、WOA[6]、HHO[8]、SSO[10]、SCA[4]和STOA[7]作對比,驗證改進算法的優(yōu)越性。本次實驗設置的參數(shù)有:空間維度Dim=10,最大迭代次數(shù)T=500,種群規(guī)模N=30。選取30 次運行的最優(yōu)適應度值、平均適應度值、適應度值標準差、收斂曲線和15 次運行的Wilcoxon 秩和檢驗的實驗結(jié)果作為評價指標。各對比算法參數(shù)設置如表2所示。
表2 不同算法參數(shù)設置Tab.2 Parameter setting of different algorithms
MROA 和對比算法的最優(yōu)適應度值(Best)、平均適應度值(Mean)和適應度值標準差(Std)如表3 所示。
表3 不同算法在CEC2020函數(shù)上的測試結(jié)果Tab.3 Test results of different algorithms on CEC2020 test functions
F1為單峰函數(shù),MROA 在F1中取得了最佳的最優(yōu)適應度值、平均適應度值和適應度值標準差,明顯優(yōu)于ROA 和其他對比算法。可以看出MROA 在單峰函數(shù)中明顯更優(yōu)。F2、F3為多峰函數(shù),MROA 在F2和F3中都取得了最佳的最優(yōu)適應度值,在F2中也取得了最佳的平均適應度值。ROA、WOA、HHO 以及STOA 在F2中取得的平均適應度值與MROA 相差不大,但是最優(yōu)適應度值明顯較差,表明MROA 有著較強的跳出局部最優(yōu)的能力。SSO 在F2中取得了最小的適應度值標準差,但最優(yōu)適應度值和平均適應度值明顯很差。STOA在F3中取得了最好的平均適應度值,MROA 和SCA 取得的平均適應度值與之相差較小,可以看出MROA 在F3中依然表現(xiàn)出了較好的跳出局部最優(yōu)的能力,但穩(wěn)定性略遜一籌。SSO在F3中依然取得了最小的適應度值標準差,平均適應度值與其他算法相差不大,但最優(yōu)適應度值明顯較差,表明SSO 在多峰函數(shù)中明顯較差,而MROA 在多峰函數(shù)中依然表現(xiàn)出更好的尋優(yōu)能力。F4為無峰函數(shù),除WOA、SCA 和STOA 可能找不到理論最優(yōu)值外,其他對比算法都可以穩(wěn)定地找到理論最優(yōu)值。F5、F6、F7為混合函數(shù),MROA 在F5、F6和F7中都取得了最佳的最優(yōu)適應度值和平均適應度值。F5和F7中MROA 也取得了最小的適應度值標準差,明顯優(yōu)于ROA 以及其他對比算法。F6中HHO 同樣取得了最佳的最優(yōu)適應度值,ROA、WOA 和STOA 取得的最優(yōu)適應度值與之差距較小,但與HHO 一樣,平均適應度值與MROA 相差較大;SCA 算法取得了最小的適應度值標準差,但最優(yōu)適應度值和平均適應度值明顯較差,可以看出在F6中MROA 明顯更優(yōu)。顯然MROA 在混合函數(shù)中表現(xiàn)出了更好的魯棒性。F8、F9、F10為復合函數(shù),MROA 都取得了最好的平均適應度值,在F8和F9中也都取得了最好的最優(yōu)適應度值,F(xiàn)8中MROA 取得的適應度值標準差同樣最小。HHO 在F9中同樣取得了最好的最優(yōu)適應度值,但平均適應度值劣于MROA。SCA 在F9中取得了最小的適應度值標準差,平均適應度值也與MROA 相差較??;但最優(yōu)適應度值明顯很差,顯然陷入了局部最優(yōu)且無法跳出。在F10中WOA 取得了最佳的最優(yōu)適應度值,但平均適應度值僅僅略差于MROA,顯然WOA 在F10中穩(wěn)定性略差。MROA 在復合函數(shù)中的尋優(yōu)能力明顯更優(yōu)。經(jīng)計算MROA在CEC2020 測試函數(shù)中取得的最優(yōu)適應度值、平均適應度值?和適應度值標準差分別平均比其他對比算法提高了28%、33%和12%。
收斂曲線能夠更為直觀地展示算法的尋優(yōu)能力,因此本文給出MROA 和對比算法在CEC2020 測試函數(shù)上的收斂曲線,如圖3 所示。
圖3 CEC2020測試函數(shù)各算法收斂曲線Fig.3 Convergence curves of various algorithms for CEC2020 test function
在單峰函數(shù)F1中,MROA 能較快收斂,而對比算法無法收斂。在多峰函數(shù)F2、F3中,MROA 在迭代前期已經(jīng)找到較優(yōu)值,ROA 和STOA 表現(xiàn)出了一定的跳出局部最優(yōu)的能力,但收斂不足,而其他對比算法均陷入局部最優(yōu)。對于無峰函數(shù)F4,SCA 和STOA 表現(xiàn)出較差的尋優(yōu)能力。在混合函數(shù)F5、F6和F7中,MROA 依然在迭代前期找到了較優(yōu)值。在F5中,STOA 能夠跳出局部最優(yōu),但收斂較差,而其他對比算法均陷入局部最優(yōu);在F6中,WOA 和MROA 一樣在迭代前期快速收斂,但MROA 收斂能力明顯更優(yōu);對于F7,RSA、HHO 和STOA較早陷入局部最優(yōu),但展現(xiàn)了一定的跳出局部最優(yōu)的能力,其他對比算法也在收斂到一定程度后陷入局部最優(yōu)并無法跳出。在復合函數(shù)F8、F9、F10中,MROA 同樣展現(xiàn)了更優(yōu)的收斂能力。F8中WOA 收斂略慢,ROA 次之,SSO 和SCA 在收斂到一定程度后陷入局部最優(yōu),HHO 雖然收斂較慢但沒有陷入局部最優(yōu),RSA 和STOA 則較早地陷入局部最優(yōu)導致無法收斂。在F9中WOA 依然收斂略慢,而其他對比算法均陷入局部最優(yōu),只有HHO 和STOA 在迭代后期成功跳出局部最優(yōu)。對于F10,WOA 仍然收斂略慢,ROA、HHO 和SCA 次之,RSA 和STOA 陷入局部最優(yōu),而STOA 在多次陷入局部最優(yōu)后依然能夠跳出。
僅通過對最優(yōu)適應度值、平均適應度值、適應度值標準差和收斂曲線的分析,不能精確地分析算法的性能。因此本文采用Wilcoxon秩和檢驗驗證MROA和對比算法整體結(jié)果的顯著差別[20]。其中,顯著水平為5%,當p值小于5%時,表明對比雙方存在顯著差異,反之比較接近[21]。本文在CEC2020 中獨立運行15次得到實驗結(jié)果,統(tǒng)計結(jié)果如表4所示。
表4 不同算法在Wilcoxon秩和檢驗中的結(jié)果Tab.4 Results of different algorithms in Wilcoxon rank-sum test
如表4 所示,在F4中存在較多值為0 的結(jié)果,這是因為CEC2020 中的F4相對簡單,多數(shù)算法都可以很快取得最優(yōu)值。在F10中也存在值大于5%的情況,這表明在F10中MROA與WOA 在尋優(yōu)能力上沒有明顯的差異。而在其他的測試函數(shù)中得到的結(jié)果都是p值小于5%,可以證明MROA 在大多數(shù)測試函數(shù)中與對比算法存在顯著差異,且明顯優(yōu)于對比算法。通過Wilcoxon 秩和檢驗,可以得出MROA 在CEC2020 測試函數(shù)中表現(xiàn)出了較好的尋優(yōu)性能的測試結(jié)論。
通過對30 次運行的最優(yōu)適應度值、平均適應度值、標準差、算法收斂曲線和15 次運行的Wilcoxon 秩和檢驗的分析,充分說明原始ROA 由于宿主切換機制不夠合理,導致探索與開發(fā)平衡較差,存在收斂不足、跳出局部最優(yōu)能力不足的問題,而MROA 在改變宿主切換機制同時引入Tent 混沌初始化,解決了探索與開發(fā)不平衡的問題,有效地增強了算法的尋優(yōu)能力。
為了展示MROA 的計算成本,記錄了在CEC2020 測試函數(shù)中各算法的計算時間,統(tǒng)計結(jié)果見表5。雖然MROA 與ROA 具有相同的計算復雜度,但實驗數(shù)據(jù)表明MROA 的計算時間成本大于ROA。這是因為本文提出的宿主切換機制需要進行宿主評價和選擇,會進行多次額外的適應度值計算,導致MROA 的運行時間明顯較長。此外,考慮到NFL 定理,增加計算時間以獲得更為可靠的解是可以接受的。
表5 CEC2020測試函數(shù)上不同算法的計算時間 單位:sTab.5 Computational time of different algorithm on CEC2020 test functions unit:s
MROA 增加的參數(shù)只有β,參數(shù)β的作用是控制隨機因子,對MROA 的性能影響較大。本文選取β=0.1~0.9 進行實驗,記錄當β選取不同數(shù)值時,MROA 在CEC2020 測試函數(shù)中獨立運行30 次的平均值。實驗結(jié)果如表6 所示,當β=0.6 時MROA的性能顯然更優(yōu),β=0.8時次之。
表6 參數(shù)敏感性分析Tab.6 Parameters sensitivity analysis
實際問題的應用是算法研究的目的之一,在測試函數(shù)中的結(jié)果并不能完全體現(xiàn)算法在實際問題中的性能。為了驗證MROA 在實際問題中的適用性,本文選擇了焊接梁設計問題和多片式離合器制動器設計問題進行實驗和測試。
焊接梁設計問題的目的是在7 個約束條件的限制下求出成本最小的焊接梁的4 個相關(guān)參數(shù),具體模型如圖4[12]。關(guān)鍵參數(shù)分別為剪切應力τ、橫梁彎曲應力σ、屈曲載荷Pc、衡量撓度δ和相關(guān)參數(shù)的約束。4 個相關(guān)參數(shù)分別為焊縫寬度h、橫梁寬度t、橫梁長度l和橫梁厚度b。
圖4 焊接梁設計問題模型Fig.4 Welded beam design problem model
焊接梁設計問題數(shù)學模型如下:
目標函數(shù):
約束條件:
變量范圍:
其他參數(shù):
表7 是幾種算法在焊接設計問題中求得的解。其中ROA、MFO、GWO(Grey Wolf Optimizer)、MVO(Multi-Verse Optimization)、WOA、CPSO(Co-evolutionary Particle Swarm Optimization)、RO(Ray Optimization)的 結(jié)果來源于文獻[13]。MROA 在焊縫寬度為0.205 740、橫梁長度為3.253 000、橫梁寬度為9.036 600 以及橫梁厚度為0.205 730時得到了最小的成本1.695 200。其中焊縫寬度最大,橫梁長度最小,橫梁寬度和橫梁厚度適中,最終得到的成本相較于其他對比算法明顯更小。MROA 在焊接梁設計問題上明顯具有更優(yōu)的性能。
表7 不同算法在焊接梁設計問題中的實驗結(jié)果Tab.7 Experimental results of different algorithms in welded beam design problem
多片式離合器制動器設計問題的目的是在8 個約束條件的限制下求出質(zhì)量最小的多片式離合器制動器的5 個相關(guān)參數(shù),具體模型如圖5[11]所示。5 個相關(guān)參數(shù)分別為內(nèi)半徑ri、外半徑ro、圓盤厚度t、驅(qū)動力F和摩擦表面數(shù)量Z。
圖5 多片式離合器制動器設計問題模型Fig.5 Multi-plate clutch brake design problem model
多片式離合器制動器設計問題數(shù)學模型如下:
目標函數(shù):
約束條件:
變量范圍:
其他參數(shù):
表8 是不同優(yōu)化算法在多片式離合器制動器設計問題中求得的解。其 中 TLBO(Teaching Learning Based Optimization)、WCA(Water Cycle Algorithm)、MVO、CMVO(Chaotic Multi-Verse Optimization)、MFO、RSA 的結(jié)果來源于文獻[11]。MROA 在內(nèi)半徑為70、外半徑為90、圓盤厚度為1、驅(qū)動力為600 和摩擦表面數(shù)為2 時得到了最小的質(zhì)量0.235 24,明顯性能更優(yōu)。
表8 不同算法在多片式離合器制動器設計問題中的實驗結(jié)果Tab.8 Experimental results of different algorithms in multip-plate clutch brake design problem
通過對上述兩種工程問題的求解,進一步證明了原始ROA 的不足,并驗證了本文所提改進方法的有效性。MROA在實際的工程問題中能夠找到更優(yōu)的解,驗證了MROA 在實際工程問題中具有較高的應用價值。
本文針對ROA 由于通過經(jīng)驗攻擊進行宿主切換,導致探索與開發(fā)之間平衡較差、求解精度較低并且容易陷入局部最優(yōu)的問題,提出一種新的宿主切換機制,同時引入Tent 混沌映射初始化種群。通過上述改進使探索與開發(fā)基本平衡,增強尋優(yōu)能力、收斂能力和跳出局部最優(yōu)的能力。利用CEC2020 對算法性能進行了測試驗證,實驗結(jié)果表明MROA在不同函數(shù)中都表現(xiàn)出更好的魯棒性。同時,通過求解焊接梁設計問題和多片式離合器制動器設計問題,進一步驗證了MROA 在實際工程問題中的適用性。在未來的工作中,計劃把本文算法應用至其他實際問題例如特征選擇和多閾值圖像分割,進一步探討本文算法的優(yōu)化性能。