標準的粒子群演算法
在上一節的敘述中,唯一沒有給大家介紹的就是函數的這些隨機的點(粒子)是如何運動的,只是說按照一定的公式更新。這個公式就是粒子群演算法中的位置速度更新公式。下面就介紹這個公式是什麼。在上一節中我們求取函數y=1-cos(3*x)*exp(-x)的在[0,4]最大值。並在[0,4]之間放置了兩個隨機的點,這些點的座標假設為x1=1.5; x2=2.5;這裡的點是一個標量,但是我們經常遇到的問題可能是更一般的情況--x為一個向量的情況,比如二維的情況 z=2*x1+3*x22的情況。這個時候我們的每個粒子為二維,記粒子P1=(x11,x12),P2=(x21,x22),P3=(x31,x32),......Pn=(xn1,xn2)。這裡n為粒子群群體的規模,也就是這個群中粒子的個數,每個粒子的維數為2。更一般的是粒子的維數為q,這樣在這個種群中有n個粒子,每個粒子為q 維。
由n個粒子組成的群體對Q維(就是每個粒子的維數)空間進行搜尋。每個粒子表示為:xi=(xi1,xi2,xi3,...,xiQ),每個粒子對應的速度可以表示為vi=(vi1,vi2,vi3,....,viQ),每個粒子在搜尋時要考慮兩個因素:
1。自己搜尋到的曆史最優值 pi ,pi=(pi1,pi2,....,piQ),i=1,2,3,....,n。
2。全部粒子搜尋到的最優值pg,pg=(pg1,pg2,....,pgQ),注意這裡的pg只有一個。
下面給出粒子群演算法的位置速度更新公式:
這裡有幾個重要的參數需要大家記憶,因為在以後的講解中將會經常用到:
它們是:
是保持原來速度的係數,所以叫做慣性權重。
是粒子跟蹤自己曆史最優值的權重係數,它表示粒子自身的認識,所以叫“認知”。通常設定為2。
是粒子跟蹤群體最優值的權重係數,它表示粒子對整個群體知識的認識,所以叫做“社會知識”,經常叫做“社會”。通常設定為2。
是[0,1]區間內均勻分布的隨機數。
是對位置更新的時候,在速度前面加的一個係數,這個係數我們叫做約束因子。通常設定為1。
這樣一個標準的粒子群演算法就結束了。
下面對整個基本的粒子群的過程給一個簡單的圖形表示:
判斷終止條件可是設定適應值到達一定的數值或者迴圈一定的次數。
注意:這裡的粒子是同時跟蹤自己的曆史最優值與全域(群體)最優值來改變自己的位置預速度的,所以又叫做全域版本的標準粒子群最佳化演算法。