智能優(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ī)初始化,如下式:
代表第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)。
①第一種情況,在橡樹上的松鼠會向山核桃樹移動
其中 是隨機(jī)滑行距離,
是[0,1]范圍內(nèi)的隨機(jī)數(shù),
是山核桃樹的位置,
表示當(dāng)前迭代?;瑒映?shù)
實現(xiàn)全局與局部搜索之間的平衡,經(jīng)過大量分析論證,
的值設(shè)為1.9。
②第二種情況,在普通樹上的松鼠會向橡樹移動
是[0,1]范圍內(nèi)的隨機(jī)數(shù)。
③第三種情況,一些在普通樹上的松鼠已經(jīng)吃了橡果,它們可能會向山核桃樹移動以便儲存山核桃來應(yīng)對食物短缺。
是[0,1]范圍內(nèi)的隨機(jī)數(shù)。
所有情況下,天敵出現(xiàn)的概率都為0.1。
1.4 滑翔的空氣動力學(xué)
松鼠的滑行機(jī)制是通過平衡滑行來描述的,升力(L)和阻力(D)之和產(chǎn)生一個合力(R),該合力與飛鼠的重力大小相等且方向相反。因此,R以恒定速度(V)保證松鼠能夠在直線上與水平面成一定角度 下降滑行。升阻比或滑行比定義如下:
松鼠可以通過減小下滑角來增加滑行路徑長度,從而提高升阻比。升力是空氣撞擊膜產(chǎn)生了向下的偏轉(zhuǎn)而產(chǎn)生的反推力的結(jié)果,定義為:
其中( )為空氣密度,
稱為升力系數(shù),
為速度,
)為松鼠膜表面積。
是摩擦阻力系數(shù),低速移動時松鼠增加阻力,高速移動時松鼠減小阻力。
其中是滑行后發(fā)生的高度減少量,計算
所需的所有參數(shù)值,包括
和
,都是來自于自然界的真實測量值。因此,松鼠可以根據(jù)著陸位置,簡單地改變升阻比來改變其滑行路徑長度或
。
的取值為[0.675,1.5]之間的某個值,
的值為0.6。飛行松鼠通常在一次滑行中行進(jìn)5到25米的水平距離,在SSA算法模型中,滑行距離在9~20米的范圍內(nèi)。
的值過大會引起大的擾動,可能導(dǎo)致算法的性能不能令人滿意。因此將d g 除以一個稱為比例因子(
)的非零值,
= 18使得
在[0.5,1.11]區(qū)間內(nèi)浮動。因此,
有助于實現(xiàn)全局搜索和局部尋優(yōu)之間的均衡狀態(tài)。
1.5 季節(jié)變化條件
季節(jié)變化會顯著影響飛行松鼠的覓食活動,松鼠在低溫條件下會損失大量熱量。因為它們的體溫高、體型小,導(dǎo)致覓食過程的代價很大,并且由于天敵的存在而具有風(fēng)險。與秋天相比,氣候條件迫使它們在冬天不太活躍。在SSA算法中通過檢查季節(jié)變化條件,防止算法陷入局部最優(yōu)。
①計算季節(jié)常量
②計算季節(jié)變化條件
其中和
分別是當(dāng)前和最大迭代值,
值影響算法的全局和局部搜索能力。
的值較大會有利于全局搜索,而
的較小值有利于算法的局部搜索。對于任何啟發(fā)式算法,全局和局部搜索過程需要進(jìn)行有效的平衡。這種平衡可以通過滑動常數(shù)
來維持也可以通過在迭代過程中自適應(yīng)地
改變 的值來實現(xiàn)。
③如果季節(jié)變化條件得到滿足(冬天結(jié)束),則隨機(jī)改變普通樹上松鼠的位置。
列維分布(Levy distribution)能夠幫助算法以更好和更有效的方式進(jìn)行全局搜索,列維飛行(Levy flight)幫助算法尋找遠(yuǎn)離當(dāng)前最佳位置的新位置。列維飛行是一種隨機(jī)改變步長的方法,其中步長是從列維分布中得出的。
其中 和
是[0,1]區(qū)間上的兩個正態(tài)分布隨機(jī)數(shù), β =1.5,σ 計算如下:
算法步驟
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)更新 的值
17)計算松鼠適應(yīng)值,升序排列位置,將飛行松鼠分配到
山核桃樹、橡子樹和普通樹
18)程序While循環(huán)結(jié)束,輸出山核桃樹上松鼠的位置和
適應(yīng)值。
2.實驗結(jié)果
3.參考文獻(xiàn)
[1]韓毅,徐梓斌,張亮.國外新型智能優(yōu)化算法——松鼠覓食算法[J].現(xiàn)代營銷(信息版),2019(09):44-45.