粒子羣算法(PSO)初識

粒子羣算法PSO是模擬羣體智能所建立起來的一種優化算法,用於解決各種優化問題。

 

抽象問題實例化:

假設一羣 鳥在覓食,只有一個地方有 食物,所有鳥兒都看不見食物(不知道食物的具體位置,知道了就不無需覓食了), 但是能聞見食物的氣味,知道食物的 遠近(即知道食物和自己的距離)。

假設鳥與鳥之間能共享信息(即互相知道每個鳥離食物多遠,這個是人工設定鳥羣合作),那麼最好的策略就是結合自己離食物最近的位置和鳥羣中其他鳥距離食物最近的位置這2個因素綜合考慮找到最好的 搜索位置。

一、基本概念

PSO核心概念:

1.粒子(particle):一隻鳥。

2. 種羣(population):鳥羣。

3. 位置(position):一個粒子(鳥)當前所在的位置。

4. 經驗(best):一個粒子(鳥)自身曾經離食物最近的位置。

5. 速度(velocity):一個粒子(鳥)飛行的速度。

6. 適應度(fitness):一個粒子(鳥)距離食物的遠近。

二、粒子算法的過程

粒子羣算法步驟:

1)根據問題需要, 隨機生成粒子,粒子的數量可自行控制。

2)將粒子組成一個種羣。

3)計算粒子的適應度值。(即 )計算粒子距離最優值得遠近。

4)更新種羣中每個粒子的位置和速度。

5)滿足退出條件就退出,不滿足 就轉向步驟3)。

 

三、PSO核心——速度更新

從PSO算法流程圖中可以看出,核心步驟是更新種羣中每個粒子的位置和速度,而速度的更新是核心中的核心。

粒子速度更新公式如下:

v爲粒子當前的速度,w爲慣性因子(有速度就有運動慣性)。rand()爲隨機數生成函數,生成0~1之間的隨機數。

position爲粒子當前的位置,pbest爲本粒子歷史上最好的位置,gbest爲種羣中所有粒子中當前最好的位置。

c1和c2表示學習因子,分別向本粒子歷史最好位置 和種羣中當前最好位置學習。

注: 實際 中設置c1=c2=1,w=0.5

下面從物理原理上解釋這個速度更新公式,速度更新公式分爲3個部分:

第一部分是慣性保持部分,粒子沿着當前的速度和方向慣性飛行,不會偏移。(牛頓運動學第一定理)

第二部分是自我認識部分,粒子受到自身歷史最好位置的吸引力,有回到自身最好位置的意願。(牛頓運動學第二定理)

第三部分是社會認知部分,粒子處在一個社會中(種羣中),社會上有更好的粒子(成功人士),粒子 受到成功人士的 吸引力,有去社會 中成功人士位置的意願。(牛頓 運動學第二定理)

速度更新公式的物理含義:粒子在自身慣性和2中外力作用下,速度和方向發生改變。

這3部分都有重要含義。沒有慣性部分,粒子們將很快向當前的自身最優位置和局部最優位置

靠攏,變成了一個局部算法。有了慣性,不同粒子有在空間中自由飛行的趨勢,能夠在整個

搜索區域內尋找最優解。而沒有自我認知部分,粒子們將向當前的全局最優粒子位置靠攏,

容易陷入局部最優。沒有社會認知部分,粒子們各自向自身最優位置靠攏,各自陷入自身最優

位置,整個搜索過程都不收斂了。

有了速度更新公式,位置更新就簡單了:

                                

注:t一般默認取1。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章