接續前一篇討論…
粒子群演算法,在運算上非常的簡單,首先先初始撒下粒子之個數、粒子飛行速度。
演算法:
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地位
沒有留言:
張貼留言