智能優(yōu)化算法:松鼠優(yōu)化算法

智能優(yōu)化算法:松鼠優(yōu)化算法

@[toc]
摘要:松鼠優(yōu)化算法是于2018年提出的一種簡單高效的新型優(yōu)化算法,具有收斂快尋優(yōu)強(qiáng)的特點(diǎn)。

1.算法原理

飛行松鼠是一類棲息在樹上并在夜間進(jìn)行活動的嚙齒動物,它們特別適合滑翔運(yùn)動。目前,飛行松鼠共有15屬44種,其中大部分分布在歐洲和亞洲的落葉林區(qū)(特別是東南亞)。在歐亞大陸以外發(fā)現(xiàn)的、研究最多的是南部飛行松鼠。飛行松鼠被認(rèn)為是空氣動力學(xué)上最復(fù)雜的物種,它有一個類似降落傘的膜,可以幫助松鼠改變升力和阻力,在高空中從一棵樹滑翔到另一棵樹。飛行松鼠不會飛行,而是采用滑翔方式快速和有效地跨越很長的距離。松鼠之所以要滑翔,是為了躲避捕食者、尋找捕食的最佳地點(diǎn)和以較小的代價進(jìn)行捕食。

飛行松鼠的覓食策略靈活多變,這可以幫助飛行松鼠以最佳的方式應(yīng)對食物資源。比如,松鼠為了滿足秋季的營養(yǎng)需求,它們選擇吃掉可以大量獲取的橡樹籽,將山核桃存儲在巢穴里、其他洞穴中或者地底下。由于冬季溫度低且營養(yǎng)需求較高,飛行松鼠在覓食時如發(fā)現(xiàn)山核桃就立刻慈鯛,如果沒有山核桃,飛行松鼠會從儲存的備用食物中吃山核桃。因此,飛行松鼠根據(jù)營養(yǎng)需求,有選擇地吃一些堅果和儲存其他堅果。

為了簡化數(shù)學(xué)模型,考慮以下假設(shè)。落葉森林中有 n只松鼠,每只松鼠停留在一棵樹上。每只松鼠都單獨(dú)尋找食物,并通過動態(tài)覓食行為來優(yōu)化利用食物資源。在森林中,只有三種類型的樹 —普通樹、橡樹和山核桃樹。飛行松鼠的位置在SSA算法中由向量表示,每個向量有多個維度。因此,飛行松鼠可以在一維、二維、三維或超維搜索空間中滑行來改變它們自身的位置。

1.1 種群初始化

森林中有n只飛鼠,第i只松鼠的位置可以通過一個矢量來確定。所有松鼠的位置在邊界范圍內(nèi)隨機(jī)初始化,如下式:
FS_{i,j}=lb+rand*(ub - lb) \tag{1}
FS_{i,j}代表第i只松鼠第j維的值。ub,lb分別為變量的上下邊界。rand為[0,1]之間的隨機(jī)數(shù)。

1.2 適應(yīng)度值評價

每只松鼠位置的適應(yīng)值描述了食物源的等級,即最佳食物源(山核桃樹)、正常食物源(橡樹)和無食物來源(普通樹)。在存儲了每只松鼠的位置的適應(yīng)值后,數(shù)組按升序排序。最小適應(yīng)值的松鼠停留在山核桃樹上,接下來的三只松鼠停留在橡樹上,它們可以向山核桃樹飛行,其余的松鼠停留在普通樹上。通過隨機(jī)選擇方式,選擇已經(jīng)滿足每日所需能量的松鼠朝著山核桃樹移動,剩余的松鼠將朝著橡樹移動以獲取每日所需能量。松鼠的覓食行為會受到天敵的影響,松鼠具體采用哪種移動策略也要根據(jù)天敵的出現(xiàn)概率(Pdp)而定。

1.3 生成新位置

在飛行松鼠的覓食過程中,可能會出現(xiàn)三種情況。在每種情況下,假設(shè)在沒有天敵的情況下,松鼠在整個森林中滑行并高效地搜尋它最喜歡的食物,而天敵的存在使它變得謹(jǐn)慎,松鼠被迫在小范圍內(nèi)隨機(jī)行走,來搜尋附近的躲藏地點(diǎn)。

①第一種情況,在橡樹上的松鼠會向山核桃樹移動
FS_{at}^{t+1}=\begin{cases} FS_{at}^t + d_g*G_c*(FS_{ht}^t - FS_{at}^t),R_1\geq P_{dp}\\ Random Location,otherwise \end{cases}\tag{2}
其中 d_g 是隨機(jī)滑行距離,R_1是[0,1]范圍內(nèi)的隨機(jī)數(shù), FS_{ht}^t是山核桃樹的位置,t表示當(dāng)前迭代?;瑒映?shù)G_c 實現(xiàn)全局與局部搜索之間的平衡,經(jīng)過大量分析論證,G_c 的值設(shè)為1.9。

②第二種情況,在普通樹上的松鼠會向橡樹移動
FS_{nt}^{t+1}=\begin{cases} FS_{nt}^t + d_g*G_c*(FS_{at}^t - FS_{nt}^t),R_2\geq P_{dp}\\ Random Location,otherwise \end{cases}\tag{3}
R_2是[0,1]范圍內(nèi)的隨機(jī)數(shù)。

③第三種情況,一些在普通樹上的松鼠已經(jīng)吃了橡果,它們可能會向山核桃樹移動以便儲存山核桃來應(yīng)對食物短缺。
FS_{nt}^{t+1}=\begin{cases} FS_{nt}^t + d_g*G_c*(FS_{ht}^t - FS_{nt}^t),R_3\geq P_{dp}\\ Random Location,otherwise \end{cases} \tag{4}
R_3是[0,1]范圍內(nèi)的隨機(jī)數(shù)。

所有情況下,天敵出現(xiàn)的概率都為0.1。

1.4 滑翔的空氣動力學(xué)

松鼠的滑行機(jī)制是通過平衡滑行來描述的,升力(L)和阻力(D)之和產(chǎn)生一個合力(R),該合力與飛鼠的重力大小相等且方向相反。因此,R以恒定速度(V)保證松鼠能夠在直線上與水平面成一定角度 \phi下降滑行。升阻比或滑行比定義如下:
L/D=1/tan\phi \tag{5}
松鼠可以通過減小下滑角來增加滑行路徑長度,從而提高升阻比。升力是空氣撞擊膜產(chǎn)生了向下的偏轉(zhuǎn)而產(chǎn)生的反推力的結(jié)果,定義為:
L=1/2\rho C_LV^2S \tag{6}
其中( ρ = 1.204 kg/m^3 )為空氣密度,C_L 稱為升力系數(shù),V =5.25 m/s為速度,S =0.0154 m^2 )為松鼠膜表面積。
D=1/2\rho V^2SC_D\tag{7}
C_D 是摩擦阻力系數(shù),低速移動時松鼠增加阻力,高速移動時松鼠減小阻力。
\phi = arctan(L/D) \tag{8}

d_g=\frac{h_g}{tan\phi}\tag{9}

其中h_g =8m是滑行后發(fā)生的高度減少量,計算d_g 所需的所有參數(shù)值,包括C_LC_D ,都是來自于自然界的真實測量值。因此,松鼠可以根據(jù)著陸位置,簡單地改變升阻比來改變其滑行路徑長度或d_g 。C_L的取值為[0.675,1.5]之間的某個值,C_D的值為0.6。飛行松鼠通常在一次滑行中行進(jìn)5到25米的水平距離,在SSA算法模型中,滑行距離在9~20米的范圍內(nèi)。d_g 的值過大會引起大的擾動,可能導(dǎo)致算法的性能不能令人滿意。因此將d g 除以一個稱為比例因子(sf)的非零值,sf = 18使得d_g 在[0.5,1.11]區(qū)間內(nèi)浮動。因此,sf有助于實現(xiàn)全局搜索和局部尋優(yōu)之間的均衡狀態(tài)。

1.5 季節(jié)變化條件

季節(jié)變化會顯著影響飛行松鼠的覓食活動,松鼠在低溫條件下會損失大量熱量。因為它們的體溫高、體型小,導(dǎo)致覓食過程的代價很大,并且由于天敵的存在而具有風(fēng)險。與秋天相比,氣候條件迫使它們在冬天不太活躍。在SSA算法中通過檢查季節(jié)變化條件,防止算法陷入局部最優(yōu)。

①計算季節(jié)常量S_c
S_c^t=\sqrt{\sum_{z=1}^3 \sum_{k=1}^d(FS_{at,k}^{t,z} - FS_{ht,k})^2} \tag{10}
②計算季節(jié)變化條件S_c^t<S_{min}
S_{min}=\frac{10E^-6}{365^{2.5t/t_m}}\tag{11}
其中tt_m分別是當(dāng)前和最大迭代值,S_min 值影響算法的全局和局部搜索能力。S_min 的值較大會有利于全局搜索,而S_min 的較小值有利于算法的局部搜索。對于任何啟發(fā)式算法,全局和局部搜索過程需要進(jìn)行有效的平衡。這種平衡可以通過滑動常數(shù)G_c 來維持也可以通過在迭代過程中自適應(yīng)地
改變S_{min} 的值來實現(xiàn)。

③如果季節(jié)變化條件得到滿足(冬天結(jié)束),則隨機(jī)改變普通樹上松鼠的位置。
FS_{nt,i}^{t+1}=FS_{i,L}+Levy(FS_{i,U}-FS_{i,L})\tag{12}
列維分布(Levy distribution)能夠幫助算法以更好和更有效的方式進(jìn)行全局搜索,列維飛行(Levy flight)幫助算法尋找遠(yuǎn)離當(dāng)前最佳位置的新位置。列維飛行是一種隨機(jī)改變步長的方法,其中步長是從列維分布中得出的。
Levy = 0.01\frac{r_a*\sigma}{|r_b|^{1/\beta}} \tag{13}
其中r_ar_b是[0,1]區(qū)間上的兩個正態(tài)分布隨機(jī)數(shù), β =1.5,σ 計算如下:
\sigma = (\frac{\Gamma(1+\beta)*sin(\pi\beta/2)}{\Gamma(\frac{1+\beta}{2})*\beta*2^{((\beta-1)/2)}})^{1/\beta} \tag{14}
算法步驟

1)定義輸入?yún)?shù)
2)為n只松鼠生成隨機(jī)位置
3)評估每只松鼠位置的適應(yīng)值
4)根據(jù)飛行松鼠的適應(yīng)值,按升序排列它們的位置
5)將飛行松鼠分配到山核桃樹、橡子樹和普通樹
6)While(不滿足停止準(zhǔn)則)
8)for z=1 to n1(橡樹上向山核桃樹移動的松鼠數(shù)量)
9)利用公式(2)更新松鼠位置
10)for u=1 to n2(普通樹上向橡樹移動的松鼠數(shù)量)
11)利用公式(3)更新松鼠位置
12)for e=1 to n3(普通樹上向山核桃樹移動的松鼠數(shù)量)
13)利用公式(4)更新松鼠位置
14)計算松鼠適應(yīng)值,升序排列位置,將飛行松鼠分配到
山核桃樹、橡子樹和普通樹
15)判斷季節(jié)變化條件是否滿足,滿足則根據(jù)公式(14-
16)更新普通樹上松鼠位置
16)根據(jù)公式(13)更新S_min 的值
17)計算松鼠適應(yīng)值,升序排列位置,將飛行松鼠分配到
山核桃樹、橡子樹和普通樹
18)程序While循環(huán)結(jié)束,輸出山核桃樹上松鼠的位置和
適應(yīng)值。

2.實驗結(jié)果

實驗結(jié)果

3.參考文獻(xiàn)

[1]韓毅,徐梓斌,張亮.國外新型智能優(yōu)化算法——松鼠覓食算法[J].現(xiàn)代營銷(信息版),2019(09):44-45.

4.Matlab代碼

https://mianbaoduo.com/o/bread/YZmUlp9x

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 那年秋天,因為有段時日沒登山了,再加上感冒初愈。累,便像只討厭的蚊子,死纏爛打地甩不掉。翻過了一座不大的山嶺,我家...
    萍一簡閱讀 597評論 8 20
  • 很多家長,對于如何幫助孩子提高寫作水平,一直有很多的苦惱。 少年口才界在7月的“小小編劇王”主題月活動中,通過“改...
    Leah82閱讀 269評論 0 0
  • 正是深秋。周五下午,永喜回家對爸爸媽媽說,明天和同學(xué)約好了進(jìn)山采山貨。弟弟首先高興地蹦了起來,說他也要去。永喜眼睛...
    學(xué)生黨AT夢栗樹閱讀 577評論 0 2
  • 當(dāng)我們局限在書本里,雖然那是最精選的,古典的作品,而且只限于讀一種特殊的語文,它們本身只是口語和方言,那時我們就有...
    簡書茶館葉老板閱讀 1,905評論 2 21
  • 表情是什么,我認(rèn)為表情就是表現(xiàn)出來的情緒。表情可以傳達(dá)很多信息。高興了當(dāng)然就笑了,難過就哭了。兩者是相互影響密不可...
    Persistenc_6aea閱讀 129,536評論 2 7

友情鏈接更多精彩內(nèi)容