日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

智能优化算法:蜣螂优化算法-附代码

發布時間:2023/12/31 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 智能优化算法:蜣螂优化算法-附代码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

智能優化算法:蜣螂優化算法

摘要:蜣螂優化算法( Dung beetle optimizer, DBO), 是由 Jiankai Xue 等于2022 年提出的一種群體智能優化算法。其靈感來源于蜣螂的生物行為過程,具有尋優能力強,收斂速度快的特點。

1.蜣螂優化算法

眾所周知,蜣螂是自然界中一種常見的昆蟲,動物的糞便為食,在全世界內分布廣泛,扮演著自然界中分解者的角色,對生態系統平衡起著至關重要的作用。蜣螂有一個有趣的習慣,它們會把糞便捏成球,然后把它滾出來,目的是能夠盡可能快速、有效地移動糞球,防止被其他蜣螂搶奪。蜣螂的可以利用天體線索(特別是太陽、月亮和偏振光)來導航,讓糞球沿著直線滾動,如果完全沒有光源(也就是在完全黑暗的環境中),蜣螂的就不再走直線,而是彎曲的,有時甚至略圓,有很多因素(如風、地面不平)都會導致蜣螂偏離原來的方向,蜣螂在滾糞球的過程如遇到障礙物而無法前進時,通常會爬到糞球上面"跳舞"(包括一系列的旋轉和停頓),決定它們的運動方向。

從蜣螂的習性中觀察發現,其獲取糞球主要有以下兩個目的:①用來產卵和養育下一代;②作為食物。蜣螂會把糞球埋起來,雌性蜣螂會在糞球里產卵,糞球不僅是蜣螂幼蟲的發育場所,也是必需的食物。所以,糞球對蜣螂的生存起著不可替代的作用。

本位介紹了一種新的群體智能優化算法------DBO(Dung beetle optimizer)技術,其靈感主要來源于蜣螂的滾球、跳舞、覓食、偷竊、和繁殖等行為。

1.1 結構和算法

根據上面的討論,蜣螂在滾動過程中需要通過天體線索導航,以保持糞球在直線路徑上滾動。為了模擬滾球行為,要求蜣螂在整個搜索空間中沿著給定的方向移動。蜣螂的運動軌跡如圖1所示。在圖1中,蜣螂利用太陽來導航,其中紅色箭頭表示的是滾動的方向,同時,我們假設光源的強度也會影響蜣螂的路徑。在滾動過程中,滾球蜣螂的位置更新,可以表示為

xi(t+1)=xi(t)+α×k×xi(t?1)+b×Δx,Δx=∣xi(t)?Xw∣(1)x_{i}(t + 1) = x_{i}(t) + \alpha \times k \times x_{i}(t - 1) + b \times \mathrm{\Delta}x,\\\mathrm{\Delta}x = \left| x_{i}(t) - X^{w} \right|\tag{1}xi?(t+1)=xi?(t)+α×k×xi?(t?1)+b×Δx,Δx=xi?(t)?Xw(1)

其中, ttt 表示當前迭代次數, xi(t)x_i(t)xi?(t) 表示第 iii 只蛻螂在第 ttt 次迭代時的位置信息, k∈(0,0.2]k \in(0,0.2]k(0,0.2] 表示撓度系數, 為定值。 bbb 表示屬于 (0,1)(0,1)(0,1) 的定值, α\alphaα 為自然系數, 賦值為 ?1-1?11,Xw1, X^w1,Xw 表示全局 最差位置, Δx\Delta xΔx 用于模擬光強的變化。

圖1蜣螂運動軌跡的概念模型

在式(1)中, 適當選擇兩個參數 (k(k(kbbb )的值至關重要, α\alphaα 代表諸多自然因素(如風和不平坦 的地面)可使蠔螂偏離原來的方向。當 α=1\alpha=1α=1 時, 表示無偏差, 當 α=?1\alpha=-1α=?1 時, 表示偏離原方向。本 文中, 為模擬現實世界中的復雜環境, 通過概率法設 α\alphaα 為 1 或-1。同樣, Δx\Delta xΔx 的值越高表示光源 越弱, 同時, kkkbbb 分別設為 0.10.10.10.30.30.3 。利用 Δx\Delta xΔx 有以下兩個優點: (1)算法在優化過程中, 可盡 可能地徹底地探索整個空間; (2)使算法具有更強的搜索性能, 從而避免陷入局部最優。 XwX^wXw 通 過控制 Δx\Delta xΔx 的值, 來擴大搜索范圍。

圖2 切線函數的概念模型和蜣螂的舞蹈行為

當蛢螂遇到障礙物無法前進時, 就需要通過跳舞來重新定位, 目的是獲得新的路線。為了 模擬舞蹈行為, 用切線函數得到新的滾動方向。需要指出的是, 只需要考慮定義在區間 [0,π][0, \pi][0,π], 如圖 2 所示。一旦蜣螂成功確定了一個新的方向, 它繼續把球向后?。因此, 將?螂的位置更 新, 并定義如下:
xi(t+1)=xi(t)+tan?θ∣xi(t)?xi(t+1)∣(2)x_i(t+1)=x_i(t)+\tan \theta\left|x_i(t)-x_i(t+1)\right| \tag{2} xi?(t+1)=xi?(t)+tanθxi?(t)?xi?(t+1)(2)
其中, θ\thetaθ 為撓度角, 屬于 [0,π][0, \pi][0,π]∣xi(t)?xi(t+1)∣\left|x_i(t)-x_i(t+1)\right|xi?(t)?xi?(t+1) 表示第 iii 只蛻螂在第 ttt 次迭代時的位置與其 在第 t?1t-1t?1 次迭代時的位置之差。如果 θ=0,π/2,π\theta=0, \pi / 2, \piθ=0,π/2,π, 蛢螂的位置不更新。

在自然界中, 糞球是被蛢螂滾到安全的地方藏起來。為了給它們的后代提供安全的環境, 選擇合適的產卵地點對蠔螂來說至關重要。模擬?蠔螂產卵的區域邊界選擇策略, 其定義為:
Lb?=max?(X?×(1?R),Lb),Ub?=min?(X?×(1+R),Ub)(3)\begin{aligned} & L b^*=\max \left(X^* \times(1-R), L b\right), \\ & U b^*=\min \left(X^* \times(1+R), \quad U b\right) \end{aligned}\tag{3} ?Lb?=max(X?×(1?R),Lb),Ub?=min(X?×(1+R),Ub)?(3)
其中, X?X^*X? 為當前局部最佳位置, Lb?L b^*Lb?Ub?U b^*Ub? 分別為產卵區下限和上界, R=1?t/Tmax?,Tmax?R=1-t / T_{\max }, T_{\max }R=1?t/Tmax?,Tmax? 表 示最大迭代次數, LbL bLbUb\mathrm{Ub}Ub 分別代表優化問題的下界和上界。
如圖 3 所示, 當前局部最佳位置 X?X^*X? 用一個大的棕色圈表示, 而 X?X^*X? 周圍的小黑圈表示卵球。 每個卵球中都蘊含一枚蜣螂卵, 紅色的小圓圈代表邊界的上下界。
一旦確定了產卵區域, 雌性蛻螂就會選擇這個區域的卵卵球產卵。對于 DBO 算法, 每只 雌蠔螂在每次迭代中只產一個卵。此外, 從式(3)中可以清楚地看到, 產卵區域的邊界范圍是 動態變化的, 這主要是由 RRR 值決定的。由此可見, 卵球的位置在迭代過程中也是動態的, 表示 為:
Bi(t+1)=X?+b1×(Bi(t)?Lb?)+b2×(Bi(t)?Ub?)(4)B_i(t+1)=X^*+b_1 \times\left(B_i(t)-L b^*\right)+b_2 \times\left(B_i(t)-U b^*\right) \tag{4} Bi?(t+1)=X?+b1?×(Bi?(t)?Lb?)+b2?×(Bi?(t)?Ub?)(4)
Bi(t)B_i(t)Bi?(t) 為第 t\mathrm{t}t 次迭代時第 i\mathrm{i}i 個卵球的位置信息, b1b_1b1?b2b_2b2? 表示大小為 1×D1 \times \mathrm{D}1×D 的兩個獨立隨機向量, D\mathrm{D}D 表示優化問題的維數。卵球的位置被嚴格限制在一定范圍內。

一些已經長成成蟲的蠔螂會從地下鉆出來受食, 我們稱它們為小蠔螂, 還需要建立最優受 食區域來引導蜣螂受食, 最佳受食區域的邊界定義如下:
Lbb=max?(Xb×(1?R),Lb),Ubb=min?(Xb×(1+R),Ub)(5)\begin{aligned} & L b^b=\max \left(X^b \times(1-R), \quad L b\right), \\ & U b^b=\min \left(X^b \times(1+R), \quad U b\right) \end{aligned} \tag{5} ?Lbb=max(Xb×(1?R),Lb),Ubb=min(Xb×(1+R),Ub)?(5)
XbX^bXb 表示全局最佳受食位置, LbbL b^bLbb 和烏 UbbU b^bUbb 分別為最優受食區域的下界和上界, 其他參數在 式(3)中定義, 因此小蠔螂的位置更新如下:
xi(t+1)=xi(t)+C1×(xi(t)?Lbb)+C2×(xi(t)?Ubb)(6)x_i(t+1)=x_i(t)+C_1 \times\left(x_i(t)-L b^b\right)+C_2 \times\left(x_i(t)-U b^b\right) \tag{6} xi?(t+1)=xi?(t)+C1?×(xi?(t)?Lbb)+C2?×(xi?(t)?Ubb)(6)
其中, xi(t)x_i(t)xi?(t) 表示第 ttt 次迭代時第 iii 只小蠔螂的位置信息, C1C_1C1? 表示一個服從正態分布的隨機數, C2C_2C2? 表示屬于 (0,1)(0,1)(0,1) 的隨機向量。
還有一些蠔螂被稱為偷竊?螂, 會從其他蠔螂那里偷糞球,這是自然界中非常常見的現象。 從式(5)可以看出, XbX^bXb 即最優的食物來源位置。因此, 我們可以假設 XbX^bXb 即表示爭奪食物的最佳 地點。在迭代過程中, 偷窮槩螂的位置更新信息定義如下:
∣xi(t+1)=Xb+S×g×(∣xi(t)?X?∣+∣xi(t)?Xb∣)(7)\mid x_i(t+1)=X^b+S \times g \times\left(\left|x_i(t)-X^*\right|+\left|x_i(t)-X^b\right|\right) \tag{7} xi?(t+1)=Xb+S×g×(xi?(t)?X?+?xi?(t)?Xb?)(7)
其中, xi(t)x_i(t)xi?(t) 表示第 iii 個偷竊蛻螂在第 ttt 次迭代時的位置信息, ggg 是一個大小為 1×D1 \times \mathrm{D}1×D 維的隨機向 量, 服從于正態分布, SSS 表示恒定值。

圖3 邊界選擇策略的概念模型

偷竊蜣螂在優化過程中位置不斷更新, 最后輸出最佳位置 XbX^bXb 。根據此算法 更具體地說, 在 DBO\mathrm{DBO}DBO 算法中, 一個蛻螂種群包括 N\mathrm{N}N 種目標代理, 其中代理 iii 都代表一組候選 解, 第 iii 個代理的位置向量用 xi(t)x_i(t)xi?(t) 表示, xi(t)=(xi1(t),xi2(t),……,xiD(t))x_i(t)=\left(x_{i 1}(t), x_{i 2}(t), \ldots \ldots, x_{i D}(t)\right)xi?(t)=(xi1?(t),xi2?(t),,xiD?(t)), 其中, DDD 為搜索 空間的維數。它們的分布比例沒有指定, 可以根據實際應用問題進行設置。

1.2 計算步驟

DBO 算法作為一種新穎的基于 SI 的優化技術, 主要有六個步驟:
(1) 初始化蜣螂群和 DBO 算法的參數;
(2) 根據目標函數計算出所有目標代理的適應度值;
(3) 更新所有蟯螂的位置;
(4) 判斷每個目標代理是否超出邊界;
(5) 更新當前最優解及其適應度值;
(6) 重復上述步驟, 直到 t 滿足終止準則, 輸出全局最優解及其適應度值。

2.實驗結果

3.參考文獻

[1] Jiankai Xue & Bo Shen (2022) Dung beetle optimizer: a new meta-heuristic algorithm for global optimization. The Journal of Supercomputing, DOI:10.1007/s11227-022-04959-6

4.Matlab

5.Python

總結

以上是生活随笔為你收集整理的智能优化算法:蜣螂优化算法-附代码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。