2020智能優(yōu)化算法:麻雀搜索算法

2020智能優(yōu)化算法:麻雀搜索算法

1.算法原理

建立麻雀搜索算法的數(shù)學(xué)模型牛曹,主要規(guī)則如下所述:

  1. 發(fā)現(xiàn)者通常擁有較高的能源儲備并且在整個種群中負(fù)責(zé)搜索到具有豐富食物的區(qū)域搪搏,為所有的加入者提供覓食的區(qū)域和方向契讲。在模型建立中能量儲備的高低取決于麻雀個體所對應(yīng)的適應(yīng)度值(Fitness Value)的好壞身诺。
  2. 一旦麻雀發(fā)現(xiàn)了捕食者米碰,個體開始發(fā)出鳴叫作為報警信號锈拨。當(dāng)報警值大于安全值時敛腌,發(fā)現(xiàn)者會將加入者帶到其它安全區(qū)域進(jìn)行覓食祭饭。
  3. 發(fā)現(xiàn)者和加入者的身份是動態(tài)變化的瓮床。只要能夠?qū)ふ业礁玫氖澄飦碓错镂瑁恐宦槿付伎梢猿蔀榘l(fā)現(xiàn)者产镐,但是發(fā)現(xiàn)者和加入者所占整個種群數(shù)量的比重是不變的。也就是說踢步,有一只麻雀變成發(fā)現(xiàn)者必然有另一只麻雀變成加入者癣亚。
  4. 加入者的能量越低,它們在整個種群中所處的覓食位置就越差获印。一些饑腸轆轆的加入者更有可能飛往其它地方覓食逃糟,以獲得更多的能量。
  5. 在覓食過程中蓬豁,加入者總是能夠搜索到提供最好食物的發(fā)現(xiàn)者绰咽,然后從最好的食物中獲取食物或者在該發(fā)現(xiàn)者周圍覓食。與此同時地粪,一些加入者為了增加自己的捕食率可能會不斷地監(jiān)控發(fā)現(xiàn)者進(jìn)而去爭奪食物資源取募。
  6. 當(dāng)意識到危險時,群體邊緣的麻雀會迅速向安全區(qū)域移動蟆技,以獲得更好的位置玩敏,位于種群中間的麻雀則會隨機(jī)走動,以靠近其它麻雀质礼。

在模擬實驗中旺聚,我們需要使用虛擬麻雀進(jìn)行食物的尋找,由n只麻雀組成的種群可表示為如下形式:
X=\left[\begin{matrix} x_1^1&x_1^2&...&x_1^d\\ x_2^1&x_2^2&...&x_2^d\\ ...&...&...&...\\ x_n^1&x_n^2&...&x_n^d\\ \end{matrix}\right]\tag{1}
其中眶蕉,d 表示待優(yōu)化問題變量的維數(shù)砰粹,n 則是麻雀的數(shù)量。那么造挽,所有麻雀的適應(yīng)度值可以表示為如下形式:
F_x =\left[\begin{matrix} f([x_1^1&x_1^2&...&x_1^d])\\ f([x_2^1&x_2^2&...&x_2^d])\\ &...&\\ f([x_n^1&x_n^2&...&x_n^d]) \end{matrix}\right]\tag{2}
其中碱璃,f 表示適應(yīng)度值。

在 SSA 中饭入,具有較好適應(yīng)度值的發(fā)現(xiàn)者在搜索過程中會優(yōu)先獲取食物嵌器。此外,因為發(fā)現(xiàn)者負(fù)責(zé)為整個麻雀種群尋找食物并為所有加入者提供覓食的方向谐丢。因此爽航,發(fā)現(xiàn)者可以獲得比加入者更大的覓食搜索范圍。根據(jù)規(guī)則(1)和規(guī)則(2)乾忱,在每次迭代的過程中讥珍,發(fā)現(xiàn)者的位置更新描述如下:
X_{i,j}^{t+1}=\begin{cases} X_{i,j}.exp(-\frac{i}{\alpha.iter_{max}}),if\, R_2<ST\\ X_{i,j} + Q.L,if\, R_2\geq ST \end{cases}\tag{3}
其中,t 代表當(dāng)前迭代數(shù)饭耳,j =1, 2, 3, . . . , d串述。item_{max}
是一個常數(shù)执解,表示最大的迭代次數(shù)寞肖。X_{ij}表示第 i 個麻雀在第j 維中的位置信息纲酗。α∈(0, 1]是一個隨機(jī)數(shù)。R_2(R_2∈[0,1])ST(ST∈[0.5,1])分別表示預(yù)警值和安全值新蟆。Q 是服從正態(tài)分布的隨機(jī)數(shù)觅赊。L 表示一個 1×d 的矩陣,其中該矩陣內(nèi)每個元素全部為 1琼稻。

當(dāng) R2< ST 時吮螺,這意味著此時的覓食環(huán)境周圍沒有捕食者,發(fā)現(xiàn)者可以執(zhí)行廣泛的搜索操作帕翻。如果 R2≥ ST鸠补,這表示種群中的一些麻雀已經(jīng)發(fā)現(xiàn)了捕食者,并向種群中其它麻雀發(fā)出了警報嘀掸,此時所有麻雀都需要迅速飛到其它安全的地方進(jìn)行覓食紫岩。

對于加入者,它們需要執(zhí)行規(guī)則(3)和規(guī)則(4)睬塌。如前面所描述泉蝌,在覓食過程中,一些加入者會時刻監(jiān)視著發(fā)現(xiàn)者揩晴。一旦它們察覺到發(fā)現(xiàn)者已經(jīng)找到了更好的食物勋陪,它們會立即離開現(xiàn)在的位置去爭奪食物。如果它們贏了硫兰,它們可以立即獲得該發(fā)現(xiàn)者的食物诅愚,否則需要繼續(xù)執(zhí)行規(guī)則(4)。加入者的位置更新描述如下:
X_{i,j}^{t+1}=\begin{cases} Q.exp(\frac{X_{worst}-X_{i,j}^t}{i^2}),if\, i>n/2\\ X_P^{t+1}+ |X_{i,j} - X_P^{t+1}|.A^{+}.L,otherwise \end{cases}\tag{4}
其中劫映,X_p是目前發(fā)現(xiàn)者所占據(jù)的最優(yōu)位置呻粹,X_{worst}則表示當(dāng)前全局最差的位置。A表示一個 1×d 的矩陣苏研,其中每個元素隨機(jī)賦值為 1 或-1等浊,并且 A^+=A^T(AA^T)^{-1}。當(dāng)i >n/2 時摹蘑,這表明筹燕,適應(yīng)度值較低的第 i 個加入者沒有獲得食物,處于十分饑餓的狀態(tài)衅鹿,此時需要飛往其它地方覓食撒踪,以獲得更多的能量。

在模擬實驗中大渤,我們假設(shè)這些意識到危險的麻雀占總數(shù)量的 10% 到 20%制妄。這些麻雀的初始位置是在種群中隨機(jī)產(chǎn)生的。根據(jù)規(guī)則(5)泵三,其數(shù)學(xué)表達(dá)式可以表示為如下形式:
X_{i,j}^{t+1}=\begin{cases} X_{best}^t + \beta.|X_{i,j}^t - X_{best}^t|,if\, f_i>f_g\\ X_{i,j}^t + K.(\frac{|X_{i,j}^t - X_{worst}^t|}{(f_i -f_w)+\varepsilon}), if\, f_i =f_g\\ \end{cases}\tag{5}
其中耕捞,其中 X_{best}是當(dāng)前的全局最優(yōu)位置衔掸。β 作為步長控制參數(shù),是服從均值為 0俺抽,方差為 1 的正態(tài)分布的隨機(jī)數(shù)敞映。K∈[-1,1]是一個隨機(jī)數(shù),fi則是當(dāng)前麻雀個體的適應(yīng)度值磷斧。f_gf_w分別是當(dāng)前全局最佳和最差的適應(yīng)度值振愿。\varepsilon 的常數(shù),以避免分母出現(xiàn)零弛饭。

為簡單起見冕末,當(dāng) f_i >f_g表示此時的麻雀正處于種群的邊緣,極其容易受到捕食者的攻擊侣颂。X_{best}表示這個位置的麻雀是種群中最好的位置也是十分安全的栓霜。f_i = f_g時,這表明處于種群中間的麻雀意識到了危險横蜒,需要靠近其它的麻雀以此盡量減少它們被捕食的風(fēng)險胳蛮。K 表示麻雀移動的方向同時也是步長控制參數(shù)。

算法流程

Step1: 初始化種群丛晌,迭代次數(shù)仅炊,初始化捕食者和加入者比列。

Step2:計算適應(yīng)度值澎蛛,并排序抚垄。

Step3:利用式(3)更新捕食者位置。

Step4:利用式(4)更新加入者位置谋逻。

Step5:利用式(5)更新警戒者位置呆馁。

Step6:計算適應(yīng)度值并更新麻雀位置。

Step7:是否滿足停止條件毁兆,滿足則退出浙滤,輸出結(jié)果,否則气堕,重復(fù)執(zhí)行Step2-6纺腊;

2.算法結(jié)果

算法結(jié)果

3.參考文獻(xiàn)

[1] Xue J , Shen B . A novel swarm intelligence optimization approach: sparrow search algorithm[J]. Systems ence & Control Engineering An Open Access Journal, 2020, 8(1):22-34.

4.Matlab代碼

麻雀搜索算法
https://mianbaoduo.com/o/bread/aJybk5w=
改進(jìn)算法:
1.基于反向策略的麻雀搜索算法
https://mianbaoduo.com/o/bread/mbd-aZqUl54=

2.基于Tent混沌映射的麻雀搜索算法
https://mianbaoduo.com/o/bread/mbd-aZqVk5Y=

3.基于Logistic混沌映射的麻雀搜索算法
https://mianbaoduo.com/o/bread/mbd-aZqVk5c=

4.基于Circle混沌映射的麻雀搜索算法
https://mianbaoduo.com/o/bread/mbd-aZqVk5g=

5.基于Piecewise混沌映射的麻雀搜索算法
https://mianbaoduo.com/o/bread/mbd-aZqVk5k=

6.基于Chebyshev混沌映射的麻雀搜索算法
https://mianbaoduo.com/o/bread/mbd-aZqVk5o=

7.基于Sine混沌映射的麻雀搜索算法
https://mianbaoduo.com/o/bread/mbd-aZqWk50=

8.基于Singer混沌映射的麻雀搜索算法
https://mianbaoduo.com/o/bread/mbd-aZqWk54=

9.基于迭代混沌映射的麻雀搜索算法
https://mianbaoduo.com/o/bread/mbd-aZqWk58=

10.基于Sinusoidal混沌映射的麻雀搜索算法
https://mianbaoduo.com/o/bread/mbd-aZqWlJY=

11.基于隨機(jī)游走改進(jìn)的麻雀搜索算法
https://mianbaoduo.com/o/bread/mbd-aZuXmJc=

12.基于螢火蟲改進(jìn)的麻雀搜索算法
https://mianbaoduo.com/o/bread/mbd-aZuZmJk=

13.基于精英反向策略的麻雀搜索算法1
https://mianbaoduo.com/o/bread/mbd-aZycl5Y=

14.基于levy飛行改進(jìn)的麻雀搜索算法
https://mianbaoduo.com/o/bread/mbd-aZqZlZg=

15.基于自適應(yīng)t分布的麻雀算法
https://mianbaoduo.com/o/bread/YZWVlp5v

改進(jìn)麻雀文獻(xiàn)復(fù)現(xiàn)代碼:
1.混沌麻雀。
參考文獻(xiàn):[1]呂鑫,慕曉冬,張鈞,王震.混沌麻雀搜索優(yōu)化算法[J/OL].北京航空航天大學(xué)學(xué)報:1-10[2020-11-16].https://doi.org/10.13700/j.bh.1001-5965.2020.0298.
https://mianbaoduo.com/o/bread/aZ2alZc=
2.融合柯西變異和反向?qū)W習(xí)的改進(jìn)麻雀算法
[1]毛清華,張強(qiáng).融合柯西變異和反向?qū)W習(xí)的改進(jìn)麻雀算法[J/OL].計算機(jī)科學(xué)與探索:1-12[2020-12-16].http://kns.cnki.net/kcms/detail/11.5602.tp.20201203.1601.006.html.
https://mianbaoduo.com/o/bread/YZWYlZlp
3. 混合正弦余弦算法和Lévy飛行的麻雀算法(ISSA)
[1]毛清華,張強(qiáng),毛承成,柏嘉旋.混合正弦余弦算法和Lévy飛行的麻雀算法[J/OL].山西大學(xué)學(xué)報(自然科學(xué)版):1-6[2021-04-09].https://doi.org/10.13451/j.sxu.ns.2020135.
4.基于 Sobol 序列和縱橫交叉策略的麻雀搜索算法(SSASC)
[1]段玉先,劉昌云.基于 Sobol 序列和縱橫交叉策略的麻雀搜索算法[J/OL].計算機(jī)應(yīng)用. https://kns.cnki.net/kcms/detail/51.1307.TP.20210525.1453.002.html

5.Python代碼

https://mianbaoduo.com/o/bread/mbd-aZuTk50=
改進(jìn)算法:
基于Sinusoidal混沌映射的麻雀搜索算法 python 代碼 https://mianbaoduo.com/o/bread/aZ6am5k=

基于迭代混沌映射的麻雀搜索算法 python 代碼 https://mianbaoduo.com/o/bread/aZ6am5Y=

基于Singer混沌映射的麻雀搜索算法 python 代碼 https://mianbaoduo.com/o/bread/aZ6amp4=

基于Sine混沌映射的麻雀搜索算法 python代碼 https://mianbaoduo.com/o/bread/aZ6amp0=

基于Piecewise混沌映射的麻雀搜索算法 python代碼 https://mianbaoduo.com/o/bread/aZ6ampo=

基于Logistic混沌映射的麻雀搜索算法 python 代碼 https://mianbaoduo.com/o/bread/aZ6ampc=

基于Circle混沌映射的麻雀搜索算法 python 代碼 https://mianbaoduo.com/o/bread/aZ6amZ8=

基于Chebyshev混沌映射的麻雀搜索算法 python代碼 https://mianbaoduo.com/o/bread/aZ6amZ4=

基于Tent混沌映射的麻雀搜索算法 python代碼 https://mianbaoduo.com/o/bread/aZ6amZs=

基于反向策略的麻雀搜索算法 python代碼 https://mianbaoduo.com/o/bread/aZ6bmp0=

基于精英反向策略的麻雀搜索算法1 python代碼 https://mianbaoduo.com/o/bread/aZ6bmp4=

基于精英反向策略的麻雀搜索算法2 python 代碼 https://mianbaoduo.com/o/bread/aZ6bm5c=

基于螢火蟲改進(jìn)的麻雀搜索算法 python代碼 https://mianbaoduo.com/o/bread/aZ6bm5g=

基于levy飛行改進(jìn)的麻雀搜索算法 python 代碼 https://mianbaoduo.com/o/bread/aZ6bm5o=

基于隨機(jī)游走改進(jìn)的麻雀搜索算法
https://mianbaoduo.com/o/bread/YZaXmpxs

基于自適應(yīng)t分布的麻雀搜索算法
https://mianbaoduo.com/o/bread/YZWVm5ls
改進(jìn)麻雀文獻(xiàn)復(fù)現(xiàn)代碼:
1.混沌麻雀茎芭。
參考文獻(xiàn):[1]呂鑫,慕曉冬,張鈞,王震.混沌麻雀搜索優(yōu)化算法[J/OL].北京航空航天大學(xué)學(xué)報:1-10[2020-11-16].https://doi.org/10.13700/j.bh.1001-5965.2020.0298.

2.混合正弦余弦算法和Lévy飛行的麻雀算法(ISSA)
[1]毛清華,張強(qiáng),毛承成,柏嘉旋.混合正弦余弦算法和Lévy飛行的麻雀算法[J/OL].山西大學(xué)學(xué)報(自然科學(xué)版):1-6[2021-04-09].https://doi.org/10.13451/j.sxu.ns.2020135.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末揖膜,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子梅桩,更是在濱河造成了極大的恐慌壹粟,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,366評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件宿百,死亡現(xiàn)場離奇詭異趁仙,居然都是意外死亡洪添,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評論 3 395
  • 文/潘曉璐 我一進(jìn)店門幸撕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人外臂,你說我怎么就攤上這事坐儿。” “怎么了宋光?”我有些...
    開封第一講書人閱讀 165,689評論 0 356
  • 文/不壞的土叔 我叫張陵貌矿,是天一觀的道長。 經(jīng)常有香客問我罪佳,道長逛漫,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,925評論 1 295
  • 正文 為了忘掉前任赘艳,我火速辦了婚禮酌毡,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蕾管。我一直安慰自己枷踏,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,942評論 6 392
  • 文/花漫 我一把揭開白布掰曾。 她就那樣靜靜地躺著旭蠕,像睡著了一般。 火紅的嫁衣襯著肌膚如雪旷坦。 梳的紋絲不亂的頭發(fā)上掏熬,一...
    開封第一講書人閱讀 51,727評論 1 305
  • 那天,我揣著相機(jī)與錄音秒梅,去河邊找鬼旗芬。 笑死,一個胖子當(dāng)著我的面吹牛捆蜀,可吹牛的內(nèi)容都是我干的岗屏。 我是一名探鬼主播,決...
    沈念sama閱讀 40,447評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼漱办,長吁一口氣:“原來是場噩夢啊……” “哼这刷!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起娩井,我...
    開封第一講書人閱讀 39,349評論 0 276
  • 序言:老撾萬榮一對情侶失蹤暇屋,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后洞辣,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體咐刨,經(jīng)...
    沈念sama閱讀 45,820評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡昙衅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,990評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了定鸟。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片而涉。...
    茶點(diǎn)故事閱讀 40,127評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖联予,靈堂內(nèi)的尸體忽然破棺而出啼县,到底是詐尸還是另有隱情,我是刑警寧澤沸久,帶...
    沈念sama閱讀 35,812評論 5 346
  • 正文 年R本政府宣布季眷,位于F島的核電站,受9級特大地震影響卷胯,放射性物質(zhì)發(fā)生泄漏子刮。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,471評論 3 331
  • 文/蒙蒙 一窑睁、第九天 我趴在偏房一處隱蔽的房頂上張望挺峡。 院中可真熱鬧,春花似錦担钮、人聲如沸沙郭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽病线。三九已至,卻和暖如春鲤嫡,著一層夾襖步出監(jiān)牢的瞬間送挑,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評論 1 272
  • 我被黑心中介騙來泰國打工暖眼, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留惕耕,地道東北人。 一個月前我還...
    沈念sama閱讀 48,388評論 3 373
  • 正文 我出身青樓诫肠,卻偏偏與公主長得像司澎,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子栋豫,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,066評論 2 355

推薦閱讀更多精彩內(nèi)容