****:[email protected]
和聲搜尋演算法(harmony search, hs)是一種新興的智慧型優化演算法,通過反覆調整記憶庫中的解變數,使函式值隨著迭代次數的增加不斷收斂,從而來完成優化。演算法概念簡單、可調引數少、容易實現。
類似於模擬退火演算法對物理退火的模擬、遺傳演算法對生物進化的模仿、以及粒子群優化演算法對鳥群的模仿等,和聲演算法模擬了**演奏的原理,它是 2001 年南韓學者 geem z w 等人提出的一種新穎的智慧型優化演算法。演算法模擬了**創作中樂師們憑藉自己的記憶,通過反覆調整樂隊中各樂器的音調, 最終達到乙個美妙的和聲狀態的過程。
舉個例子:
假設乙個需要優化的函式f(
x),且x=
∈rn 。那麼,可以把
x 看成乙個由
n個成員組成的樂隊,他們用不同的樂器演奏出來**xi
的和聲對應x=
,f(x
) 可以看成是對這組和聲的評價,成員們根據評價不斷調整自己演奏的xi
(搜尋過程),直到評價達到要求。
一. 一般hs演算法步驟
(1)定義問題和引數值
a. 假設乙個最小化問題,即: mi
nf(x
),x=
∈rn
b. 確定引數值
(2)初始化和聲記憶庫hms 從x
的解空間裡隨機生成 hms 個和聲(理解成種群)x1
,x2,
⋯,xh
ms放入和聲記憶庫,並記錄對應的f(
x),和聲庫的形式為: hm
=⎡⎣⎢
⎢⎢⎢⎢
x1x2
⋮xhm
s⎤⎦⎥
⎥⎥⎥⎥
=⎡⎣⎢
⎢⎢⎢⎢
x11x
21⋮x
hms1
x12x
22⋮x
hms2
⋯⋯⋮⋯
x1nx
2n⋮x
hmsn
|f(x
1)|f
(x2)
⋮|f(
xhms
)⎤⎦⎥
⎥⎥⎥⎥
(3) 生成乙個新的和聲 在[
0,1]
之間產生乙個隨機數r1
,與hmcr進行比較
最後得到新的和聲xn
ew
(4)更新和聲記憶庫 對 x
new 進行評估,即f(
xnew
) ,若優於 hm 中的函式值最差的乙個,即f(
xnew
)xwor
st) ,則將xn
ew代替hm中函式值最差的和聲xw
orst
;否則,不做修改。
(5)檢查演算法是否終止
重複步驟 (3)和 (4),直到創作(迭代)次數達到 tmax 為止。
hs流程圖:
演算法
第11行的ub
j 和lb
j 是變數xj
的上界和下界,即確定解空間範圍;最後一行的ni
相當於前面提到的tmax,即迭代次數。
二. 改進的hs演算法(the improved harmony search (ihs) algorithm)
令par和bw能隨迭代次數的變化而變化
初始化時先確定pa
rmin
,par
max,
bwmi
n,bw
max ,
t 為當前迭代次數,可以看出越往後pa
r和bw
越小。二. 全域性最優hs演算法(global best harmony search (ghs) algorithm)
先直接看演算法
相比一般的hs,演算法只改了一行(圖中紅框)。xb
(對應上文是xb
)表示的是和聲庫hm當前最好的和聲,也就是從xb
中隨機挑選乙個變數
k 作為新和聲的第
j個變數。(注意
k 不一定等於j)
二. 自適應全域性最優hs演算法(the self-adaptive ghs (sghs) algorithm)
bw的調整
是需要迭代的總次數,
t 是當前迭代次數。
sghs演算法:
A 搜尋演算法
啟發式搜尋演算法 要理解 a 搜尋演算法,還得從啟發式搜尋演算法開始談起。所謂啟發式搜尋,就在於當前搜尋結點往下選擇下一步結點時,可以通過乙個啟發函式 來進行選擇,選擇代價最少的結點作為下一步搜尋結點而跳轉其上 遇到有乙個以上代價最 少的結點,不妨選距離當前搜尋點最近一次展開的搜尋點進行下一步搜尋 ...
A 搜尋演算法
a 演算法是基於bfs的一種入門級啟發式搜尋演算法,就是將bfs的佇列改為基於估價的優先佇列,可以快速地找到答案。優先隊列為小根堆 while 優先佇列不為空 取出隊頭並擴充套件 將擴充套件節點以估價值 當前值為優先順序入隊 endwhile估價函式越接近真實值演算法越優,但一定不能大於真實值,否則...
搜尋演算法小結
搜尋演算法是利用計算機的高效能來有目的的窮舉乙個問題的部分和所有的可能情況,從而求出問題的解的一種方法。常用的搜尋演算法有 一.回溯法 回溯演算法是所有搜尋演算法中最為基本的一種演算法,其採用了一種 走不通就掉頭 思想作為其控制結構,其相當於採用了先根遍歷的方法來構造解答樹,可用於找解或所有解以及最...