最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

蝴蝶優(yōu)化算法及實現(xiàn)源碼

 更新時間:2022年02月07日 14:41:48   作者:十@八九  
這篇文章主要為大家介紹了蝴蝶優(yōu)化算法的講解及實現(xiàn)源碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步

群智能算法學習筆記
筆記內容和仿真代碼可能會不斷改動
如有不當之處,歡迎指正

算法簡介

蝴蝶優(yōu)化算法(butterfly optimization algorithm, BOA)是Arora 等人于2019年提出的一種元啟發(fā)式智能算法。該算法受到了蝴蝶覓食和交配行為的啟發(fā),蝴蝶接收/感知并分析空氣中的氣味,以確定食物來源/交配伙伴的潛在方向。

蝴蝶利用它們的嗅覺、視覺、味覺、觸覺和聽覺來尋找食物和伴侶,這些感覺也有助于它們從一個地方遷徙到另一個地方,逃離捕食者并在合適的地方產(chǎn)卵。在所有感覺中,嗅覺是最重要的,它幫助蝴蝶尋找食物(通常是花蜜)。蝴蝶的嗅覺感受器分散在蝴蝶的身體部位,如觸角、腿、觸須等。這些感受器實際上是蝴蝶體表的神經(jīng)細胞,被稱為化學感受器。它引導蝴蝶尋找最佳的交配對象,以延續(xù)強大的遺傳基因。雄性蝴蝶能夠通過信息素識別雌性蝴蝶,信息素是雌性蝴蝶發(fā)出的氣味分泌物,會引起特定的反應。

通過觀察,發(fā)現(xiàn)蝴蝶對這些來源的位置有非常準確的判斷。此外,它們可以辨識出不同的香味,并感知它們的強度。蝴蝶會產(chǎn)生與其適應度相關的某種強度的香味,即當蝴蝶從一個位置移動到另一個位置時,它的適應度會相應地變化。當蝴蝶感覺到另一只蝴蝶在這個區(qū)域散發(fā)出更多的香味時,就會去靠近,這個階段被稱為全局搜索。另外一種情況,當蝴蝶不能感知大于它自己的香味時,它會隨機移動,這個階段稱為局部搜索。

香味

  為了理解BOA中的香味是如何計算的,首先需要理解,像氣味、聲音、光、溫度等這樣的模態(tài)是如何計算的。感知、處理這些模態(tài)需要知道三個重要的術語:感覺模態(tài)C、刺激強度I和冪指數(shù)a。在感覺模態(tài)中,感覺意味著測量能量的形式并以類似方式對其進行處理,而模態(tài)是指傳感器使用的原始輸入。不同的形態(tài)可以是氣味,聲音,光線,溫度,在BOA中,模態(tài)是香味。I是物理刺激的大小。在BOA中,I與蝴蝶/解決方案的適應度相關。這意味著,當一只蝴蝶散發(fā)出更多的香味時,周圍的其他蝴蝶可以感知到并被吸引。冪是強度增加的指數(shù)。參數(shù)a允許正則表達式、線性響應和響應壓縮。響應擴展是當I增加時,香味(f)比I增長更快。響應壓縮是當I增加時,f比I增長慢。線性響應是當I增加時,f成比例地增加。經(jīng)實驗證明,有時隨著刺激的增強,昆蟲對刺激變化的敏感性變得越來越低。因此在BOA中,為了估計I的大小,使用了響應壓縮。
  蝴蝶的自然現(xiàn)象基于兩個重要問題:I的變化和f的表示。簡單地說,蝴蝶的I與編碼后的目標函數(shù)相關聯(lián)。但是,f是相對的,即應該由其他蝴蝶來感知。史蒂文斯冪定律中,為了將氣味與其他形式區(qū)別開來,使用了C?,F(xiàn)在,當I較少的蝴蝶向I較多的蝴蝶移動時,f比I增加得更快。因此,我們應該允許f隨冪指數(shù)參數(shù)a實現(xiàn)的吸收程度而變化。在BOA中,香味被表示為刺激物的物理強度的函數(shù),如下所示:

在這里插入圖片描述

其中f為香味的大小,即其他蝴蝶感知到的香味強度,c 為感官模態(tài),在[0,1]之間取值;I 為刺激強度;a 為冪指數(shù),在[0,1]之間取值。在一個極端情況下,a=1,意味著一只特定蝴蝶發(fā)出的香氣量被其他蝴蝶以同樣的能力感知到,這相當于說香味是在理想化的環(huán)境中傳播的,在這個區(qū)域的任何地方都可以感覺到一只散發(fā)著香味的蝴蝶。因此,可以很容易地達到單個(通常是全局的)最優(yōu)值。另一方面,如果a=0,這意味著任何一只蝴蝶散發(fā)出的香味都不會被其他蝴蝶感覺到。所以,參數(shù)a控制算法的行為。另一個重要參數(shù)是c,它也是決定BOA算法收斂速度和性能的關鍵參數(shù)。理論上c∈[0,∞],但實際上是由待優(yōu)化系統(tǒng)的特性決定的。A和c的取值對算法的收斂速度有重要影響。在最大化問題中,強度可以與目標函數(shù)成正比。

具體算法

為了用搜索算法演示上述討論,將蝴蝶的上述特征理想化如下:

1.所有的蝴蝶都可以發(fā)出氣味,這使蝴蝶間相互吸引。

2.每只蝴蝶都會隨機移動或朝最好的蝴蝶移動,散發(fā)出更多的芳香。

3. 蝴蝶的刺激強度受目標函數(shù)的景觀影響或決定。

該算法分為三個階段:(1)初始化階段、(2)迭代階段和(3)結束階段。

在BOA的每次運行中,首先執(zhí)行初始化階段,然后進行迭代搜索,最后在找到最優(yōu)解時終止算法。BOA中使用的參數(shù)值也會被分配,設置這些值后,算法將繼續(xù)創(chuàng)建初始蝴蝶種群以進行優(yōu)化。由于在BOA的模擬過程中蝴蝶總數(shù)保持不變,分配了一個固定大小的內存來存儲信息。蝴蝶的位置是在搜索空間中隨機生成的,并計算和存儲它們的香味和適應值。這樣就完成了初始化階段,算法開始了迭代階段,該階段使用創(chuàng)建的人工蝶形執(zhí)行搜索。算法的第二階段,即迭代階段,由算法執(zhí)行多次迭代。在每次迭代中,解空間中的所有蝶形都移到新位置,然后重新評估其適應性值。算法首先計算解空間中不同位置的所有蝴蝶的適應度值。那么這些蝴蝶就會利用式1在自己的位置產(chǎn)生香味。該算法有兩個關鍵步驟,即全局搜索階段和局部搜索階段。在全局搜索階段,蝴蝶向最合適的蝴蝶/解g∗邁出一步,該蝴蝶/解g可以用公式(2)來表示。

在這里插入圖片描述

這里,g∗表示在當前迭代的所有解中找到的當前最佳解;fi表示第i只蝴蝶的香味,r是[0,1]中的隨機數(shù)。局部搜索階段可以表示為

在這里插入圖片描述

其中,xjt和xkt是解空間中的第j個蝴蝶和第k個蝴蝶。

蝴蝶尋找食物、交配伙伴可以在局部和全局范圍內發(fā)生??紤]到地理上的接近和各種其他因素,如雨、風等,在整個交配伙伴或蝴蝶的覓食活動中,尋找食物可能占很大比例。因此,在BOA中使用切換概率p來在普通全局搜索和密集局部搜索之間切換。

在未達到停止標準之前,一直進行迭代。迭代結束的標準可以有多個,如使用的最大CPU時間、達到的最大迭代次數(shù)、沒有改進的最大迭代次數(shù)、達到錯誤率的特定值或任何其他適當?shù)臉藴?。當?shù)A段結束時,算法輸出具有最佳適應度的最優(yōu)解。

參考文獻

[1] Arora S, Singh S. Butterfly optimization algorithm: a novel approach for global optimization[J]. Soft Computing. 2019, 23(3): 715-734.

以上就是蝴蝶優(yōu)化算法及實現(xiàn)源碼的詳細內容,更多關于蝴蝶優(yōu)化算法的資料請關注腳本之家其它相關文章!

相關文章

  • 為Jenkins創(chuàng)建定時構建任務

    為Jenkins創(chuàng)建定時構建任務

    這篇文章介紹了為Jenkins創(chuàng)建定時構建任務的方法,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-03-03
  • 網(wǎng)絡編程之get與post的區(qū)別與聯(lián)系

    網(wǎng)絡編程之get與post的區(qū)別與聯(lián)系

    這里來說說get與post的區(qū)別與聯(lián)系,對這方面不懂的鵬喲可以參考下。
    2011-04-04
  • Git第一次初始化項目到遠程倉庫方式

    Git第一次初始化項目到遠程倉庫方式

    本文介紹了Git倉庫的初始化和遠程連接的基本步驟,首先,使用git init命令初始化本地倉庫,創(chuàng)建“.git”文件夾,然后,通過git remote add命令添加遠程倉庫地址,遇到Permission denied(publickey)錯誤時,需生成SSH key并添加至遠程倉庫
    2024-09-09
  • 如何使用Idea進行合并代碼分支

    如何使用Idea進行合并代碼分支

    這篇文章主要介紹了如何使用Idea進行合并代碼分支,在平時的開發(fā)中大多是協(xié)作開發(fā)的,代碼統(tǒng)一放在一起,那么需要代碼合并時該怎么操作,需要的朋友可以參考下
    2023-03-03
  • 真?zhèn)戊o態(tài)區(qū)別方法分析

    真?zhèn)戊o態(tài)區(qū)別方法分析

    有些用戶覺得,偽靜態(tài)和真靜態(tài)實際被收錄量會相差非常大,其實不然,從你個人角度,你去判斷一下一個帖子到底是真靜態(tài)還是偽靜態(tài)?
    2010-01-01
  • vscode中setting.json配置文件配置詳解

    vscode中setting.json配置文件配置詳解

    這篇文章主要給大家介紹了關于vscode中setting.json配置文件配置的相關資料,VSCode中的setting.json文件用于存儲用戶自定義的配置設置,文中給出了詳細的代碼示例,需要的朋友可以參考下
    2023-09-09
  • vscode調試container中的程序的方法步驟

    vscode調試container中的程序的方法步驟

    本文主要介紹了vscode調試container中的程序的方法步驟,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • git回退commit并刪除遠端提交記錄方式

    git回退commit并刪除遠端提交記錄方式

    這篇文章主要介紹了git回退commit并刪除遠端提交記錄方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • Hadoop的eclipse的插件安裝方法

    Hadoop的eclipse的插件安裝方法

    這篇文章主要介紹了Hadoop的eclipse的插件安裝方法,本文圖文并茂給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-08-08
  • 碼云git圖文使用詳解教程

    碼云git圖文使用詳解教程

    這篇文章主要介紹了碼云git圖文使用詳解教程,需要的朋友可以參考下
    2020-11-11

最新評論

白沙| 屏山县| 万全县| 大田县| 扎鲁特旗| 突泉县| 达州市| 新郑市| 图木舒克市| 岐山县| 全南县| 陵水| 巴里| 武隆县| 财经| 宝坻区| 买车| 仁怀市| 从江县| 邹城市| 龙州县| 胶南市| 依兰县| 杭锦后旗| 金山区| 皮山县| 河南省| 康乐县| 平乐县| 宣城市| 陇川县| 景宁| 方城县| 长葛市| 洛隆县| 东城区| 南昌市| 施秉县| 庆城县| 深州市| 陵川县|