智能優(yōu)化算法:布谷鳥(niǎo)搜索算法-附代碼
@[toc]
摘要:谷鳥(niǎo)搜索算法(cuckoo search ,cs),是由劍橋大學(xué)Yang等提出的一種群智能優(yōu)化算法,它也是一種新型元啟發(fā)式搜索算法仇奶。CS 算法主要優(yōu)點(diǎn)是參數(shù)少、操作簡(jiǎn)單腹鹉、易實(shí)現(xiàn)她奥、隨機(jī)搜索路徑優(yōu)和尋優(yōu)能力強(qiáng)等,備受學(xué)者關(guān)注别厘,相關(guān)的科研成果也日益倍增
1.算法原理
布谷鳥(niǎo)具有孵卵寄生性虱饿,本身沒(méi)有孵化行為,這就促使它通過(guò)尋找質(zhì)優(yōu)的巢窩,依靠養(yǎng)父母孵化和育雛 氮发。巢寄生殖行為主要表現(xiàn)在宿主的選擇渴肉,繁殖期間,大布谷鳥(niǎo)尋找在孵化和育雛時(shí)間上基本相似爽冕、雛鳥(niǎo)飲食習(xí)性基本相同的仇祭、卵形狀和顏色相當(dāng)?shù)乃拗鳎ǔ1憩F(xiàn)為雀形目鳥(niǎo)類颈畸。確定寄生的宿主后乌奇,大布谷鳥(niǎo)要選擇適當(dāng)?shù)臅r(shí)機(jī),一般在宿主即將孵化之前眯娱,趁宿主外出覓食時(shí)迅速寄生產(chǎn)卵礁苗。春末夏初,便向北飛徙缴,它自己不會(huì)做窩寂屏,不會(huì)育雛,也不會(huì)孵化娜搂,它每次飛到一個(gè)巢窩里只產(chǎn)一個(gè)鳥(niǎo)蛋迁霎。通常情況下,大布谷鳥(niǎo)在產(chǎn)卵前百宇,為了不被宿主察覺(jué)考廉,會(huì)把宿主一枚或數(shù)枚卵移走,使得巢穴中的卵數(shù)量相等或相近携御。而一旦靠養(yǎng)母孵化的雛鳥(niǎo)孵出昌粤,它有將養(yǎng)母本身的雛鳥(niǎo)推出巢外的本性,從而獨(dú)享養(yǎng)母撫養(yǎng)啄刹,這樣自己成活的概率大大增加涮坐。
為了模擬布谷鳥(niǎo)這種尋窩寄生的習(xí)性,Yang 等在文獻(xiàn)中將CS算法假設(shè)以下3種理想狀態(tài):
(1) 每只布谷鳥(niǎo)一次只產(chǎn)一枚卵誓军,并且隨機(jī)選擇一個(gè)鳥(niǎo)巢存放袱讹;
(2) 在尋窩的過(guò)程中,卵最好的鳥(niǎo)巢將會(huì)被保留到下一代昵时;
(3) 可用鳥(niǎo)巢的數(shù)量是固定的捷雕,并且設(shè)鳥(niǎo)巢中外來(lái)卵被發(fā)現(xiàn)的概率是 ,
壹甥。如果發(fā)現(xiàn)外來(lái)鳥(niǎo)蛋救巷,則鳥(niǎo)窩主人重新建立一個(gè)鳥(niǎo)窩。
通過(guò)以上 3 種理想狀態(tài)的假設(shè)句柠,布谷鳥(niǎo)尋優(yōu)搜索的位置和路徑的更新公式如下:
式中: —第 i 個(gè)鳥(niǎo)窩在第
代的鳥(niǎo)窩位置浦译,
—點(diǎn)對(duì)點(diǎn)乘法棒假,
—步長(zhǎng)控制量,用于控制步長(zhǎng)的搜索范圍精盅,其值服從正態(tài)分布帽哑。
在式(1)中,為 Lévy隨機(jī)搜索路徑,隨機(jī)步長(zhǎng)為 Lévy分布
式中: —由萊維飛行得到的隨機(jī)步長(zhǎng)渤弛。
有式 可以看出祝拯,該行走方式是一個(gè)隨機(jī)漫步的過(guò)程。由于萊維飛行的隨機(jī)游動(dòng)特征她肯,局部極值點(diǎn)附近往往會(huì)出現(xiàn)新解佳头,因此萊維飛行的短步長(zhǎng)搜索更加有利于提高解的質(zhì)量。另外晴氨,距離局部最優(yōu)值較遠(yuǎn)的地方也存在新解康嘉,偶爾的大步長(zhǎng)探索,使得算法不容易陷入局部極值點(diǎn)籽前。
根據(jù)布谷鳥(niǎo)的孵化鳥(niǎo)蛋的過(guò)程亭珍, CS算法的算法描述如下:
步驟1 定義目標(biāo)函數(shù),函數(shù)初始化枝哄,并隨機(jī)生成
個(gè)鳥(niǎo)窩的初始位置
肄梨,設(shè)置種群規(guī)模、問(wèn)題維數(shù)挠锥、最大發(fā)現(xiàn)概率
和最大迭代次數(shù)等參數(shù)众羡;
步驟2 選擇適應(yīng)度函數(shù)并計(jì)算每個(gè)鳥(niǎo)窩位置的目標(biāo)函數(shù)值,得到當(dāng)前的最優(yōu)函數(shù)值蓖租;
步驟3 記錄上一代最優(yōu)函數(shù)值粱侣,利用式(1)對(duì)其他鳥(niǎo)窩的位置和狀態(tài)進(jìn)行更新;
步驟 4 現(xiàn)有位置函數(shù)值與上一代最優(yōu)函數(shù)值進(jìn)行比較蓖宦,若較好齐婴,則改變當(dāng)前最優(yōu)值;
步驟 5 通過(guò)位置更新后稠茂,用隨機(jī)數(shù)與
對(duì)比柠偶,若
,則對(duì)
進(jìn)行隨機(jī)改變主慰,反之則不變嚣州。最后保留最好的一組鳥(niǎo)窩位置
;
步驟6 若未達(dá)到最大迭代次數(shù)或最小誤差要求,則返回步驟2 共螺,否則,繼續(xù)下一步情竹;
步驟7 輸出全局最優(yōu)位置藐不。
2.算法結(jié)果
3.參考文獻(xiàn)
[1]蘭少峰,劉升.布谷鳥(niǎo)搜索算法研究綜述[J].計(jì)算機(jī)工程與設(shè)計(jì),2015,36(04):1063-1067.