0 引言
布谷鳥搜索(Cuckoo Search,CS)是由 Xin-She Yang 和 Suash Deb 於 2009 年開發的自然啟發式算法。CS 基於布谷鳥的寄生性育雛(brood parasitism,又巢寄生)行為。該算法可以通過所謂的 Levy 飛行來增強,而不是簡單的各向同性隨機游走。研究表明,該算法可能比遺傳算法、PSO 以及其他算法更有效。
1 原理
布谷鳥育雛行為
布谷鳥(杜鵑)是一種神奇的鳥,不僅因為它們動聽的啼鳴,還因它們的積極的繁殖策略。杜鵑科中的犀鵑(Ani Cuckoo)和圭拉鵑(Guira Cuckoo),將它們的蛋放在其他鳥的巢中,通過去除其他鳥(寄主)的蛋來增加自己蛋的孵化幾率。有相當多種類的鳥都有將自己的蛋放在其他鳥的巢中這種寄生性育雛行為 [19]。
寄生性育雛分為三種:種內寄生(intraspecific brood parasitism)、合作養育(cooperative breeding)和巢占據(nest takeover)。一些寄主鳥會與入侵的布谷鳥發生直接沖突。如果一個寄主鳥發現這些蛋不是他們自己的,那么他們要么將這些外來蛋清除掉,要么就直接放棄這個巢,在別處建造一個新的巢。一些布谷鳥,例如 New World brood-parasitic Tapera,已經進化成這樣一種方式,雌杜鵑通常非常善於模仿幾種特定寄主的卵的顏色和紋理。這減少了它們蛋被遺棄的可能性,從而增加了它們的繁殖力。
此外,該物種對產蛋時機的把握也非常到位。布谷鳥通常會選擇那些寄主剛剛產下自己蛋的巢。一般來說,布谷鳥蛋的孵化時間要比寄主蛋的孵化時間要早一些。一旦第一只布谷鳥雛鳥孵化出來,第一個本能的動作就是通過盲目地推動將其他蛋從巢中推出,從而增加寄主對布谷鳥雛鳥的食物供給。研究還表明,杜鵑雛鳥還可以模仿寄主雛鳥的叫聲,以獲得更多的被喂食機會。
Levy 飛行
另一方面,各種研究表明,許多動物和昆蟲的飛行行為表現出了具有冪律規律的 Lévy 飛行的典型特征。Reynolds 和 Frye 最近的一項研究表明,果蠅(或 Drosophila melanogaster)利用一系列直線飛行路徑和突然的 90° 轉彎來探索景觀,從而產生 Lévy飛行式的間歇無標度搜索模式 [21]。針對人類行為的研究也表明,如 Ju/’hoansi 狩獵采集覓食模式等也表現出了 Lévy 飛行的典型特征 [4]。即使是光線也與 Lévy 飛行有聯系 [2]。另外,該行為已被應用於優化搜索,結果表明其具有潛力 [20]。
布谷鳥搜索
CS 是由 Xin-She Yang 和 Suash Deb 於 2009 年開發的自然啟發式算法 [30,32,33]。CS 基於布谷鳥的寄生性育雛(brood parasitism,又巢寄生)行為。
此外, 該算法可以通過所謂的 Levy 飛行來增強,而不是簡單的各向同性隨機游走。研究表明,該算法可能比遺傳算法、PSO 以及其他算法更有效 [30]。為了簡化描述標准 CS,這里我們引入以下三條理想化的規則:
- 每只布谷鳥每次下一個蛋,並將其放入隨機選擇的巢中。
- 具有優質蛋的最佳巢會被帶到下一代。
- 可用的寄主巢數量是固定的,且寄主以概率 pa∈(0,1)pa∈(0,1) 發現布谷鳥放的蛋。在這種情況下,寄主可以消滅該蛋或放棄舊巢另建新巢。
進一步地,對於最后一個假設,新巢可以通過替換 nn 個宿主巢穴的 papa 來近似。對於最大化問題,解質量或適應度可以簡單地假設為與目標函數的值成比例。其他形式的適應度可以用與遺傳算法中的適應度函數類似的方式來定義。
從實現的角度來看,我們可以用下面的簡單規則:每個巢中的蛋代表一個解,每個布谷鳥只能下一個蛋。目的是使用新的和可能更好的解(布谷鳥)來取代巢中不太好的解。顯然,這個算法可以擴展到更復雜的情況,也就是,每個巢有多個蛋來代表一組解。這里,我們只考慮最簡單的情況,每個巢只有一個蛋。在這種情況下,蛋,巢或布谷鳥之間沒有區別,因為每個巢對應一個雞蛋,這也代表一只布谷鳥。
該算法使用由開關參數 papa 控制的局部隨機游走和的全局探索隨機游走的平衡組合。局部隨機游走可以寫成
其中 xtjxjt 和 xtixit 是通過隨機置換選擇的兩個不同的解,H(u)H(u) 是一個 Heaviside 函數(單位階躍函數)。ϵϵ 是從均勻分布中抽取的隨機數,ss 是步長。這里,⊗⊗ 表示兩個向量的 entry-wise 積(點乘)。
另一方面,全局隨機行走使用 Levy 飛行
其中
這里 α>0α>0 是步長縮放因子,與感興趣問題的尺度相關。大多數情況,我們使用 α=O(L/10)α=O(L/10),而 LL 是感興趣問題的特征尺度,在某些情況下 α=O(L/100)α=O(L/100) 可能會更有效並且能避免飛得太遠。顯然,這兩個更新方程的 αα 值可能不同,因此,導致產生兩個不同的參數, α1α1 和 α2α2。為了簡化,這里我們使用 α1=α2=αα1=α2=α。
基於上述三條規則,CS 的基本步驟可以總結為以下偽代碼:
Figure 1 Pseudo code of the cuckoo search for a minimization problem.
式(2)本質上是一種隨機行走的隨機(stochastic)公式。事實上,隨機行走是一個馬爾科夫鏈,其下一個狀態/位置僅取決於當前狀態(上式的第一項)和轉移概率(上式的第二項)。然而,新解的很大一部分應該由遠場隨機化產生,它們的位置應該離當前最佳解足夠遠,這將確保系統不會陷入局部最優 [30, 32]。
關於布谷鳥搜索的文獻在快速增長。它得到了廣泛地關注,最近不同領域的很多研究都用到了布谷鳥搜索 [6,7,9-11,13,36]. 例如,Walton 等改進了該算法提出了修改的 CS 算法 [26];Yang 和 Deb 擴展該算法到多目標優化 [33]。一個全面的綜述可以從 Yang 編寫的書上看到 [35]。
布谷鳥搜索的特殊情況
CS 作為一種元啟發式算法有着令人驚訝的豐富特性。如果我們仔細觀察更新公式(1)(2),我們就能發現豐富的細節。對於式(1)我們可以把因子放在一起,設 Q=αs⊗H(pa−ϵ)Q=αs⊗H(pa−ϵ) ,然后我們有 Q>0Q>0。於是,式(1)變成了差分進化的主更新公式。更進一步,我們將 xtjxjt 替換為當前最佳解 g∗g∗ 並設 k=ik=i,我們有
這本質上是沒有個體歷史最佳的 PSO 變種。在這種情況下,非常類似 Yang 等開發的 APSO [29]。
另一方面,對於式(2),這種隨機行走是具有 Levy 飛行轉移概率的模擬退火(simulated annealing,SA)。在這種情況下,SA 的隨機冷卻表由 pa 控制。
因此,差分進化、PSO 以及 SA 都可以看作是 CS 的特殊情況。相反,我們也可說 CS 將 DE、PSO 和 SA 好的和有效的部分組合在一個算法中。因此,CS 非常有效。
如何執行 Levy 飛行
從實現的角度來看,用 Lévy 飛行生成隨機數應包括兩個步驟:隨機方向的選擇和服從 Lévy 分布的步長的生成。方向的生成應該服從均勻分布,而生成步長是相當棘手的。有幾種方法可以實現,但是最有效且直接的方法就是使用所謂的 Mantegna 算法來實現對稱的 Lévy 穩定分布 [15]。
然而,生成正確服從 Lévy 分布的偽隨機步長並不簡單。 在 Mantegna 算法中,步長 s 可以通過以下變換使用兩個服從高斯分布的變量 U 和 V 來計算:
其中 ,U∼N(0,σ2),V∼N(0,1).(6)
這里 U∼(0,σ2)意味着樣本服從均值為 0 方差為 σ2 的高斯正態分布。方差可以使用下式計算:
該分布,對 |s|≥|s0|m|s|≥|s0|m 服從預期 Lévy 分布,其中 s0s0 是最小步長。原則上,|s0|≫0|s0|≫0,但實際上 s0只要值合理就可取,如 s0=0.1s0=0.1 到 1。
這些公式看起來很復雜,但 Γ 函數對於給定的 λ 是常數。例如,當 λ=1λ=1 時,我們有 Γ(1+λ)=1Γ(1+λ)=1,Γ((1+λ)/2)=1Γ((1+λ)/2)=1 以及
Mantegna 算法在數學上已被證明能夠產生符合服從要求的分布的隨機樣本 [15]。
參數選擇
CS 中有多個參數。除了種群規模 n 之外,還有切換概率 papa,步長縮放因子 αα 和 Lévy 指數 λλ。然而,關鍵的參數是 papa 和 n,因為我們可以把 papa 和 λλ 作為常數。通過改變它們的值,我們發現對於大多數問題,我們可以設 λ=1.5λ=1.5和 α=0.01α=0.01。
對於關鍵參數,我們也嘗試改變寄主巢的數量(或種群規模 n)和概率 papa。我們使用了 n=5,10,15,20,30,40,50,100,150,250,500n=5,10,15,20,30,40,50,100,150,250,500 以及 pa=0,0.01,0.05,0.1,0.15,0.2,0.25,0.3,0.4,0.5pa=0,0.01,0.05,0.1,0.15,0.2,0.25,0.3,0.4,0.5。從我們的模擬中,我們發現 n=15n=15 到 40 和 pa=0.25pa=0.25對於大多數優化問題是足夠的。結果和分析也表明收斂速度在一定程度上對所使用的參數不敏感。這意味着對於任何問題都不需要進行仔細地調整。
讓我們看一個簡單的例子。我們使用的許多測試函數之一有雙變量 Michalewicz 函數
其中 m=10m=10,(x,y)∈[0,5]×[0,5](x,y)∈[0,5]×[0,5]。該函數在 (2.20319, 1.57049)處有全局最小值 f∗≈−1.8013f∗≈−1.8013。使用 CS 可以很容易地找到這個全局最優值,結果如圖 2 所示,其中巢的最終位置也在圖中以 ♢♢ 標出。這里我們使用了 n = 15 個巢,α=1α=1 和 pa=0.25pa=0.25。
Figure 2 Search paths of nests using CS. The final locations of the nests are marked with in the figure.
從圖中我們可以看到,隨着最優值的接近,大多數巢朝着全局最優的方向匯聚。 我們還注意到,在多模態函數的情況下,巢也分布在不同的(局部)最優點。 這意味着,如果巢的數量遠遠大於局部最優的數量,那么 CS 可以同時找到所有的最優解。當我們處理多模態和多目標優化問題時,這個優勢可能變得更加重要。
CS 變種
在過去的幾年里,CS 的許多變種已經被開發出來。 盡管該算法只有短暫的歷史,但由於其簡單、高效和靈活,CS 引起了大量的關注。 結果就是,相關文獻顯著地增長。標准 CS 非常強大和高效,但它是為連續優化而開發的。一個有用的擴展是開發離散 CS,以使它可以有效地解決調度問題和組合優化。已經有很多 CS 的變種, 綜述請參考 [34,12,35]。這里我們只概述幾個變種:
-
修改的布谷鳥搜索(Modified cuckoo search,MCS)。Walton 等人開發了修改的的布谷鳥搜索 [26]。已被用來優化網格生成和其他應用。
-
改進的布谷鳥搜索(Improved cuckoo search,ICS)。在人工智能應用上, Valian 等人 [23] 提出了用改進的 CS 訓練前饋神經網絡 [23,24]。與此同時,Vazquez [25]也在使用 CS 來訓練尖峰神經模型 [25]。
-
量子布谷鳥搜索(Quantum cuckoo search,QCS)。Layeb [14] 通過給算法增加量子行為提出了一個 CS 的變體,稱之為量子 CS。 QCS 已被應用於解決背包問題 [14]。
-
離散布谷鳥搜索(Discrete cuckoo search,DCS)。對於調度和組合問題等離散應用,也有幾個變種。Ouaarab 等人 [18] 開發了一個解決旅行商問題(TSPs)的離散 CS [18]。Chandrasekaran 和S imon [5] 提出了多目標 CS 方法來解決多目標調度問題 [5]。
-
多目標布谷鳥搜索(Multi-objective cuckoo search,MOCS)。Yang 和 Deb [33] 提出了一個求解多目標工程優化問題的多目標 CS 方法 [33]。
-
離散多目標布谷鳥搜索(Discrete multi-objective cuckoo search,DMOCS)。在多目標和調度問題的背景下,Chandrasekaran 和 Simon [5] 開發了 CS 的變體來解決離散多目標調度問題 [5]。
-
混合布谷鳥搜索(Hybrid cuckoo search,HCS)。有些變體試圖將 CS 與其他算法結合起來。例如,Wang 等人 [28] 將 CS 與 PSO 相結合,取得了很好的改進 [28]。Salimi 等人 [22] 結合了修改的 CS 與共軛梯度法 [22]。
還有很多其他的變種,Fister 等人提供了詳細的綜述 [12]。Yang 和 Deb 供了一個概念性的綜述 [34]。最近編寫的書有更多關於杜鵑搜索和螢火蟲算法的文獻 [35]。
為什么 CS 這么有效
除了前面的分析表明,DE、PSO 和 SA 是 CS 的特例,最近的理論研究也表明 CS 具有全局收斂性 [27],如下一小節所述。
PSO 的理論研究表明,它可以快速收斂到當前最優解,但不一定是全局最優解。事實上,一些分析表明,PSO 更新方程不滿足全局收斂條件,因此不能保證全局收斂。另一方面,已經證明布谷鳥搜索能夠滿足全局收斂的要求,從而保證了全局收斂性 [27]。這意味着對於多模態優化,PSO 可能過早地收斂到局部最優,而 CS 通常可以收斂到全局最優。
此外,CS 具有兩種搜索能力:局部搜索和全局搜索,由切換/發現概率控制。正如前面提到的那樣,局部搜索是非常密集的,搜索時間約為 1/4(pa=0.25pa=0.25),而全局搜索約占總搜索時間的 3/4。這使得可以在全局范圍內更高效地探索搜索空間,從而可以以更高的概率發現全局最優。
CS 的另一個優勢是它的全局搜索使用 Lévy 飛行,而不是標准的隨機行走。由於 Lévy 飛行具有無限的均值和方差,CS 可以比使用標准高斯過程的算法更有效地探索搜索空間。這一優勢,加上局部搜索能力,保證全局收斂,使 CS 非常高效。事實上,各種研究和應用已經證明 CS 是非常有效的 [32,13,26,8]。
全局收斂:數學簡析
Wang 等人為標准 CS 提供了全局收斂的數學證明,他們的方法基於馬爾可夫鏈理論 [27]。他們的證明可以概括如下:
由於更新公式中有兩個分支,局部搜索主要用於局部細化,而主要的探索是通過全局搜索來完成的。為了簡化分析並強調全局搜索能力,我們使用簡化版的 CS。也就是說,與發現/切換概率 papa 相比, 我們只使用隨機數 r∈[0,1]r∈[0,1] 的全局分支。現在我們有,
因為 CS 算法是一個隨機搜索算法,我們可以總結為以下主要步驟:
- 初始種群由 n 個隨機位置的巢構成,X={x01,x02,...,x0n}X={x10,x20,...,xn0} ,然后評估它們的目標函數值,以找到當前的全局最佳 g0tgt0。
- 由下式更新新解/位置
x(t+1)i=x(t)i+α⊗L(λ).(11)(11)xi(t+1)=xi(t)+α⊗L(λ). - 從均勻分布 [0,1] 中取隨機數 r。如果 r>par>pa,則更新 x(t+1)ixi(t+1)。然后評估新解,找到新的全局最佳 g∗tgt∗。
- 如果滿足停止要求,則 g∗tgt∗ 是目前為止發現的最好的全局解。否則,返回步驟(2)。
算法的全局收斂性。如果 ff 是可測的,且可行解空間 ΩΩ 是 Rnℜn 上的一個可測子集,算法 A 滿足前兩個條件,搜索序列 {xk}∞k=0{xk}k=0∞,則
也就是說,算法 A 可以以概率 1 全局收斂。這里 P(xk∈Rϵ,M)P(xk∈Rϵ,M) 是第 k 次迭代時,在 Rϵ,MRϵ,M 上的第 k 個解的概率測度。
狀態和狀態空間。搜索歷史中布谷鳥/巢的位置及其全局最優解 g 形成了布谷鳥的狀態:y=(x,g)y=(x,g) ,其中 x,g∈Ωx,g∈Ω,f(g)≥f(x)f(g)≥f(x)。所有可能狀態的集合形成了狀態空間,用下式表示
布谷鳥群/種群的狀態和空間。所有 n 個布谷鳥/巢的狀態組成群的狀態,由 q=(y1,y2,...,yn)q=(y1,y2,...,yn) 表示。所有布谷鳥的所有狀態組成了群的狀態空間,記為
顯然,Q 包含整個種群的歷史全局最優解 g∗g∗ 和歷史上所有個體最優解 gi(1≤i≤n)gi(1≤i≤n)。此外,整個種群的全局最優解是所有 gigi 中最好的,所以 f(g∗)=min(f(gi)),1≤i≤nf(g∗)=min(f(gi)),1≤i≤n。
CS 中從狀態 y1y1 到 y2y2 的轉移概率是
其中 P(x1→x′1)P(x1→x1′) 是 CS 中第 2 步的轉移概率,P(g1→g′1)P(g1→g1′) 是該步驟中歷史全局最優的轉移概率。P(x′1→x2)P(x1′→x2) 是第 3 步的轉移概率,而 P(g′1→g2)P(g1′→g2) 是歷史全局最佳。
對於優化問題 <Ω,f><Ω,f> 的全局最優解 gbgb,最優狀態集定義為 R={y=(x,g)|f(g)=f(gb),y∈Y}R={y=(x,g)|f(g)=f(gb),y∈Y}。
對於優化問題 <Ω,f><Ω,f> 的全局最優解 gbgb,最優群狀態集可定義為
所有這些集合將保證收斂條件得到滿足。進一步詳細的數學分析證明,當迭代次數接近足夠大時,群狀態序列將收斂到最優狀態/解集 HH。因此,CS 能夠保證全局收斂。
應用
CS 已經被應用於許多優化和計算智能領域。例如,在工程設計應用中,CS 在一系列連續優化問題(例如彈簧設計和焊接梁設計)上面比其他算法具有更好的性能 [32,13]。
另外,由 Walton 等人修改的 CS [26] 已被證明可以非常有效地解決非線性問題,如網格生成。 Yildiz [36] 利用 CS 在銑削加工中選擇最優的機床參數,提高了結果,Zheng 和 Zhou [37] 提供了一個使用高斯過程的CS變體。
在數據融合和無線傳感器網絡中,CS 已被證明是非常有效的 [9,10]。此外,基於量子的 CS 能夠有效地解決背包問題 [14]。從算法分析的角度來看,Civicioglu 和 Desdo [8] 提出的 CS 與粒子群優化(PSO),差分進化(DE)和人工蜂群(ABC)的概念比較表明,CS 與差分進化算法比 PSO 與 ABC 提供了更健壯的結果。Gandomi 等人 [13] 為解決各種結構優化問題,提供了更為廣泛的比較研究,得出的結論是,CS 與其他算法如 PSO 和遺傳算法(GA)相比能夠獲得更好的結果。在各種應用中有一些有趣的性能提升,如 Valian 等人使用 CS 來訓練神經網絡 [23],以及可靠性優化問題 [24]。
對於復雜的相平衡應用,Bhargava 等人 [1] 表明,CS 為解決熱力學計算提供了一個可靠的方法。與此同時,Bulatovi’c 等人 [3] 利用 CS 解決了六桿雙閉鎖聯鎖問題,Moravej 和 Akhlaghi [16] 以良好收斂速度和性能解決了配電網絡中的 DG 分配問題。
作為進一步的擴展,Yang 和 Deb [33] 針對設計工程應用提出了多目標布谷鳥搜索(MOCS)。對於多目標調度問題,Chandrasekaran 和 Simon [5] 使用 CS 算法取得了很大的進展,這證明了他們提出的方法的優越性。最近的研究表明,CS 在許多應用中可以比其他算法表現得更好 [13,17,37,36]。更詳細的綜述,請參閱 Yang [35] 和 Yang 等人 [31]。