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