上面看起來像波浪狀海綿的圖形,越紅的部分數值越大,越藍的部分數值越小, 看得出來這個函式有很多 local minimum (也有很多 local maximum), 而最小的 local minimum 即 global minimum 落在原點。這個函式被故意設計成有很多個 local minimum,讓演算法一不小心就會落到 local minimum,所以這個函式很適合拿來當作最佳化演算法的 benchmark,演算法如果沒有仔細設計就會找不到 global minimum。
Rastrigin funtion 的定義如下
其中 xi 是變數,n 是變數的個數。 以下是我寫的 matlab 程式碼(matlab 的 global optimization toolbox 也提供了一個 gui demo),有興趣的人可以玩玩
grids = linspace(-5.12, 5.12, 1000); [X, Y] = meshgrid(grids, grids); A = 10.0; Z = 2*A+ X.^2 + Y.^2 - A * (cos(2*pi*X) + cos(2*pi*Y)); mesh(Z); zlim([0 80]); axis tight set(gca,'XTickLabel',{'-5.12'; '-2.56'; '0'; '2.56'; '5.12'}) set(gca,'YTickLabel',{'-5.12'; '-2.56'; '0'; '2.56'; '5.12'})
No comments:
Post a Comment