當前位置:編程學習大全網 - 源碼下載 - 優化算法筆記(二十六)和聲搜索算法

優化算法筆記(二十六)和聲搜索算法

(以下描述,均不是學術用語,僅供大家快樂的閱讀)

和聲搜索算法(Harmony Search)是受音樂中的和聲啟發而提出的啟發式算法,其提出(發表)年份為2001年,算是壹個比較老的算法了。和聲搜索算法放在現在,其性能非常壹般,不過它提出了壹種領域搜索的具體實現方式,可以和不同的算法融合,提高其他算法的性能。

單獨看壹個和聲意義不大,壹個和聲的壹個維度會根據群體中該維度的所以取值來確定其領域範圍,然後再進行領域搜索。

原算法受音樂啟發,所以它所解決的目標問題也是離散的問題。

和聲搜索算法中的壹個個體被稱為和聲記憶(Harmony Memory,HM),群體中和聲記憶的數量為N,每個和聲記憶中的音數(維度)為D。每壹維的取值範圍為 。

原算法中每個維度的取值範圍L是壹組有序的離散的值,即在指定的變量值中選取壹個作為和聲記憶的值。

每個和聲記憶每次叠代只能變為其領域的值。

和聲算法中有兩種操作:1.移動到領域,2.變異到領域

其概率分別為Harmony Memory Considering Rate(HMCR)和Pitch Adjusting Rate(PAR)。

其中HMCR取值約為0.95,PAR取值約為0.10。

可以看出該算法的步驟和數值參考了遺傳算法,而且兩者都是為了處理離散問題。

例子如下:

和聲記憶的數量為3,維度為2,其中第1維的取值範圍為{A,B,C,D,E,F,G},第2維的取值為{3,4,5,6}。

第1代,三個個體的取值如下

在計算第2代時,每個個體的每壹維只能去到該維度的鄰域的值。

個體1_2能取到的值為(A,3) (A,4) (B,3) (B,4)

個體2_2能取到的值為(F,4)(F,5)(F,6)(G,4)(G,5)(G,6)

個體3_2能取到的值為(C,3)(C,4)(C,5)(D,3)(D,4)(D,5)(E,3)(E,4)(E,5),

圖中標出了這三個個體能夠到達的鄰域。

變異到鄰域到操作也很簡單,該操作是對標了遺傳算法中的變異操作。

變異到鄰域操作時,該維度不會變異到當前已有的值。

如個體1_1變異第1維,由於群體中第1維的取值為{A,D,G}故該維度只能取到{B,C,E,F}。

下圖中標有顏色的塊出了變異操作無法到達的位置,空白位置為變異操作能夠到達的位置。(如果沒有空白位置呢?概率非常小,畢竟個體位置遠少於解空間位置,如果出現了,不變異或者隨機壹個位置都行)

叠代過後,如果新的位置更好,則保留該和聲記憶,並去除最差的和聲記憶。

最後文章給出了判斷找到的解是否是最優解的判斷函數

其中Hr=HMCR,Hi會在該維度找到更好值時隨著叠代次數遞增。該公式的作用主要是為了判斷何時去結束算法程序,不過在之前我們都是使用的最大叠代次數來結束算法程序,所有好像沒多大用處。

算法的流程也挺簡單的:

和聲搜索的原算法是根據音樂中和聲概念提出的,音符是離散的,所有算法也是離散的,對標遺傳算法用於處理離散解空間問題,那麽如何修改和聲搜索算法使其能處理連續數值問題呢?

最關鍵的點是如何處理“鄰域”,在連續解空間上,很難定義出壹個點的領域,而且每個維度上的取值數量也是無窮的。

為和聲搜索算法定義鄰域也有幾種思路:

1 . 將所有的個體定義為該個體的鄰域,即每次隨機從群體中選擇壹個個體,該維度移動到所選中的個體處。

其中D,E,F分別為AB,AC,BC的中點,A,B,C三個和聲記憶的鄰域將由DEF這三個點及解空間邊界決定,此時的鄰域比思路2中的更小,也不會出現重疊部分。

當某壹維度的兩個領域值相等時,上述(二維)的鄰域(面)將會退化成鄰域(線),可能會導致該維度快速收斂到該值,故此時需要忽略重復值,將鄰域重新展開(成為面)。

在連續算法中,當滿足HCMR條件時,算法將根據上面的色塊在鄰域中隨機選擇壹個值;當滿足PAR條件時,由於無法剔除指定值,簡單起見,直接移動到隨機的和聲記憶的該維度。

後續的實驗由於是求解連續函數最值,故會選擇上述連續算法中的三種思路來進行。

適應度函數 。

實驗壹 : 思路壹

從圖像可以看出,思路壹的策略與遺傳算法非常的相似,移動路線類似於十字架,最終也收斂到了正解附近。前期搜索主要靠鄰域移動,後期移動則是靠變異。

從結果也可以看出與遺傳算法的差距不大,算法不是很穩定,其策略是飛到相鄰的和聲記憶上,所以跨越度比較大,精度全靠變異。

實驗二 : 思路二

從圖像中可以看出,種群的搜索路徑不在像實驗壹中那樣直來直去的十字路徑,收斂的速度也慢了不少,但是仍能在正解附近收斂。

從結果中可以看出,思路二的結果好了不少,同時也更加穩定(誤,運氣好,之前實驗出現過不好的結果,沒能重現)。該思路的鄰域搜索面積會更大,且個體之間的鄰域存在重疊部分,故會有可能收斂於不好的位置,不過概率也較小。

實驗三 : 思路三

圖像逐漸貪吃蛇化!前期的圖像與思路壹相似,後期的圖像有點類似遺傳算法,可能是鄰域的面積逐漸縮小成了長條狀所致,不過最終“貪吃蛇”還是吃到了食物。

結果可以看出,思路三的穩定性不太行,當全部個體收斂到了壹點後會開始進行思路壹的替換操作,但無論如何替換都是相同的值,難以找到更優的位置,於是會出現壹個較差的結果。這裏也可以增加範圍隨機來跳出局部最優。

和聲搜索算法是根據和聲樂理知識提出的算法。由於音符是離散的值,算法也對標了遺傳算法,故原算法也是針對離散問題提出的。在解決連續性問題時,需要對其鄰域概念進行擴展和修改,最終的效果與遺傳算法相差不大。

在現在看來,和聲搜索算法的效果屬實壹般,對於其的針對性研究也不太多,該算法主要提出了其不同於遺傳算法的遍歷解空間的方式。所以在很多論文中都能看到用和聲搜索算法與其他算法融合來進行改進的例子。

與遺傳算法相比,和聲搜索算法的鄰域概念,將遺傳算法的基因由線擴展到了面上。這壹點有點類似於SVM和卷積神經網絡的關系,不過,遺傳算法和和聲搜索算法的差別並沒有那麽大,只是搜索方式不同罷了。

參考文獻

Geem Z W , Kim J H , Loganathan G V . A New Heuristic Optimization Algorithm: Harmony Search[J]. Simulation, 2001, 2(2):60-68. 提取碼:4udl

Omran M , Mahdavi M . Global-best harmony search[J]. Applied Mathematics and Computation, 2008, 198(2):643-656. 提取碼:pk3s

以下指標純屬個人yy,僅供參考

目錄

上壹篇 優化算法筆記(二十五)飛蛾撲火算法

下壹篇 優化算法筆記(二十七)蜉蝣算法

  • 上一篇:論壇到底是個什麽東西
  • 下一篇:計算機二級考試準入怎麽復習?
  • copyright 2024編程學習大全網