-
當前位置:首頁 > 創(chuàng)意學院 > 技術 > 專題列表 > 正文
粒子群和鯨魚算法(粒子群和鯨魚算法的區(qū)別)
大家好!今天讓創(chuàng)意嶺的小編來大家介紹下關于粒子群和鯨魚算法的問題,以下是小編對此問題的歸納整理,讓我們一起來看看吧。
開始之前先推薦一個非常厲害的Ai人工智能工具,一鍵生成原創(chuàng)文章、方案、文案、工作計劃、工作報告、論文、代碼、作文、做題和對話答疑等等
只需要輸入關鍵詞,就能返回你想要的內(nèi)容,越精準,寫出的就越詳細,有微信小程序端、在線網(wǎng)頁版、PC客戶端
官網(wǎng):https://ai.de1919.com。
創(chuàng)意嶺作為行業(yè)內(nèi)優(yōu)秀的企業(yè),服務客戶遍布全球各地,如需了解SEO相關業(yè)務請撥打電話175-8598-2043,或添加微信:1454722008
本文目錄:
一、優(yōu)化算法筆記(二)優(yōu)化算法的分類
(以下描述,均不是學術用語,僅供大家快樂的閱讀)
在分類之前,我們先列舉一下常見的優(yōu)化算法(不然我們拿什么分類呢?)。
1遺傳算法Genetic algorithm
2粒子群優(yōu)化算法Particle Swarm Optimization
3差分進化算法Differential Evolution
4人工蜂群算法Artificial Bee Colony
5蟻群算法Ant Colony Optimization
6人工魚群算法Artificial Fish Swarm Algorithm
7杜鵑搜索算法Cuckoo Search
8螢火蟲算法Firefly Algorithm
9灰狼算法Grey Wolf Optimizer
10鯨魚算法Whale Optimization Algorithm
11群搜索算法Group search optimizer
12混合蛙跳算法Shuffled Frog Leaping Algorithm
13煙花算法fireworks algorithm
14菌群優(yōu)化算法Bacterial Foraging Optimization
以上優(yōu)化算法是我所接觸過的算法,沒接觸過的算法不能隨便下結論,知之為知之,不知為不知。其實到目前為止優(yōu)化算法可能已經(jīng)有幾百種了,我們不可能也不需要全面的了解所有的算法,而且優(yōu)化算法之間也有較大的共性,深入研究幾個之后再看其他優(yōu)化算法上手速度會灰常的快。
優(yōu)化算法從提出到現(xiàn)在不過50-60年(遺傳算法1975年提出),雖種類繁多但大多較為相似,不過這也很正常,比較香蕉和人的基因相似度也有50%-60%。當然算法之間的相似度要比香蕉和人的相似度更大,畢竟人家都是優(yōu)化算法,有著相同的目標,只是實現(xiàn)方式不同。就像條條大路通羅馬,我們可以走去,可以坐汽車去,可以坐火車去,也可以坐飛機去,不管使用何種方式,我們都在去往羅馬的路上,也不會說坐飛機去要比走去更好,交通工具只是一個工具,最終的方案還是要看我們的選擇。
上面列舉了一些常見的算法,即使你一個都沒見過也沒關系,后面會對它們進行詳細的介紹,但是對后面的分類可能會有些許影響,不過問題不大,就先當總結看了。
再對優(yōu)化算法分類之前,先介紹一下算法的模型,在筆記(一)中繪制了優(yōu)化算法的流程,不過那是個較為簡單的模型,此處的模型會更加復雜。上面說了優(yōu)化算法有較大的相似性,這些相似性主要體現(xiàn)在算法的運行流程中。
優(yōu)化算法的求解過程可以看做是一個群體的生存過程。
有一群原始人,他們要在野外中尋找食物,一個原始人是這個群體中的最小單元,他們的最終目標是尋找這個環(huán)境中最容易獲取食物的位置,即最易存活下來的位置。每個原始人都去獨自尋找食物,他們每個人每天獲取食物的策略只有采集果實、制作陷阱或者守株待兔,即在一天之中他們不會改變他們的位置。在下一天他們會根據(jù)自己的策略變更自己的位置。到了某一天他們又聚在了一起,選擇了他們到過的最容易獲取食物的位置定居。
一群原始人=優(yōu)化算法中的種群、群體;
一個原始人=優(yōu)化算法中的個體;
一個原始人的位置=優(yōu)化算法中個體的位置、基因等屬性;
原始人變更位置=優(yōu)化算法中總群的更新操作;
該位置獲取食物的難易程度=優(yōu)化算法中的適應度函數(shù);
一天=優(yōu)化算法中的一個迭代;
這群原始人最終的定居位置=優(yōu)化算法所得的解。
優(yōu)化算法的流程圖如下:
對優(yōu)化算法分類得有個標準,按照不同的標準分類也會得到不一樣的結果。首先說一下我所使用的分類標準(動態(tài)更新,有了新的感悟再加):
按由來分類比較好理解,就是該算法受何種現(xiàn)象啟發(fā)而發(fā)明,本質是對現(xiàn)象分類。
可以看出算法根據(jù)由來可以大致分為有人類的理論創(chuàng)造而來,向生物學習而來,受物理現(xiàn)象啟發(fā)。其中向生物學習而來的算法最多,其他類別由于舉例有偏差,不是很準確,而且物理現(xiàn)象也經(jīng)過人類總結,有些與人類現(xiàn)象相交叉,但仍將其獨立出來。
類別分好了,那么為什么要這么分類呢?
當然是因為要湊字數(shù)啦,啊呸,當然是為了更好的理解學習這些算法的原理及特點。
向動物生存學習而來的算法一定是一種行之有效的方法,能夠保證算法的效率和準確性,因為,如果使用該策略的動物無法存活到我們可以對其進行研究,我們也無法得知其生存策略。(而這也是一種幸存者偏差,我們只能看到行之有效的策略,但并不是我們沒看到的策略都是垃圾,畢竟也發(fā)生過小行星撞地球這種小概率毀滅性事件。講個冷笑話開cou心zhi一shu下:一只小恐龍對他的小伙伴說,好開心,我最喜歡的那顆星星越來越亮了(完)。)但是由于生物的局限性,人們所創(chuàng)造出的算法也會有局限性:我們所熟知的生物都生存在三維空間,在這些環(huán)境中,影響生物生存的條件比較有限,反應到算法中就是這些算法在解決較低維度的問題時效果很好,當遇到超高維(維度>500)問題時,結果可能不容樂觀,沒做過實驗,我也不敢亂說。
按更新過程分類相對復雜一點,主要是根據(jù)優(yōu)化算法流程中更新位置操作的方式來進行分類。更新位置的操作按我的理解可大致分為兩類:1.跟隨最優(yōu)解;2.不跟隨最優(yōu)解。
還是上面原始人的例子,每天他有一次去往其他位置狩獵的機會,他們采用何種方式來決定今天自己應該去哪里呢?
如果他們的策略是“跟隨最優(yōu)解”,那么他們選取位置的方式就是按一定的策略向群體已知的最佳狩獵位置(歷史最佳)或者是當前群體中的最佳狩獵位置(今天最佳)靠近,至于是直線跑過去還是蛇皮走位繞過去,這個要看他們?nèi)后w的策略。當然,他們的目的不是在最佳狩獵位置集合,他們的目的是在過去的途中看是否能發(fā)現(xiàn)更加好的狩獵位置,去往已經(jīng)到過的狩獵地點再次狩獵是沒有意義的,因為每個位置獲取食物的難易程度是固定的。有了目標,大家都會朝著目標前進,總有一日,大家會在謀個位置附近相聚,相聚雖好但不利于后續(xù)的覓食容易陷入局部最優(yōu)。
什么是局部最優(yōu)呢?假設在當前環(huán)境中有一“桃花源”,擁有上帝視角的我們知道這個地方就是最適合原始人們生存的,但是此地入口隱蔽“山有小口,仿佛若有光”、“初極狹,才通人?!保且粋€難以發(fā)現(xiàn)的地方。如果沒有任何一個原始人到達了這里,大家向著已知的最優(yōu)位置靠近時,也難以發(fā)現(xiàn)這個“桃源之地”,而當大家越聚越攏之后,“桃源”被發(fā)現(xiàn)的可能性越來越低。雖然原始人們得到了他們的解,但這并不是我們所求的“桃源”,他們聚集之后失去了尋求“桃源”的可能,這群原始人便陷入了局部最優(yōu)。
如果他們的策略是“不跟隨最優(yōu)解”,那么他們的策略是什么呢?我也不知道,這個應該他們自己決定。畢竟“是什么”比“不是什么”的范圍要小的多??傊桓S最優(yōu)解時,算法會有自己特定的步驟來更新個體的位置,有可能是隨機在自己附近找,也有可能是隨機向別人學習。不跟隨最優(yōu)解時,原始人們應該不會快速聚集到某一處,這樣一來他們的選擇更具多樣性。
按照更新過程對上面的算法分類結果如下
可以看出上面不跟隨最優(yōu)解的算法只有遺傳算法和差分進化算法,他們的更新策略是與進化和基因的重組有關。因此這些不跟隨最優(yōu)解的算法,他們大多依據(jù)進化理論更新位置(基因)我把他們叫做進化算法,而那些跟隨群體最優(yōu)解的算法,他們則大多依賴群體的配合協(xié)作,我把這些算法叫做群智能算法。
目前我只總結了這兩種,分類方法,如果你有更加優(yōu)秀的分類方法,我們可以交流一下:
目錄
上一篇 優(yōu)化算法筆記(一)優(yōu)化算法的介紹
下一篇 優(yōu)化算法筆記(三)粒子群算法(1)
二、優(yōu)化算法筆記(十三)鯨魚算法
(以下描述,均不是學術用語,僅供大家快樂的閱讀)
鯨魚算法(Whale Optimization Algorithm)是根據(jù)鯨魚圍捕獵物的行為而提出的算法。鯨魚是一種群居的哺乳動物,在捕獵時它們也會相互合作對獵物進行驅趕和圍捕。鯨魚算法提出時間并不長,也是一個新興的優(yōu)化算法,研究應用案例不多。
鯨魚算法中,每個鯨魚的位置代表了一個可行解。在鯨魚群捕獵過程中,每只鯨魚有兩種行為,一種是包圍獵物,所有的鯨魚都向著其他鯨魚前進;另一種是汽包網(wǎng),鯨魚環(huán)形游動噴出氣泡來驅趕獵物。在每一代的游動中,鯨魚們會隨機選擇這兩種行為來進行捕獵。在鯨魚進行包圍獵物的行為中,鯨魚將會隨機選擇是向著最優(yōu)位置的鯨魚游去還是隨機選擇一只鯨魚作為自己的目標,并向其靠近。
鯨魚算法,顯而易見,主角就是鯨魚了。
在D維解空間內(nèi)每個鯨魚的位置為
每只鯨魚隨機選擇進行包圍獵物或者是使用汽泡網(wǎng)驅趕獵物,每只鯨魚選擇這兩種行為的該率是等的,即P(包圍)=P(汽泡網(wǎng))=0.5。
鯨魚在包圍獵物時會選擇向著最優(yōu)位置的鯨魚游動或者向著一只隨機鯨魚游動。
該鯨魚的位置更新公式入下:
其中 為當前最優(yōu)的鯨魚的位置,A的每一維為均勻分布在(-a,a)內(nèi)的隨機數(shù),a的初始值為2,隨著迭代次數(shù)線性遞減至0;C為均勻分布在(0,2)內(nèi)的隨機數(shù)。||表示數(shù)的絕對值,即 每一維的值都是非負數(shù)。
該鯨魚的位置更新公式入下:
其中 為當前群體中隨機選擇的鯨魚的位置。
那么鯨魚在什么時候選擇向最優(yōu)個體游動,什么時候選擇隨機個體為目標呢?
這個將由A的值決定
當 時,鯨魚選擇向著最優(yōu)個體游動。注意A是一個D維的向量,所以是A的模小于1時,鯨魚向著最優(yōu)個體游動。
當 時,鯨魚選擇向著隨機個體游動。
可以看出在包圍獵物的過程中,鯨魚算法的搜索模式為在距最優(yōu)個體較近的周圍搜索或者在距隨機個體較遠的附近搜索。
2.2氣泡網(wǎng)
鯨魚在捕獵時會噴出汽包形成氣泡網(wǎng)來驅趕獵物。
其中b為常數(shù)(沒找到定義,默認取1),l為均勻分布在[-1,1]內(nèi)的隨機數(shù)。
每次行動之前,每只鯨魚都會拋個硬幣,來決定是選擇包圍獵物還是使用氣泡網(wǎng)來驅趕獵物。
從上面的描述可以看出,鯨魚算法的流程也十分的簡單。
適應度函數(shù)
實驗一 :標準鯨魚算法
從圖上可以看出算法的收斂性還是很強的,在第35代左右就已經(jīng)完全收斂。再看最后的結果,已經(jīng)是非常好的結果了,同樣也說明的算法的局部搜索能力很強。這樣印證了上一節(jié)我的說法,算法收斂速度快,缺少跳出局部最優(yōu)的能力。
從算法的流程我們可以看出,算法的收斂性大概是由參數(shù)a來決定的,由于a從2遞減為0,使算法的搜索范圍越來越小,從而加速算法的收斂。這應該是一個優(yōu)化后的參數(shù),現(xiàn)在我們固定住a,來弱化算法,減弱其收斂性,看看全局搜索和跳出局部最優(yōu)能力是否有所加強。
實驗二 :固定參數(shù)a
從圖像可以看出,算法幾乎沒有收斂的了,算法的收斂速度依舊很快。
看看實驗結果。
結果比標準鯨魚算法差,能說明參數(shù)a影響了算法的搜索精度,參數(shù)a對算法收斂性的影響在于a對向量A的影響。固定a=1.5時使A的模較之前相比有更大的概率大于1,此時鯨魚們在包圍獵物的行為中選擇游向最優(yōu)個體的概率更小,從而使算法的收斂速度更慢,同時算法的全局搜索能力有一定的提升。
鯨魚算法作為一個新興算法,我對它的研究也不是太多??v觀算法的流程,可以看出標準的鯨魚算法和螢火蟲算法有相似之處,它們都是在算法前期進行全局搜索,而在算法的后期進行局部搜索,也都沒有跳出局部最優(yōu)的操作。在面對簡單問題上表現(xiàn)出的優(yōu)秀性能到了復雜問題上可能會有所下降,但是由于算法流程、結構相對簡單,算法的改進點感覺也不是太多。
以下指標純屬個人yy,僅供參考
參考文獻
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)化算法和灰狼優(yōu)化算法哪個好
灰狼算法好?;依莾?yōu)化算法由Mirjalili等人于2014年提出,主要模仿了自然界中灰狼群體的捕食過程。
四、優(yōu)化算法筆記(十二)煙花算法
(以下描述,均不是學術用語,僅供大家快樂的閱讀)
煙花算法(Firework Algorithm,FWA)是一種受煙花爆炸產(chǎn)生火星,并繼續(xù)分裂爆炸這一過程啟發(fā)而得出的算法。算法的思想簡單,但具體實現(xiàn)復雜。算法提出時間并不長,但是已經(jīng)有了不少的改進研究和較為全面的應用。
煙花算法中,每一個煙花的位置都代表了一個可行解。煙花的爆炸產(chǎn)生的火星有兩種,正常的火星與特別的火星。每個火星都會爆炸產(chǎn)生數(shù)個正?;鹦牵承┗鹦怯幸欢ǖ母怕十a(chǎn)生一個特別的火星。正常的火星根據(jù)當前火星的振幅隨機均勻分布在該火星的周圍,而特別的火星將在當前火星附近以正態(tài)分布方式產(chǎn)生。每次迭代產(chǎn)生的火星數(shù)量多于每一代應有的火星數(shù),算法將參照火星位置的優(yōu)劣,隨機留下指定數(shù)量的火星,已保持火星數(shù)目的穩(wěn)定。
煙花算法的主角毫無疑問就是煙花了。
式(1)為適應度值越小越優(yōu)的情況,而式(2)則是適應度值越大越優(yōu)的情況。 為一個極小的值,以保證分母不為0。
每個火星產(chǎn)生的正常火星數(shù)量也由其適應度值來決定。
其中 表示第i個火星將要產(chǎn)生的正?;鹦菙?shù), 是產(chǎn)生正?;鹦堑目倲?shù)為一個常數(shù),從式(3),(4)可以看出適應度值越好的火星能夠產(chǎn)生更多的正常火星,反之,火星適應度越差,能夠產(chǎn)生的火星數(shù)越少。
由于式(3),(4)計算出的值為小數(shù),煙花算法中使用式(5)將其轉化為整數(shù)。
從式(3)和式(4)中可以看出,在每一代中將會產(chǎn)生出 個正?;鹦?。產(chǎn)生的正?;鹦堑奈恢门c當前火星的振幅有關,可以從式(1),(2)看出,適應度越優(yōu)的火星的振幅越小,那么它產(chǎn)生的正常火星將在它自己周圍,而適應度越差的火星的振幅越大,它產(chǎn)生的正?;鹦菍霈F(xiàn)在離自己較遠的位置。
當前火星每次爆炸會從D維搜索空間內(nèi)隨機選擇z維進行更新從而產(chǎn)生新的火星。正?;鹦堑奈恢糜扇缦鹿疆a(chǎn)生。
其中z為取值1-D的均勻隨機正整數(shù),rand(-1,1)表示-1到1內(nèi)的均勻隨機數(shù)。從式(6)中可以看出,正常火星的位置與其振幅有直接關系,振幅越大產(chǎn)生的新火星距當前火星的距離約遠。
每次迭代過程中,會產(chǎn)生m個特別的火星,即在這N個火星中隨機選擇m個火星,每個火星產(chǎn)生一個特別的火星。特別的火星的由下面的公式產(chǎn)生:
由上面的過程可知,在每一代中,有N個火星,將會產(chǎn)生出 個正?;鹦且约癿個特別的火星。但是每一代中只能從這 個火星中選擇N個火星保留至下一代。
每次會先從 個火星中選擇最優(yōu)的火星保留至下一代,然后再從中選擇N-1個火星。選擇某個火星的概率如下:
其中R(X)表示該火星距其他所有火星的距離之和,即距其它火星越遠的火星,被選擇保留至下一代的概率較大。
個火星,而且
,所有煙花算法每次迭代的計算復雜度要大于其他算法,這簡直就是一個作弊行為。別的算法每次只搜索了N個位置,而煙花算法卻搜索了 個位置。與其他優(yōu)化算法對比時,其他算法的種群數(shù)量應該取 ,否則這將是一場不公正的對決。
適應度函數(shù)還是這個簡單的小白鼠
實驗一 :標準煙花算法
以上數(shù)據(jù)來自原論文,現(xiàn)在看一看實驗的圖像以及實驗結果。
從圖像可以看出每次只選擇保留了5個火星,它們的收斂速度很慢,實驗結束時距離目標點還有一段距離。
看看實驗結果
從實驗結果可以看出,算法的性能很不穩(wěn)定,而造成這一點的原因很可能是其收斂速度較慢,算法仍在收斂過程中,所以結果看上去很差。將最大迭代次數(shù)修改為100代,重新試驗,其結果如下:
結果好了一些但還是難以接受,為什么煙花算法的結果不理想呢?
原因可能是保留機制(2.3節(jié))的問題,煙花算法中保留火星的概率是根據(jù)該火星與其他火星的距離和,距離群體越大的個體被保留下的概率越大。這樣做有什么好處呢?好處是火星相對分散,這是一個對抗局部最優(yōu)的策略,但是,距離群體較遠的個體是一個較差的個體的概率非常大,壞處就是,集中于當前最優(yōu)位置的火星被保留的概率較小,算法的局部搜索能力將較弱。
實驗二 . 隨機選擇的方式保留火星
為了加快煙花算法的收斂速度,增強局部搜索能力,我移除了標準煙花算法的選擇過程,使用隨機選擇的方式保留火星,當然,最優(yōu)個體依然會被保留至下一代。其他參數(shù)保持不變。
可以看出這次的圖像相比實驗一收斂速度快了不少,在迭代結束時已經(jīng)相對在一個較小的區(qū)域。這次的結果也明顯優(yōu)于實驗一。將選擇過程改為隨機選擇后,由于較優(yōu)的火星產(chǎn)生的較多且分布在自己周圍,因此選擇到這些較優(yōu)的火星的概率也相對較大,算法的收斂速度相對較快。與此同時,算法跳出局部最優(yōu)的能力比修改前要弱。
對于較簡單的問題來說當然是隨機選擇收斂較快結果較好,而復雜的問題則需要更強的跳出局部最優(yōu)能力。問題的關鍵仍然是,我們無法在一開始就知道問題的復雜程度。
實驗三 .增加火星的種群數(shù)量,減少每代產(chǎn)生的正?;鹦强倲?shù)
為什么要減少產(chǎn)生的正?;鹦菙?shù),這樣算法搜索的次數(shù)減少了,效果不會更差嗎?其實與直覺相反,減少正?;鹦强倲?shù),增加火星總群數(shù),實際上是讓較優(yōu)的火星產(chǎn)生的正?;鹦潜槐A粝聛淼母怕首兇罅?,這樣也可以解決實驗一中的問題,加快算法的收斂速度。
從圖像中可以看出,算法在50代之前已經(jīng)收斂,但是之后只在小范圍內(nèi)進行搜索。實驗圖像與之前的描述相符,收斂速度加快但是跳出局部最優(yōu)能力減弱??纯磳嶒灲Y果,實驗結果好了不少且結果更加穩(wěn)定。
其實實驗二與實驗三,使用了不同的策略,但都達到了同樣的目的——保留更多的優(yōu)質火星到下一代,它們促進了局部搜索但是擠占了較劣火星的位置,削弱了種群的多樣性。
每代留下的火星多了,圖像看上去是不是更像煙花?
煙花算法的探究遠不止如此,幾年前作為一個較新的算法來學習時卻已經(jīng)有了大量的論文和書籍,可見大家對煙花算法已經(jīng)有了較為深入的研究,而我能做的只是應用算法解決問題以及稍作改進讓算法與問題的適應性更高。
煙花算法產(chǎn)生正常火星的過程為算法提供了搜索能力,產(chǎn)生特殊火星的過程和選擇過程為算法提供了跳出局部最優(yōu)的能力。但是個人認為選擇過程與其他過程的適應性不是很好。標準的選擇過程會丟失掉許多較優(yōu)的個體,使之前產(chǎn)生的正?;鹦堑玫降某晒麤]有保留。
煙花算法其實還有比較多的改進點,對算法產(chǎn)生最大的參數(shù)應該就是正?;鹦堑目倲?shù)以及振幅了。簡單粗暴的改進:在每一代可以對這兩個參數(shù)進行變化或者隨機化,讓算法的搜索能力與跳出局部最優(yōu)能力在整個流程中動態(tài)變化,以均衡兩種能力。
以下指標純屬個人yy,僅供參考
參考文獻
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)
以上就是關于粒子群和鯨魚算法相關問題的回答。希望能幫到你,如有更多相關問題,您也可以聯(lián)系我們的客服進行咨詢,客服也會為您講解更多精彩的知識和內(nèi)容。
推薦閱讀:
離散粒子群優(yōu)化算法(離散粒子群優(yōu)化算法及其應用)
游戲數(shù)據(jù)網(wǎng)(粒子游戲數(shù)據(jù)網(wǎng))
發(fā)布作文的網(wǎng)站(發(fā)布作文的網(wǎng)站推薦)