先做一個聲明:文章是由我的個人公眾號中的推送直接復(fù)制粘貼而來,因此對智能優(yōu)化算法感興趣的朋友,可關(guān)注我的個人公眾號:啟發(fā)式算法討論。我會不定期在公眾號里分享不同的智能優(yōu)化算法,經(jīng)典的,或者是近幾年提出的新型智能優(yōu)化算法,并附MATLAB代碼。
蜣螂優(yōu)化(DBO)算法:
“今天介紹的這個算法,應(yīng)該是目前最新的一個群智能優(yōu)化算法。實際上,一個周以前我就看到了,但是沒有去深入了解和學(xué)習(xí)。昨天對它的原始參考文獻進行了仔細閱讀,并編碼實現(xiàn)了這個算法,應(yīng)該說,這個算法的收斂性能還是非常優(yōu)越的!
這里再啰嗦一句,蜣螂,就是屎殼郎!翻譯成蜣螂優(yōu)化,會顯得高大尚些,檔次一下就有了,要是來個屎殼郎算法,就太不文雅了……”
蜣螂優(yōu)化(Dung Beetle Optimizer, DBO)算法是2022年11月27日提出的,大家可以算算到今天才提出多久。它是由東華大學(xué)的沈波教授團隊提出的一種全新的群智能優(yōu)化算法?;蛟S大家對這個團隊不是很了解,但相信大家對麻雀搜索算法(Sparrow Search Algorithm, SSA)一定不陌生。著名的SSA就是由這個團隊提出,感興趣的同學(xué)可以進一步跟蹤一下。
DBO算法的原始參考文獻如下:
“Xue J, Shen B. Dung beetle optimizer: a new meta-heuristic algorithm for global optimization[J]. The Journal of Supercomputing, 2022: 1-32.”
01
靈感來源
蜣螂是自然界常見的昆蟲,以動物的糞便為食。學(xué)過生物的同學(xué)都知道,它們在自然界中扮演著分解者的角色,這意味著它們在生態(tài)系統(tǒng)中至關(guān)重要。蜣螂有一個有趣的習(xí)慣,就是把糞便打成球狀,然后滾出來,如圖1所示。
?
圖1 蜣螂的滾球行為
一方面,蜣螂會盡可能快速地移動它們的糞球,這樣可防止被其他蜣螂競爭;另一方面,蜣螂會利用天體線索(特別是太陽、月亮和偏振光)來導(dǎo)航,使糞球沿直線滾動。然而,如果沒有了光源(即完全黑暗),蜣螂的路徑就不再是直線,而是彎曲的,有時甚至略圓。一些自然因素(如風(fēng)和不平整的地面)也會導(dǎo)致蜣螂偏離原來的方向。此外,蜣螂在滾動糞球時很可能遇到障礙物,無法前進。此時,蜣螂會爬到糞球上跳舞(包括一系列的旋轉(zhuǎn)和停頓),這也決定了它們新的運動方向。(這里我想好奇地問一下,你能想象一個東西站在粑粑上跳舞的畫面嗎)
蜣螂收獲的糞球主要有兩個目的:1) 一些糞球用來產(chǎn)卵和養(yǎng)育下一代;2) 其余的用作食物。具體來說,蜣螂把糞球埋起來,雌性蜣螂在這些糞球里產(chǎn)卵。糞球不僅是幼蟲的發(fā)育場所,還為幼蟲提供了生活所必需的食物。
另外,一些蜣螂會從其他蜣螂那里掠奪糞球,作者將它們稱作小偷,如圖2所示,這也是自然界中很常見的現(xiàn)象。
?
圖2 蜣螂中的小偷掠奪糞球
基于蜣螂的這些行為,作者提出了DBO算法,主要靈感就來自于蜣螂的滾球、跳舞、覓食、偷竊和繁殖行為。準(zhǔn)確來說,應(yīng)該叫蜣螂優(yōu)化器。
02
算法設(shè)計
如上所述,作者對蜣螂的滾球、跳舞、覓食、偷竊和繁殖行為進行數(shù)學(xué)建模。DBO算法主要包括四個過程:滾球、繁殖、覓食和偷竊。與前幾期推送一樣,目前我還不會在公眾號里編輯數(shù)學(xué)公式。因此,這部分內(nèi)容在Word文檔里先寫好,然后做成圖片,最后導(dǎo)入。
?
?
?
?
由此,作者便提出了基于蜣螂滾球、跳舞、覓食、偷竊和繁殖行為的DBO算法。簡單地說,DBO算法也是基于子種群的,每個子種群執(zhí)行不同的搜索方式。與蛇優(yōu)化(SO)和蜉蝣算法(MA)不同的是,DBO算法不是基于雙種群的,而是基于多個子種群,作者劃分了四個子種群。
03
計算流程
由于DBO算法將種群中的蜣螂劃分成了四種不同的角色,因此它的計算流程會相對復(fù)雜一些,需要執(zhí)行滾球、繁殖、覓食和偷竊四種算子。這里我用偽代碼給出了它的計算流程,如圖7所示。
?
圖7 DBO算法計算流程
04
實驗仿真
DBO算法到今天才提出兩周不到,因此我非常好奇它的性能。這里對DBO算法的收斂性能進行了簡單的測試。在編碼中,所有參數(shù)按照它原始文獻的取值進行設(shè)置,種群規(guī)模N為30,最大迭代次數(shù)T也與原文一致,等于500,問題維度D我選取的30。
這里以多峰函數(shù)Ackley、Levy和單峰函數(shù)Zakharov為例,展示DBO算法在30維環(huán)境下的收斂效果,如圖8所示。這里就不再進一步做分析了。
?
(a) Ackley
?
(b) Levy
?
(c) Zakharov
圖8 DBO算法的收斂曲線文章來源:http://www.zghlxwxcb.cn/news/detail-788203.html
05
MATLAB代碼
公眾號:啟發(fā)式算法討論文章來源地址http://www.zghlxwxcb.cn/news/detail-788203.html
到了這里,關(guān)于蜣螂優(yōu)化(DBO)算法(含MATLAB代碼)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!