買書捐殘盟

2011年7月25日 星期一

求解最佳化的問題-使用粒子群演算法,part3

接續前一篇討論…

粒子群演算法,在運算上非常的簡單,首先先初始撒下粒子之個數、粒子飛行速度。

演算法:

1.每一粒子飛行速度與方向遷就於粒子本身及群體,定義飛行速度:

Vi(k+1)=W*Vi(k)+C1*rand()*(P_best_i-Xi(k))+C2*rand()*(G_best-Xi(k))............(1)

其中:

W是權重常數,考慮前一刻飛行速度,對下一刻的飛行速度的影響程度

Vi(k+1):第i個粒子,第k+1時刻的飛行速度

Vi(k):第i個粒子,第k時刻的飛行速度

C1,C2:學習係數,當前位置與最佳位置,影響下一時刻飛行速度的權重

rand():隨機函數,產生0~1之間的小數

P_best_i:第i個粒子,所走路徑中自始至今之最佳值

G_best:群體粒子之最佳值

Xi(k):第i個粒子,當前所在位置

2.定義粒子下一時刻的位置:

Xi(k+1)=Xi(k)+Vi(k+1)...........................(2)

其中:

Xi(k+1):第i個粒子,在第k+1時刻的位置

Xi(k):第i個粒子,在第k時刻的位置

(2)式,速度‧時間=Vi(k+1)△t=位置

3.第i粒子最佳位置取代原則:

需定義適應函數(fitness function),若fit(Xi(k+1))優於fit(P_best_i),則P_best_i=Xi(k+1)

4.群體最佳值的修正時機:

若fit(P_best_i)優於fit(G_best),則取代當前G_best地位

沒有留言:

張貼留言