優(yōu)化算法筆記(十一)群搜索算法

1. 群搜索算法簡(jiǎn)介

(以下描述,均不是學(xué)術(shù)用語(yǔ),僅供大家快樂(lè)的閱讀)
  群搜索算法(Group Search Optimizer)是一種基于發(fā)現(xiàn)者,跟隨者,游蕩者模型而產(chǎn)生的算法。算法模型較為復(fù)雜,提出時(shí)間也不長(zhǎng),對(duì)于其的深度研究相對(duì)較少,但也有一定的應(yīng)用研究。
  在群搜索算法中,每個(gè)個(gè)體的位置表示解空間內(nèi)的一個(gè)可行解。根據(jù)位置的優(yōu)劣可以將種群分為發(fā)現(xiàn)者,跟隨者,游蕩者。其中當(dāng)前的最優(yōu)個(gè)體為發(fā)現(xiàn)者,它將在它自身周?chē)褜ぃ渌麄€(gè)體按照一定的比例分為跟隨者和游蕩者,跟隨者將在跟隨發(fā)現(xiàn)者的同時(shí)進(jìn)行搜索,而游蕩者則自行隨機(jī)行動(dòng)。每個(gè)個(gè)體的頭部方向角度將決定該個(gè)體下一步的搜索方向,個(gè)體會(huì)在該搜索方向上前進(jìn)一定的步長(zhǎng)來(lái)該方位的區(qū)域進(jìn)行搜索,但是只有發(fā)現(xiàn)者可以進(jìn)行轉(zhuǎn)向來(lái)改變搜索方位,跟隨者只能更隨發(fā)現(xiàn)者,而游蕩者只能依照當(dāng)前方向,無(wú)法轉(zhuǎn)向。

2. 算法流程

群搜索算法是我的入門(mén)算法。不知為什么我每次看到群搜索算法,腦海中就會(huì)響起《動(dòng)物世界》的音樂(lè)并出現(xiàn)鬣(lie)狗的畫(huà)面,想起它們?cè)诓菰嫌问幍漠?huà)面,那這次的主角就是它了吧,雖然不知道是否合適。



  看了群搜索算法的簡(jiǎn)介,我們可以發(fā)現(xiàn),這不是人工蜂群算法嗎,當(dāng)采蜜蜂數(shù)量為1時(shí),人工蜂群算法不就成了群搜索算法了嗎?確實(shí),它們的種群分類(lèi)相似,但是它們的搜索行為和搜索策略大相徑庭。其實(shí)優(yōu)化算法中有很多感覺(jué)都是兄弟姐妹關(guān)系,感覺(jué)主體流程幾乎一樣,只不過(guò)有某些改進(jìn)點(diǎn)或者新增了某種屬性就成了一個(gè)新的算法,既然人家都承認(rèn),我們也只好跟著認(rèn)了。



  群搜索算法中的個(gè)體有三個(gè)屬性:位置,角度和方向。(其實(shí)也可以說(shuō)是兩個(gè)屬性,方向可以由角度計(jì)算出來(lái)。
  在D維解空間內(nèi)每個(gè)鬣狗的位置為

X=(x_1,x_2,...,x_D)

每只鬣狗的頭部角度為

\varphi=(\varphi _1,\varphi _2,...\varphi _{D-1})

可以看出頭部的角度的維度比位置的維度少1。
  其前進(jìn)方向?yàn)?img class="math-block" src="https://math.jianshu.com/math?formula=D(%5Cvarphi)%20%3D%EF%BC%88d_1%2Cd_2%2C...%2Cd_%7BD-1%7D)" alt="D(\varphi) =(d_1,d_2,...,d_{D-1})" mathimg="1">,維度與位置維度一致,比頭部角度多1維,前進(jìn)方向 將由頭部角度 計(jì)算得出,計(jì)算公式如下

d_{i1}=\prod_{q=1}^{D-1}cos(\varphi_{iq})

d_{ij}=sin(\varphi_{i(j-1)})\prod_{q=j}^{D-1}cos(\varphi_{iq}),(j=2,...,n-2)

d_{iD}=sin(\varphi_{i(D-1)})
  舉個(gè)栗子,在3維解空間內(nèi),X=(x_1,x_2,x_3),\varphi=(\varphi _1,\varphi _2,\varphi _3),D(\varphi)=(d_1,d_2,d_3)

d_{i1}=cos(\varphi_{i1})cos(\varphi_{i2})

d_{i2}=sin(\varphi_{i1)})cos(\varphi_{i2})

d_{i3}=sin(\varphi_{i1})
  可以看出 ||d||=\sqrt {d_{i1}^2+d_{i2}^2+d_{i3}^2}=1 即保證前進(jìn)方向是模為1的單位向量。

2.1發(fā)現(xiàn)者行為

   發(fā)現(xiàn)者是當(dāng)前群體中位置最優(yōu)的個(gè)體,所以它沒(méi)有目標(biāo)去跟隨,只能根據(jù)當(dāng)前線索取繼續(xù)發(fā)現(xiàn)新目標(biāo)。發(fā)現(xiàn)者會(huì)根據(jù)當(dāng)前頭部角度搜索三個(gè)方向,前方,左邊和右邊。


  如圖,前方為該鬣狗當(dāng)前的頭部方向,而左方和右方則為它向左和向右隨機(jī)轉(zhuǎn)向r度后的方向,即 \varphi+r,\varphi-r,具體的計(jì)算公式如下:

向前方搜索的位置:

X =X_p +r_1l_{max}D_p(\varphi)
  向左方搜索的位置:
X =X_p +r_1l_{max}D_p(\varphi+r_2\theta_{max}/2)
  向右方搜索的位置:
X =X_p +r_1l_{max}D_p(\varphi-r_2\theta_{max}/2)
  其中 X_p為發(fā)現(xiàn)者當(dāng)前的位置,r_1為符合標(biāo)準(zhǔn)正態(tài)分布的隨機(jī)數(shù)(均值0,方差1),r_2為(0,1)內(nèi)的均勻隨機(jī)數(shù),l_{max}為最大的搜索步長(zhǎng),\theta_{max}為最大轉(zhuǎn)向角度。(這里和原文不一樣,我的左右和他是反的,不過(guò)沒(méi)影響)
  如果這三個(gè)新位置比之前的位置好,則移動(dòng)到這三個(gè)位置中最好的位置,否則不移動(dòng),只轉(zhuǎn)變頭部方向,轉(zhuǎn)向公式如下:
\varphi^{k+1} = \varphi^k+r_2\theta_{max}/2
  如果經(jīng)過(guò)a代都沒(méi)有找到更好的位置則將頭轉(zhuǎn)會(huì)a代之前的角度即:
\varphi^{k+a} = \varphi^k

2.2跟隨者行為

   群體中的大部分都是跟隨者,它們會(huì)向著發(fā)現(xiàn)者的位置靠近。

X_i^{k+1} =X_i^{k} +r_3(X_p^k-X_i^k)

2.3游蕩者行為

   游蕩者不跟隨任何個(gè)體,它們會(huì)在當(dāng)前角度上隨機(jī)搜索。

X_i^{k+1} =X_i^{k} +ar_1l_{max}D(\varphi^{k+1})

2.4 流程

由于算法中參數(shù)較多,作者也給出了部分標(biāo)準(zhǔn)參數(shù)

參數(shù)
跟隨者者比例 80%
游蕩者比例 20%
l_{max} 解空間上下界的歐式距離
\theta _{max} \pi/a^2
a round(\sqrt{D+1})
\varphi ^0 (\pi/4,\pi/4,...,\pi/4)

3. 實(shí)驗(yàn)

適應(yīng)度函數(shù)還是f(x_1,x_2)=(x_1-a)^2+(x_2-b)^2

實(shí)驗(yàn)一:標(biāo)準(zhǔn)群搜索算法

參數(shù)
問(wèn)題維度(維度) 2
搜索次數(shù)(最大迭代次數(shù)) 50
跟隨者比例 80%
游蕩者比例 20%
l_{max} 解空間上下界的歐式距離
\theta _{max} \pi/a^2
a round(\sqrt{D+1})
\varphi ^0 (\pi/4,\pi/4,...,\pi/4)
取值范圍 (-100,100)
實(shí)驗(yàn)次數(shù) 10

看看實(shí)驗(yàn)圖像



  這應(yīng)該是到目前為止的實(shí)驗(yàn)中最令人滿意的實(shí)驗(yàn)圖像了,幾乎所有的粒子隨機(jī)出現(xiàn)在解空間內(nèi)然后不斷的向著最優(yōu)個(gè)體移動(dòng),群體既沒(méi)有分散的飛舞,也沒(méi)有隨著迭代次數(shù)增加過(guò)于集中于某一個(gè)區(qū)域。看看實(shí)驗(yàn)結(jié)果。

最優(yōu)值 1.2251107571974537E-7
最差值 0.013024894028570514
平均值 0.0013084455258887948

結(jié)果還行,雖然沒(méi)有想象中的那么好,但也算是在較少的迭代次數(shù)下得出的不錯(cuò)的結(jié)果,如果增加迭代次數(shù),結(jié)果應(yīng)該會(huì)更好。同時(shí)結(jié)合圖像我們可以看出,由于群體沒(méi)有集中于某一個(gè)區(qū)域,使算法有了不錯(cuò)的跳出局部最優(yōu)的能力,同時(shí)也削弱了其局部搜索的能力,局部搜索僅由“發(fā)現(xiàn)者”提供。但就算法整體而言,“發(fā)現(xiàn)者”提供的局部搜索幾乎沒(méi)有起到什么作用。
實(shí)驗(yàn)二:標(biāo)準(zhǔn)群搜索算法,移除發(fā)現(xiàn)者行為
  去掉了發(fā)現(xiàn)者在左中右的搜索行為,發(fā)現(xiàn)者只需要站著不動(dòng)就好了。


  圖像與標(biāo)準(zhǔn)群搜索算法相比,我看不出什么差別。看看結(jié)果

最優(yōu)值 1.854714209417366E-7
最差值 0.002949841226367196
平均值 3.533115910203305E-4

怎么感覺(jué)移除了“發(fā)現(xiàn)者”的搜索行為后,其結(jié)果反而更好了?只能說(shuō)運(yùn)氣更好吧,一次最差值就可能拖累整個(gè)實(shí)驗(yàn)的均值。從結(jié)果可以看出,移除“發(fā)現(xiàn)者”行為對(duì)群搜索算法在這類(lèi)較為簡(jiǎn)單的問(wèn)題上的性能影響不大,也許在更加復(fù)雜的問(wèn)題中,這一算子能夠發(fā)揮決定性的作用。
實(shí)驗(yàn)三:修改種群比例

參數(shù)
問(wèn)題維度(維度) 2
總?cè)簲?shù)量(種群數(shù)) 20
搜索次數(shù)(最大迭代次數(shù)) 50
跟隨者比例 80%,60%,40%,20%
游蕩者比例 20%,40%,60%,80%
l_{max} 解空間上下界的歐式距離
\theta _{max} \pi/a^2
a round(\sqrt{D+1})
\varphi ^0 (\pi/4,\pi/4,...,\pi/4)
取值范圍 (-100,100)
實(shí)驗(yàn)次數(shù) 10
跟隨者比例60%
最優(yōu)值 3.069507400059027E-5
最差值 0.02114359466660109
平均值 0.005540228815855548
跟隨者比例40%
最優(yōu)值 6.59279233735544E-4
最差值 9.738505469931752
平均值 1.4289853174442497
跟隨者比例20%

  跟隨者比例20%

最優(yōu)值 0.08231541229310135
最差值 82.13212839416113
平均值 16.697520989453512

從圖像上可以看出,隨著跟隨者比例的下降,群體的運(yùn)動(dòng)越來(lái)越無(wú)序,僅有較少的個(gè)體向著最有個(gè)體靠近。
  從結(jié)果中可以看出,跟隨者的比例越大,其結(jié)果的精度越高,而且也越穩(wěn)定。
  從這個(gè)實(shí)驗(yàn)中我們可以看出,跟隨者提供了全局搜索能力,游蕩者提供了跳出局部最優(yōu)能力。發(fā)現(xiàn)者呢,應(yīng)該是提供了局部搜索能力。前面說(shuō)了群搜索的局部搜索能力較弱,那為什么不多設(shè)置一些發(fā)現(xiàn)者,來(lái)增強(qiáng)其局部搜索能力呢?
實(shí)驗(yàn)四.將10%的最優(yōu)個(gè)體作為發(fā)現(xiàn)者

參數(shù)
問(wèn)題維度(維度) 2
總?cè)簲?shù)量(種群數(shù)) 20
搜索次數(shù)(最大迭代次數(shù)) 50
發(fā)現(xiàn)者比例 10%
跟隨者比例 72%
游蕩者比例 18%
l_{max} 解空間上下界的歐式距離
\theta _{max} \pi/a^2
a round(\sqrt{D+1})
\varphi ^0 (\pi/4,\pi/4,...,\pi/4)
取值范圍 (-100,100)
實(shí)驗(yàn)次數(shù) 10
最優(yōu)值 1.380210268180854E-7
最差值 0.0016625529372137474
平均值 2.5507510902798446E-4

圖像和結(jié)果與標(biāo)準(zhǔn)幾乎沒(méi)有太大的差別,我總感覺(jué)發(fā)現(xiàn)者其實(shí)并沒(méi)有什么太大的作用。群搜索算法的如果去掉了發(fā)現(xiàn)者的行為,其實(shí)是一個(gè)比較簡(jiǎn)單的算法,而發(fā)現(xiàn)者的搜索行為使算法的流程、理解以及實(shí)現(xiàn)都復(fù)雜了少,卻對(duì)算法的性能影響甚微,即使移除也無(wú)大礙。

4. 總結(jié)

群搜索算法的探究也到此為止,群搜索算法的流程比較復(fù)雜,作為我的入門(mén)算法,我當(dāng)年也頭疼了幾天,現(xiàn)在看來(lái),不能說(shuō)它“也不過(guò)如此”,至少流程上清晰了不上,由于是當(dāng)年的入門(mén)算法,我的側(cè)重點(diǎn)也放在了應(yīng)用上,對(duì)于改進(jìn)并沒(méi)與太多的研究,此處也只是分析了某些參數(shù)的作用以及對(duì)結(jié)果的影響。
  相對(duì)標(biāo)準(zhǔn)群搜索算法,后面的實(shí)驗(yàn)主要在研究發(fā)現(xiàn)者,跟隨者,游蕩者的作用。其中可以明確的得出,游蕩者起到了跳出局部最優(yōu)的作用,跟隨者的作用是局部搜索和少量的局部搜索,而發(fā)現(xiàn)者的作用是引導(dǎo)跟隨者。目前看來(lái),發(fā)現(xiàn)者的行為對(duì)算法影響不大,如果后續(xù)有什么新的發(fā)現(xiàn)再來(lái)更新。
  以下指標(biāo)純屬個(gè)人yy,僅供參考

指標(biāo) 星數(shù)
復(fù)雜度 ★★★★★★★☆☆☆
收斂速度 ★★★★★☆☆☆☆☆
全局搜索 ★★★★★★★★☆☆
局部搜索 ★★★☆☆☆☆☆☆☆
優(yōu)化性能 ★★★★★☆☆☆☆☆
跳出局部最優(yōu) ★★★★★☆☆☆☆☆
改進(jìn)點(diǎn) ★★★★☆☆☆☆☆☆

參考文獻(xiàn)
S. He?, Q. H. Wu?, J. R. Saunders?. Group Search Optimizer - An Optimization Algorithm Inspired by Animal Searching Behavior[J]. IEEE Transactions on Evolutionary Computation, 2009, 13(5):973-990.提取碼:p9da

目錄
上一篇 優(yōu)化算法筆記(十)螢火蟲(chóng)算法
下一篇 優(yōu)化算法筆記(十二)煙花算法

優(yōu)化算法matlab實(shí)現(xiàn)(十一)群搜索算法matlab實(shí)現(xiàn)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請(qǐng)通過(guò)簡(jiǎn)信或評(píng)論聯(lián)系作者。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,461評(píng)論 6 532
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,538評(píng)論 3 417
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 176,423評(píng)論 0 375
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 62,991評(píng)論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,761評(píng)論 6 410
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 55,207評(píng)論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,268評(píng)論 3 441
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 42,419評(píng)論 0 288
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,959評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,782評(píng)論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,983評(píng)論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,528評(píng)論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,222評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 34,653評(píng)論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 35,901評(píng)論 1 286
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,678評(píng)論 3 392
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,978評(píng)論 2 374