-
當(dāng)前位置:首頁 > 創(chuàng)意學(xué)院 > 技術(shù) > 專題列表 > 正文
灰狼優(yōu)化算法改進(jìn)(灰狼優(yōu)化算法改進(jìn)方法)
大家好!今天讓創(chuàng)意嶺的小編來大家介紹下關(guān)于灰狼優(yōu)化算法改進(jìn)的問題,以下是小編對此問題的歸納整理,讓我們一起來看看吧。
開始之前先推薦一個非常厲害的Ai人工智能工具,一鍵生成原創(chuàng)文章、方案、文案、工作計劃、工作報告、論文、代碼、作文、做題和對話答疑等等
只需要輸入關(guān)鍵詞,就能返回你想要的內(nèi)容,越精準(zhǔn),寫出的就越詳細(xì),有微信小程序端、在線網(wǎng)頁版、PC客戶端
官網(wǎng):https://ai.de1919.com。
創(chuàng)意嶺作為行業(yè)內(nèi)優(yōu)秀的企業(yè),服務(wù)客戶遍布全球各地,如需了解SEO相關(guān)業(yè)務(wù)請撥打電話175-8598-2043,或添加微信:1454722008
本文目錄:
一、pb實驗和算法優(yōu)化區(qū)別
PB實驗和算法優(yōu)化有很大的區(qū)別。PB實驗是一種實驗性的方法,它通過實驗來改進(jìn)系統(tǒng)的性能,而算法優(yōu)化則是一種理論性的方法,它通過分析和設(shè)計算法來改進(jìn)系統(tǒng)的性能。
二、優(yōu)化算法筆記(十三)鯨魚算法
(以下描述,均不是學(xué)術(shù)用語,僅供大家快樂的閱讀)
鯨魚算法(Whale Optimization Algorithm)是根據(jù)鯨魚圍捕獵物的行為而提出的算法。鯨魚是一種群居的哺乳動物,在捕獵時它們也會相互合作對獵物進(jìn)行驅(qū)趕和圍捕。鯨魚算法提出時間并不長,也是一個新興的優(yōu)化算法,研究應(yīng)用案例不多。
鯨魚算法中,每個鯨魚的位置代表了一個可行解。在鯨魚群捕獵過程中,每只鯨魚有兩種行為,一種是包圍獵物,所有的鯨魚都向著其他鯨魚前進(jìn);另一種是汽包網(wǎng),鯨魚環(huán)形游動噴出氣泡來驅(qū)趕獵物。在每一代的游動中,鯨魚們會隨機(jī)選擇這兩種行為來進(jìn)行捕獵。在鯨魚進(jìn)行包圍獵物的行為中,鯨魚將會隨機(jī)選擇是向著最優(yōu)位置的鯨魚游去還是隨機(jī)選擇一只鯨魚作為自己的目標(biāo),并向其靠近。
鯨魚算法,顯而易見,主角就是鯨魚了。
在D維解空間內(nèi)每個鯨魚的位置為
每只鯨魚隨機(jī)選擇進(jìn)行包圍獵物或者是使用汽泡網(wǎng)驅(qū)趕獵物,每只鯨魚選擇這兩種行為的該率是等的,即P(包圍)=P(汽泡網(wǎng))=0.5。
鯨魚在包圍獵物時會選擇向著最優(yōu)位置的鯨魚游動或者向著一只隨機(jī)鯨魚游動。
該鯨魚的位置更新公式入下:
其中 為當(dāng)前最優(yōu)的鯨魚的位置,A的每一維為均勻分布在(-a,a)內(nèi)的隨機(jī)數(shù),a的初始值為2,隨著迭代次數(shù)線性遞減至0;C為均勻分布在(0,2)內(nèi)的隨機(jī)數(shù)。||表示數(shù)的絕對值,即 每一維的值都是非負(fù)數(shù)。
該鯨魚的位置更新公式入下:
其中 為當(dāng)前群體中隨機(jī)選擇的鯨魚的位置。
那么鯨魚在什么時候選擇向最優(yōu)個體游動,什么時候選擇隨機(jī)個體為目標(biāo)呢?
這個將由A的值決定
當(dāng) 時,鯨魚選擇向著最優(yōu)個體游動。注意A是一個D維的向量,所以是A的模小于1時,鯨魚向著最優(yōu)個體游動。
當(dāng) 時,鯨魚選擇向著隨機(jī)個體游動。
可以看出在包圍獵物的過程中,鯨魚算法的搜索模式為在距最優(yōu)個體較近的周圍搜索或者在距隨機(jī)個體較遠(yuǎn)的附近搜索。
2.2氣泡網(wǎng)
鯨魚在捕獵時會噴出汽包形成氣泡網(wǎng)來驅(qū)趕獵物。
其中b為常數(shù)(沒找到定義,默認(rèn)取1),l為均勻分布在[-1,1]內(nèi)的隨機(jī)數(shù)。
每次行動之前,每只鯨魚都會拋個硬幣,來決定是選擇包圍獵物還是使用氣泡網(wǎng)來驅(qū)趕獵物。
從上面的描述可以看出,鯨魚算法的流程也十分的簡單。
適應(yīng)度函數(shù)
實驗一 :標(biāo)準(zhǔn)鯨魚算法
從圖上可以看出算法的收斂性還是很強(qiáng)的,在第35代左右就已經(jīng)完全收斂。再看最后的結(jié)果,已經(jīng)是非常好的結(jié)果了,同樣也說明的算法的局部搜索能力很強(qiáng)。這樣印證了上一節(jié)我的說法,算法收斂速度快,缺少跳出局部最優(yōu)的能力。
從算法的流程我們可以看出,算法的收斂性大概是由參數(shù)a來決定的,由于a從2遞減為0,使算法的搜索范圍越來越小,從而加速算法的收斂。這應(yīng)該是一個優(yōu)化后的參數(shù),現(xiàn)在我們固定住a,來弱化算法,減弱其收斂性,看看全局搜索和跳出局部最優(yōu)能力是否有所加強(qiáng)。
實驗二 :固定參數(shù)a
從圖像可以看出,算法幾乎沒有收斂的了,算法的收斂速度依舊很快。
看看實驗結(jié)果。
結(jié)果比標(biāo)準(zhǔn)鯨魚算法差,能說明參數(shù)a影響了算法的搜索精度,參數(shù)a對算法收斂性的影響在于a對向量A的影響。固定a=1.5時使A的模較之前相比有更大的概率大于1,此時鯨魚們在包圍獵物的行為中選擇游向最優(yōu)個體的概率更小,從而使算法的收斂速度更慢,同時算法的全局搜索能力有一定的提升。
鯨魚算法作為一個新興算法,我對它的研究也不是太多??v觀算法的流程,可以看出標(biāo)準(zhǔn)的鯨魚算法和螢火蟲算法有相似之處,它們都是在算法前期進(jìn)行全局搜索,而在算法的后期進(jìn)行局部搜索,也都沒有跳出局部最優(yōu)的操作。在面對簡單問題上表現(xiàn)出的優(yōu)秀性能到了復(fù)雜問題上可能會有所下降,但是由于算法流程、結(jié)構(gòu)相對簡單,算法的改進(jìn)點感覺也不是太多。
以下指標(biāo)純屬個人yy,僅供參考
參考文獻(xiàn)
Mirjalili S, Lewis A. The Whale Optimization Algorithm[J]. Advances in Engineering Software, 2016, 95:51-67. 提取碼:b13x
目錄
上一篇 優(yōu)化算法筆記(十二)煙花算法
下一篇 優(yōu)化算法筆記(十四)水波算法
優(yōu)化算法matlab實現(xiàn)(十三)鯨魚算法matlab實現(xiàn)
三、優(yōu)化算法筆記(十二)煙花算法
(以下描述,均不是學(xué)術(shù)用語,僅供大家快樂的閱讀)
煙花算法(Firework Algorithm,FWA)是一種受煙花爆炸產(chǎn)生火星,并繼續(xù)分裂爆炸這一過程啟發(fā)而得出的算法。算法的思想簡單,但具體實現(xiàn)復(fù)雜。算法提出時間并不長,但是已經(jīng)有了不少的改進(jìn)研究和較為全面的應(yīng)用。
煙花算法中,每一個煙花的位置都代表了一個可行解。煙花的爆炸產(chǎn)生的火星有兩種,正常的火星與特別的火星。每個火星都會爆炸產(chǎn)生數(shù)個正?;鹦?,某些火星有一定的概率產(chǎn)生一個特別的火星。正常的火星根據(jù)當(dāng)前火星的振幅隨機(jī)均勻分布在該火星的周圍,而特別的火星將在當(dāng)前火星附近以正態(tài)分布方式產(chǎn)生。每次迭代產(chǎn)生的火星數(shù)量多于每一代應(yīng)有的火星數(shù),算法將參照火星位置的優(yōu)劣,隨機(jī)留下指定數(shù)量的火星,已保持火星數(shù)目的穩(wěn)定。
煙花算法的主角毫無疑問就是煙花了。
式(1)為適應(yīng)度值越小越優(yōu)的情況,而式(2)則是適應(yīng)度值越大越優(yōu)的情況。 為一個極小的值,以保證分母不為0。
每個火星產(chǎn)生的正?;鹦菙?shù)量也由其適應(yīng)度值來決定。
其中 表示第i個火星將要產(chǎn)生的正?;鹦菙?shù), 是產(chǎn)生正常火星的總數(shù)為一個常數(shù),從式(3),(4)可以看出適應(yīng)度值越好的火星能夠產(chǎn)生更多的正常火星,反之,火星適應(yīng)度越差,能夠產(chǎn)生的火星數(shù)越少。
由于式(3),(4)計算出的值為小數(shù),煙花算法中使用式(5)將其轉(zhuǎn)化為整數(shù)。
從式(3)和式(4)中可以看出,在每一代中將會產(chǎn)生出 個正常火星。產(chǎn)生的正常火星的位置與當(dāng)前火星的振幅有關(guān),可以從式(1),(2)看出,適應(yīng)度越優(yōu)的火星的振幅越小,那么它產(chǎn)生的正?;鹦菍⒃谒约褐車m應(yīng)度越差的火星的振幅越大,它產(chǎn)生的正?;鹦菍霈F(xiàn)在離自己較遠(yuǎn)的位置。
當(dāng)前火星每次爆炸會從D維搜索空間內(nèi)隨機(jī)選擇z維進(jìn)行更新從而產(chǎn)生新的火星。正?;鹦堑奈恢糜扇缦鹿疆a(chǎn)生。
其中z為取值1-D的均勻隨機(jī)正整數(shù),rand(-1,1)表示-1到1內(nèi)的均勻隨機(jī)數(shù)。從式(6)中可以看出,正?;鹦堑奈恢门c其振幅有直接關(guān)系,振幅越大產(chǎn)生的新火星距當(dāng)前火星的距離約遠(yuǎn)。
每次迭代過程中,會產(chǎn)生m個特別的火星,即在這N個火星中隨機(jī)選擇m個火星,每個火星產(chǎn)生一個特別的火星。特別的火星的由下面的公式產(chǎn)生:
由上面的過程可知,在每一代中,有N個火星,將會產(chǎn)生出 個正?;鹦且约癿個特別的火星。但是每一代中只能從這 個火星中選擇N個火星保留至下一代。
每次會先從 個火星中選擇最優(yōu)的火星保留至下一代,然后再從中選擇N-1個火星。選擇某個火星的概率如下:
其中R(X)表示該火星距其他所有火星的距離之和,即距其它火星越遠(yuǎn)的火星,被選擇保留至下一代的概率較大。
個火星,而且
,所有煙花算法每次迭代的計算復(fù)雜度要大于其他算法,這簡直就是一個作弊行為。別的算法每次只搜索了N個位置,而煙花算法卻搜索了 個位置。與其他優(yōu)化算法對比時,其他算法的種群數(shù)量應(yīng)該取 ,否則這將是一場不公正的對決。
適應(yīng)度函數(shù)還是這個簡單的小白鼠
實驗一 :標(biāo)準(zhǔn)煙花算法
以上數(shù)據(jù)來自原論文,現(xiàn)在看一看實驗的圖像以及實驗結(jié)果。
從圖像可以看出每次只選擇保留了5個火星,它們的收斂速度很慢,實驗結(jié)束時距離目標(biāo)點還有一段距離。
看看實驗結(jié)果
從實驗結(jié)果可以看出,算法的性能很不穩(wěn)定,而造成這一點的原因很可能是其收斂速度較慢,算法仍在收斂過程中,所以結(jié)果看上去很差。將最大迭代次數(shù)修改為100代,重新試驗,其結(jié)果如下:
結(jié)果好了一些但還是難以接受,為什么煙花算法的結(jié)果不理想呢?
原因可能是保留機(jī)制(2.3節(jié))的問題,煙花算法中保留火星的概率是根據(jù)該火星與其他火星的距離和,距離群體越大的個體被保留下的概率越大。這樣做有什么好處呢?好處是火星相對分散,這是一個對抗局部最優(yōu)的策略,但是,距離群體較遠(yuǎn)的個體是一個較差的個體的概率非常大,壞處就是,集中于當(dāng)前最優(yōu)位置的火星被保留的概率較小,算法的局部搜索能力將較弱。
實驗二 . 隨機(jī)選擇的方式保留火星
為了加快煙花算法的收斂速度,增強(qiáng)局部搜索能力,我移除了標(biāo)準(zhǔn)煙花算法的選擇過程,使用隨機(jī)選擇的方式保留火星,當(dāng)然,最優(yōu)個體依然會被保留至下一代。其他參數(shù)保持不變。
可以看出這次的圖像相比實驗一收斂速度快了不少,在迭代結(jié)束時已經(jīng)相對在一個較小的區(qū)域。這次的結(jié)果也明顯優(yōu)于實驗一。將選擇過程改為隨機(jī)選擇后,由于較優(yōu)的火星產(chǎn)生的較多且分布在自己周圍,因此選擇到這些較優(yōu)的火星的概率也相對較大,算法的收斂速度相對較快。與此同時,算法跳出局部最優(yōu)的能力比修改前要弱。
對于較簡單的問題來說當(dāng)然是隨機(jī)選擇收斂較快結(jié)果較好,而復(fù)雜的問題則需要更強(qiáng)的跳出局部最優(yōu)能力。問題的關(guān)鍵仍然是,我們無法在一開始就知道問題的復(fù)雜程度。
實驗三 .增加火星的種群數(shù)量,減少每代產(chǎn)生的正?;鹦强倲?shù)
為什么要減少產(chǎn)生的正常火星數(shù),這樣算法搜索的次數(shù)減少了,效果不會更差嗎?其實與直覺相反,減少正?;鹦强倲?shù),增加火星總?cè)簲?shù),實際上是讓較優(yōu)的火星產(chǎn)生的正常火星被保留下來的概率變大了,這樣也可以解決實驗一中的問題,加快算法的收斂速度。
從圖像中可以看出,算法在50代之前已經(jīng)收斂,但是之后只在小范圍內(nèi)進(jìn)行搜索。實驗圖像與之前的描述相符,收斂速度加快但是跳出局部最優(yōu)能力減弱??纯磳嶒灲Y(jié)果,實驗結(jié)果好了不少且結(jié)果更加穩(wěn)定。
其實實驗二與實驗三,使用了不同的策略,但都達(dá)到了同樣的目的——保留更多的優(yōu)質(zhì)火星到下一代,它們促進(jìn)了局部搜索但是擠占了較劣火星的位置,削弱了種群的多樣性。
每代留下的火星多了,圖像看上去是不是更像煙花?
煙花算法的探究遠(yuǎn)不止如此,幾年前作為一個較新的算法來學(xué)習(xí)時卻已經(jīng)有了大量的論文和書籍,可見大家對煙花算法已經(jīng)有了較為深入的研究,而我能做的只是應(yīng)用算法解決問題以及稍作改進(jìn)讓算法與問題的適應(yīng)性更高。
煙花算法產(chǎn)生正?;鹦堑倪^程為算法提供了搜索能力,產(chǎn)生特殊火星的過程和選擇過程為算法提供了跳出局部最優(yōu)的能力。但是個人認(rèn)為選擇過程與其他過程的適應(yīng)性不是很好。標(biāo)準(zhǔn)的選擇過程會丟失掉許多較優(yōu)的個體,使之前產(chǎn)生的正?;鹦堑玫降某晒麤]有保留。
煙花算法其實還有比較多的改進(jìn)點,對算法產(chǎn)生最大的參數(shù)應(yīng)該就是正常火星的總數(shù)以及振幅了。簡單粗暴的改進(jìn):在每一代可以對這兩個參數(shù)進(jìn)行變化或者隨機(jī)化,讓算法的搜索能力與跳出局部最優(yōu)能力在整個流程中動態(tài)變化,以均衡兩種能力。
以下指標(biāo)純屬個人yy,僅供參考
參考文獻(xiàn)
Tan Y , Zhu Y . Fireworks Algorithm for Optimization[C]// Advances in Swarm Intelligence, First International Conference, ICSI 2010, Beijing, China, June 12-15, 2010, Proceedings, Part I. Springer-Verlag, 2010. 提取碼:yaj0
目錄
上一篇 優(yōu)化算法筆記(十一)群搜索算法
下一篇 優(yōu)化算法筆記(十三)鯨魚算法
優(yōu)化算法matlab實現(xiàn)(十二)煙花算法matlab實現(xiàn)
四、如何算改進(jìn)了一個算法,怎么改才叫改進(jìn)了呢?
我認(rèn)為,所謂“改進(jìn)”就是使發(fā)現(xiàn)原算法的不足之處,并優(yōu)化之,結(jié)果是使該算法效率大大提高高,或者適用度更廣泛,如果“改進(jìn)”后的算法不比之前的更優(yōu),就不能算改進(jìn)。反之,只要能夠大大提高改算法的效率,或者使該算法適用度更廣,就算是改進(jìn)。至于改進(jìn)一個細(xì)節(jié),如果是一個重要的細(xì)節(jié),當(dāng)然也算是改進(jìn)。
不過,算法都是高手發(fā)明的,他們在公布之前一定將這種算法優(yōu)化過了,如果要再改進(jìn),那一定要非常細(xì)心或者比他更高才行。
以上就是關(guān)于灰狼優(yōu)化算法改進(jìn)相關(guān)問題的回答。希望能幫到你,如有更多相關(guān)問題,您也可以聯(lián)系我們的客服進(jìn)行咨詢,客服也會為您講解更多精彩的知識和內(nèi)容。
推薦閱讀:
多目標(biāo)灰狼算法流程圖(多目標(biāo)規(guī)劃圖解法)
灰狼算法和麻雀算法區(qū)別(灰狼算法和麻雀算法區(qū)別是什么)
手機(jī)平板電腦排行榜(手機(jī)平板電腦排行榜前十)