花朵授粉算法【記錄】

最近在做尋優算法,到了花朵授粉算法時,發現網上可用的資料不多,大部分爲期刊論文,通過閱讀一些期刊論文稍微瞭解了一點,遂做一個記錄。

花朵授粉算法( Flower Pollination Algorithm,FPA是由英國劍橋大學學者Yang於2012年提出的其基本思想來源於對自然界花朵自花授粉異花授粉的模擬是一種新的元啓發式羣智能隨機優化技術 。算法中爲了簡便計算,假設每個植物僅有一朵花,每朵花只有一個配子,我們可以認爲每一個配子都是解空間中的一個候選解。

Yang通過對花朵授粉的研究,抽象出以下四大規則:

1) 生物異花授粉被考慮爲算法的全局探測行爲,並由傳粉者通過Levy飛行的機制實現全局授粉;

2)非生物自花授粉被視作算法的局部開採行爲,或稱局部授粉;

3)花朵的常性可以被認爲是繁衍概率,他與兩朵參與授粉花朵的相似性成正比例關係;

4)花朵的全局授粉與局部授粉通過轉換概率 p∈[0,1]進行調節由於物理上的鄰近性和風等因素的影響在整個授粉活動中轉換概率 p是一個非常重要的參數文獻[1]中對該參數的試驗研究認爲p =0.8 更利於算法尋優


直接上步驟(以多元函數尋優爲例):

目標函數 : min g = f(x1,x2,x3,x4...........xd)

設置參量:N(候選解的個數),iter(最大迭代次數),p(轉換概率),lamda(Levy飛行參數)

初始化花朵,隨機設置一個NXd的矩陣;

計算適應度,即函數值;

獲取最優解和最優解得位置;

A循環 1 : 1 :iter

    B循環

        if rand < p

            全局授粉;

        else

            局部授粉;

        end if

        更新新一代的花朵與適應度(函數變量和函數值);

    B循環end

    獲取新一代的最優解與最優解位置;

A循環end


全局更新公式:xi(t+1) = xi(t) + L(xi(t) - xbest(t))    L服從Levy分佈,具體可以搜索布穀鳥算法。

局部更新公式:xi(t+1) = xi(t) + m(xj(t) - xk(t))    m是服從在[0,1]上均勻分佈的隨機數。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章