智能算法|有哪些以動物命名的算法?

黃梅時節家家雨,青草池塘到處蛙。
有約不來過夜半,閒敲棋子落燈花。算法


魚羣算法?鳥羣算法?蝙蝠算法?蟻羣算法?病毒算法?。。。what?這些是什麼沙雕算法?

別看這些算法名字挺接地氣的,實際上確實很接地氣。。。網絡

以動物命名的算法可遠不止這些,俗話說得好,只要腦洞大,就能玩出新花樣,這句話在啓發式算法界絕對名副其實!然鵝什麼是啓發式算法呢?機器學習

啓發式算法:一個基於直觀或經驗構造的算法,在可接受的花費(指計算時間和空間)下給出待解決組合優化問題每個實例的一個可行解,該可行解與最優解的偏離程度通常不能被預計。通俗點講就是該類算法來源於生活,用這些算法求出來的解可能不是最好的,只能說是相對較好的,可是這個相對程度就不敢保證,只要能符合工程須要就行。函數

實際上啓發式策略又分爲啓發式和元啓發式,啓發式策略是一類在求解某個具體問題時,在能夠接受的時間和空間內能給出其可行解,但又不保證求得最優解(以及可行解與最優解的偏離)的策略的總稱。許多啓發式算法是至關特殊的,依賴於某個特定問題。元啓發式一般是一個通用的啓發式策略,他們一般不借助於某種問題的特有條件,從而可以運用於更普遍的方面。許多元啓發式算法都從天然界的一些隨機現象取得靈感,如模擬退火、遺傳算法、粒子羣算法、蜂羣算法、狼羣算法等。性能

天牛須搜索算法(BAS)

天牛須搜索(Beetle Antennae Search-BAS),也叫甲殼蟲須搜索,是2017年提出的一種高效的智能優化算法。相似於遺傳算法、粒子羣算法、模擬退火等智能優化算法,天牛須搜索不須要知道函數的具體形式,不須要梯度信息,就能夠實現高效尋優。相比於粒子羣算法,天牛須搜索只須要一個個體,即一隻天牛,運算量大大下降。學習

當天牛覓食時,天牛並不知道實物在哪裏,而是根據食物氣味的強弱來覓食。天牛有兩隻長觸角,若是左邊觸角收到的氣味強度比右邊大,那下一步天牛就往左飛,不然就往右飛。依據這一簡單原理天牛就能夠有效找到食物。測試

天牛須算法

蟻羣算法(ant colony optimization, ACO)

蟻羣算法(Ant Colony Algorithm)最初於1992年由意大利學者M.Dorigo等人提出,它是一種模擬天然界中真實蟻羣覓食行爲的仿生優化算法。研究發現:每隻螞蟻覓食時在走過的路線上會留下一種稱爲信息素的物質,螞蟻之間靠感知這種物質的濃度進行信息傳遞。螞蟻在選擇路徑時老是傾向於朝信息索濃度高的方向移動,而距離短的路徑上走過的螞蟻多,留下的信息素也多,後續螞蟻選擇它的機率也會越大;其餘路徑上的信息素會隨着時間的推移不斷揮發,這樣就造成了一種正反饋機制,最後整個蟻羣彙集到最短路徑上。優化

人工蟻羣算法模擬了這一過程,每隻螞蟻在解空間獨立地搜索可行解,解越好留下的信息素越多,隨着算法推動,較優解路徑上的信息素增多,選擇它的螞蟻也隨之增多,最終收斂到最優或近似最優的解上。spa


天牛須算法

魚羣算法

人工魚羣算法爲山東大學副教授李曉磊2002年從魚找尋食物的現象中表現的種種移動尋覓特色中獲得啓發而闡述的仿生學優化方案。設計

在一片水域中,魚每每能自行或尾隨其餘魚找到養分物質多的地方,於是魚生存數目最多的地方通常就是本水域中養分物質最多的地方,人工魚羣算法就是根據這一特色,經過構造人工魚來模仿魚羣的覓食、聚羣及追尾行爲,從而實現尋優。

人工魚擁有如下幾種典型行爲:

(1)覓食行爲:通常狀況下魚在水中隨機地自由遊動,當發現食物時,則會向食物逐漸增多的方向快速游去。

(2)聚羣行爲: 魚在遊動過程當中爲了保證自身的生存和躲避危害會天然地彙集成羣,魚聚羣時所遵照的規則有三條:

分隔規則:儘可能避免與臨近夥伴過於擁擠;

對準規則:儘可能與臨近夥伴的平均方向一致;

內聚規則:儘可能朝臨近夥伴的中心移動。

(3)追尾行爲:當魚羣中的一條或幾條魚發現食物時,其臨近的夥伴會尾隨其快速到達食物點。

(4)隨機行爲:單獨的魚在水中一般都是隨機遊動的,這是爲了更大範圍地尋找食物點或身邊的夥伴。


天牛須算法

鳥羣算法

2016年,Meng等人收到鳥類羣智能的啓發,提出了一種全新的羣智能優化算法——鳥羣算法(Bird Swarm Algorithm, BSA),鳥羣算法是在基於鳥類社會行爲和社交互動的基礎上,模擬其三種社會行爲:覓食行爲、警惕行爲與飛行行爲而來。相比於粒子羣算法和差分進化算法等傳統優化算法,鳥羣算法不只遺傳了尋優速度塊、變異性強等優勢,更具備自身獨特的優點,因爲鳥羣算法存在四條靈活的搜索路線,而且能夠自由調整,其在尋優的過程當中能更好地平衡高效能與準確性。


天牛須算法

人工蜂羣算法

天然界中的蜜蜂總能在任何環境下以極高的效率找到優質蜜源,且能適應環境的改變。蜜蜂羣的採蜜系統由蜜源、僱傭蜂、非僱傭蜂三部分組成,其中一個蜜源的優劣有不少要素,如蜜源花蜜量的大小、離蜂巢距離的遠近、提取的難易程度等;僱傭蜂和特定的蜜源聯繫並將蜜源信息以必定機率形式告訴同伴;非僱傭蜂的職責是尋找待開採的蜜源,分爲跟隨蜂和偵查蜂兩類,跟隨峯是在蜂巢等待而偵查蜂是探測蜂巢周圍的新蜜源。蜜蜂採蜜時,蜂巢中的一部分蜜蜂做爲偵查蜂,不斷並隨機地在蜂巢附近尋找蜜源,若是發現了花蜜量超過某個閾值的蜜源,則此偵査蜂變爲僱傭蜂開始釆蜜,採蜜完成後飛回蜂巢跳搖擺舞告知跟隨峯。搖擺舞是蜜蜂之間交流信息的一種基本形式,它傳達了有關蜂巢周圍蜜源的重要信息如蜜源方向及離巢距離等,跟隨峯利用這些信息準確評價蜂巢周圍的蜜源質量。當僱傭蜂跳完搖擺舞以後,就與蜂巢中的一些跟隨蜂一塊兒返回原蜜源採蜜,跟隨蜂數量取決於蜜源質量。以這種方式,蜂羣能快速且有效地找到花蜜量最高的蜜源。

蜂羣算法(Bee Colony Algorithm)是創建在蜜蜂自組織模型和羣體智能基礎上提出的一種非數值優化計算方法。於1995年第一個提出了蜂羣的自組織模擬模型。在模型中,儘管每一個社會階層中的蜜蜂只完成單一任務,但蜜蜂相互間經過搖擺舞、氣味等多種信息方式,使得整個蜂羣能協同完成諸如構建蜂巢、收穫花粉等多項任務。於2005年成功地把蜂羣算法應用在函數的數值優化問題上,提出了比較系統且新穎的羣體智能優化算法——ABCA算法(Artificial Bee Colony Algorithm,簡稱ABCA),算法主要模擬了蜂羣的智能採蜜行爲,蜜蜂根據各自分工進行各自的採蜜活動,而且經過蜜源信息的共享和交流,從而找到問題的最優解。Basturk於2006年又進一步將人工蜂羣算法理論應用到解決限制性數值優化的問題上,並取得了較好的測試效果。人工蜂羣在尋優等方面具備收斂速度快、求解質量高、魯棒性好、通用性強等優勢,但也可能有早熟收斂和後期容易陷入局部極值等不足。


天牛須算法

螢火蟲算法

2005年,印度學者K.N.Krishnanand和D.Ghose在IEEE羣體智能會議上提出一種新的羣智能優化算法,人工螢火蟲羣優化(Glowworm Swarm Optimization, GSO)算法。2009年,劍橋學者Xin-She Yang根據天然界中螢火蟲的發光行爲提出螢火蟲算法(Firefly Algorithm, FA)。這2種算法均是受螢火蟲的發光特性和集聚行爲的啓發。

GSO算法思想源於模擬天然界中螢火蟲在晚上羣聚活動的天然現象而提出,在螢火蟲的羣聚活動中,各只螢火蟲經過散發熒光素與同伴進行覓食以及求偶等信息交流。通常來講,熒光素越亮的螢火蟲其號召力就越強,最終會出現不少螢火蟲彙集在一些熒光素較亮的螢火蟲周圍。人工螢火蟲算法就是根據這種現象提出的一種新型的仿生羣智能優化算法。在人工螢火蟲羣優化算法中,每隻螢火蟲被視爲解空間的一個解,螢火蟲種羣做爲初始解隨機的分佈在搜索空間中,而後根據天然界螢火蟲的移動方式進行解空間中每隻螢火蟲的移動。經過每一次的移動,最終使得螢火蟲彙集到較好的螢火蟲周圍,也便是找到多個極值點,從而達到種羣尋優的目的。

FA算法的原理是把空間各點當作螢火蟲,利用發光強的螢火蟲會吸引起光弱的螢火蟲的特色。在發光弱的螢火蟲向發光強的螢火蟲移動的過程當中,完成位置的迭代,從而找出最優位置,即完成了尋優過程。搜索過程和螢火蟲的兩個重要參數有關:螢火蟲的發光亮度和相互吸引度,發光亮的螢火蟲會吸引起光弱的螢火蟲向它移動,發光越亮表明其位置越好,最亮螢火蟲即表明函數的最優解。發光越亮的螢火蟲對周圍螢火蟲的吸引度越高,若發光亮度同樣,則螢火蟲作隨機運動,這兩個重要參數都與距離成反比,距離越大吸引度越小。


天牛須算法

細菌算法

細菌覓食算法(Bacterial Foraging Optimization,BFO)在2002年,被K.M.Passino在論文「Biomimicry of bacterial foraging for distributed optimization and control」中被提出。BFO算法是模仿Eeoli大腸桿菌在人體腸道內吞噬食物的行爲而提出一種新型仿生類算法。在BFO算法中,一個細菌表明一個解,它在尋找最優解時只依靠本身。BFO因爲其簡單、高效的特色,在許多工程和科學領域獲得了普遍的應用。然而,在處理更復雜的優化問題,特別是高維多模態問題時,與其餘羣體智能優化算法相比,BFO算法的收斂性較差

細菌覓食算法是基於細菌覓食行爲過程而提出的一種仿生隨機搜索算法。該算法模擬細菌羣體的行爲,包括趨化,繁殖,驅散等三個個步驟。

細菌覓食算法主要包括三層循環,外層是驅散操做,中間層是繁殖操做,內層是趨化操做.算法的核心是內層的趨化性操做,它對應着細菌在尋找食物過程當中所採起的方向選擇策略,對算法的收斂性有着極其重要的影響。


天牛須算法

狼羣算法

狼羣算法(Wolf Colony Algorithm, WCA)是2011年由Yang等提出的一種羣智能優化算法,現已實如今醫學、三維傳感器優化、人工神經網絡、機器人路徑規劃、機器學習、水利水電優化等衆多領域。狼羣算法是一種隨機機率搜索算法,使其可以以較大的機率快速找到最優解;狼羣算法還具備並行性,能夠在同一時間從多個點出發進行搜索,點與點之間互不影響,從而提升算法的效率。

狼羣算法意在模擬狼羣的捕獵行爲處理函數優化問題,將狼羣分爲三類:頭狼、探狼和猛狼。算法的基本思想是:從待尋優空間中的某一初始獵物羣開始,其中具備最佳適應度值的狼做爲頭狼,該操做稱爲頭狼生成準則。而後,選取除頭狼外最佳的m匹狼做爲探狼,進行預約方向上的尋優搜索,採用新舊獵物規則保留優質的獵物,一旦發現比當前頭狼更優質的獵物,則具備該獵物的探狼成爲頭狼,此過程稱爲探狼遊走行爲。頭狼發起嚎叫,通知周圍猛狼迅速走向頭狼靠攏,探尋優質獵物,若是尋優獲得的優質獵物比頭狼更優,則該狼代替頭狼再次發起嚎叫,直到猛狼距離獵物必定距離時中止。此過程稱爲猛狼奔襲行爲。當猛狼距離獵物達到預先設定的閾值時,轉變爲圍攻行爲,對頭狼附近的優質獵物進行尋優,此過程稱爲羣狼圍攻行爲。


天牛須算法

猴羣算法

猴羣算法是於2008年由Zhao和Tang提出的一種新的用於求解大規模、多峯優化問題的智能優化算法。其思想在於經過模擬天然界中猴羣登山過程當中爬、望和跳的幾個動做,設計了三個搜索過程:爬過程主要用來搜索當前所在位置的局部最優解;望過程主要經過眺望來搜索鄰近領域比當前位置更優的解,以便加速最優解的搜尋過程;跳過程的目的在於由當前搜索區域轉移到其它區域,以免搜索過程陷入局部最優。在猴羣算法中,其花費的CPU時間主要在於尋找局部最優位置的爬過程。爬過程當中每次迭代的計算量主要集中在目標函數僞梯度的計算,其只涉及到當前位置的兩個臨近位置的目標函數值而與決策向量的維數無關。這一特徵顯著地提升了算法的性能,尤爲針對高維優化問題時效果更爲明顯。另外,跳過程迫使猴羣由當前區域轉移到新的區域,從而避免算法陷於局部最優。做爲一種智能算法,MA可以有效地求解高維的、非線性不可微的函數優化問題。此外,MA須要調整的參數也少,這使得MA易於實現。儘管猴羣算法在求解高維數優化問題時有了較大的突破,但其也存在一些不足。首先,對於不一樣的優化問題,在利用MA求解時須要設置不一樣的參數,而且這些參數對猴羣算法來講很重要,一旦設置的不許確,即使是優化問題的近似最優解也很難找到。另外,猴羣算法求解優化問題時耗費的CPU時間也較長,在優化效率方面仍具備很大的提升空間。

通過長期的對猴羣活動習性的觀察發現,猴羣在登山的過程當中,老是能夠分解爲攀爬、觀跳、空翻行爲。首先,猴子會在較小範圍內爬行,不斷向更高處前進。猴羣的攀爬行爲就至關於狼羣算法中搜尋獵物的過程,尋找局部地區內的一個最優值。找到更優的值,就替換掉原來的值。猴子爬到所在地的最高處時,就觀察附近有沒有更高的位置,若是有,就跳躍至更高處,而後繼續攀爬行爲至頂端,這就是狼羣的觀跳行爲。爲了發現全局最高的地方,猴子會空翻至更遠的區域,而後繼續爬行,就是猴羣的空翻行爲。重複幾回這樣的行爲,直至到達全局最高點處。

猴羣算法與蜂羣算法、狼羣算法等羣體智能算法有所區別,蜂羣算法中有引領蜂、偵查蜂及跟隨蜂,狼羣算法則有搜尋狼、頭領狼和圍攻狼,角色之間相互轉換。而在這裏,猴羣沒有角色的變動,只有階段性的行爲變化。其中攀爬行爲穿插在整個的前進過程當中,例如在觀跳行爲的先後和空翻行爲先後,是個耗時最長的行爲。


天牛須算法

布穀鳥最特殊的習性是寄巢產卵。大天然中有一些布穀鳥會將本身的卵產在寄主鳥巢中,同時布穀鳥也會移除鳥巢中其餘卵使得鳥巢中的卵數量保持相近。由於布穀鳥的卵與寄主的卵相比孵化週期更短,孵出的布穀鳥幼雛勢必本能地把寄主的卵推出卵巢,以此增長本身的存活率,提升競爭性。

在某些狀況下,當布穀鳥寄生其卵時,寄主鳥類會攻擊布穀鳥,也有可能發現鳥巢中陌生的卵。這時,寄主鳥類會丟棄布穀鳥所產的卵或直接從新築巢。與寄主鳥類不停地爭鬥中,布穀鳥的卵及孵化的幼雛皆沿着仿照寄主鳥類的方式生長。

布穀鳥搜索(cuckoo search, CS)算法屬於典型的具備迭代搜尋特徵的羣智能優化算法。做爲新型的啓發式搜索算法,是以布穀鳥的寄巢產卵特色及少部分生物的萊維飛行(Levy flights)模式爲參照,由Yang等於2009年提出的。其主要思想是經過隨機行走方式產生候選鳥巢以及採用貪婪策略更新鳥巢位置,最終使鳥巢位置達到或者接近全局最優解。

蝙蝠算法

蝙蝠算法(Bat Algorithm,BA) 是Yang教授於2010年基於羣體智能提出的啓發式搜索算法,是一種搜索全局最優解的有效方法。該算法是一種基於迭代的優化技術,初始化爲一組隨機解,而後經過迭代搜尋最優解,且在最優解周圍經過隨機飛行產生局部新解,增強了局部搜索。與其餘算法相比,BA在準確性和有效性方面遠優於其餘算法,且沒有許多參數要進行調整。

蝙蝠使用回聲定位技術檢測獵物、避開障礙物以及在黑暗的環境中找到棲息地。其能夠發出很是響亮的脈衝並聽取從周圍物體反彈回來的回聲,根據回聲到雙耳的不一樣時間與強度判斷物體所在的方向和位置;還能夠根據目標獵物或者障礙物的特徵發出不一樣性質的脈衝。

BA算法是模擬天然界中蝙蝠利用一種聲吶來探測獵物、避免障礙物的隨機搜索算法即模擬蝙蝠利用超聲波對障礙物或獵物進行最基本的探測、定位能力並將其和優化目標功能相聯繫。BA算法的仿生原理將種羣數量爲的蝙蝠個體映射爲D維問題空間中的NP個可行解,將優化過程和搜索模擬成種羣蝙蝠個體移動過程和搜尋獵物利用求解問題的適應度函數值來衡量蝙蝠所處位置的優劣,將個體的優勝劣汰過程類比爲優化和搜索過程當中用好的可行解替代較差可行解的迭代過程。在蝙蝠搜索算法中,爲了模擬蝙蝠探測獵物、避免障礙物,需假設以下三個近似的或理想化的規則:

1)全部蝙蝠利用回聲定位的方法感知距離,而且它們採用一種巧妙的方式來區別獵物和背景障礙物之間的不一樣。

2)蝙蝠在位置\(x_i\)以速度\(v_i\)隨機飛行,以固定的頻率\(f_{min}\)、可變的波長\(\lambda\)和音量\(A_0\)來搜索獵物。蝙蝠根據自身與目標的鄰近程度來自動調整發射的脈衝波長(或頻率)和調整脈衝發射率\(r\)屬於\([0,1]\)

3)雖然音量的變化方式有多種但在蝙蝠算法中, 假定音量A是從一個最大值A0(整數)變化到固定最小值Amin


天牛須算法

蛙跳算法

蛙跳算法(Shuffled Frog Leading Algorithm, SFLA)是一種啓發式算法,經過啓發式函數進行啓發式搜索,從而找到組合最有問題的解。它結合了以遺傳爲基礎的memetic算法和以社會行爲爲基礎的粒子羣優化算法的優勢。

在SFLA算法中,種羣被分爲若干個子羣(memeplex),每個子羣包括必定數量的青蛙。不一樣的memeplex具備不一樣的文化,分別進行局部搜索。在每一個子羣中,每隻青蛙都有本身的想法,而且受到其餘青蛙想法的影響,經過memetic進化來發展。這樣通過必定的memetic進化以及跳躍過程,這些想法思路就在各個memeplex中傳播開來,而後,根據須要局部搜索和跳躍,直到收斂或知足標準爲止。


天牛須算法

總結

許多工程技術都是來源於生活又服務於生活,好比,在仿生學中,潛水艇是從魚身上獲得靈感,雷達是從蝙蝠身上獲得的靈感,斑馬線是從斑馬身上獲得的靈感。

算法一樣如此,以上這些以動物命名的算法一樣都是學者們經過仔細觀察動物們的行爲獲得的靈感,從而設計出了各種精彩的算法。這就告訴咱們,平時要仔細觀察,善於思考,說不定哪天咱們就能夠提出一個什麼泥鰍算法啊,小貓小狗算法啊之類的,再不濟,咱們能夠在人家魚羣算法的基礎上發展成鯽魚算法,鯉魚算法,海豚算法之類的,哈哈,這固然是開玩笑的。作學術研究不能爲了發論文而設計算法,而是要提出問題,針對問題來設計合理有效的算法。

更多精彩內容請關注訂閱號「優化與算法」及添加QQ羣1032493483獲取更多資料。


天牛須算法
相關文章
相關標籤/搜索