天天看點

算法篇----粒子群優化(PSO)算法回顧(一)前言1 粒子群算法(PSO)概述2 PSO的具體步驟3 PSO的改進方法及不同版本

前言

   學習粒子群算法有7個多月了,總結一下。溫故而知新,希望可以再進一步。畢竟人蠢,了解能力有限,僅供參考!

  先說背景:1995年,由Kennedy和Eberhart提出,有鳥群覓食行為、進化理論和人工生命的影子。

1 粒子群算法(PSO)概述

    首先,給出Particle Swarm Optimization 概念:一種基于群體的進化計算技術,将可能解視作一個粒子,粒子有位置向量、速度向量和适應度值,粒子間會互相協作,在搜尋空間裡搜尋全局最優值。這種算法主要用于非線性方程的求解。          數學描述:     (1)适應度函數。粒子群優化算法的适應度函數選取比較簡單,一般情況下可以 直接把所要求解問題的目标函數作為适應度函數。不過,也可以對目标函數進行适當的變換。 

   (2) 粒子速度公式:

      v[i] = v[i] + c1 * r1 * (pbest[i] - present[i]) + c2 * r2 * (gbest - present[i])        

   引入權重w後,改進的速度公式(比較常用):

     v[i] = w * v[i] + c1 * r1 * (pbest[i] - present[i]) + c2 * r2 * (gbest - present[i])    

   (3) 粒子位置公式:present[i] = present[i] + v[i]  

   符号解釋:     c1、c2:加速常數(學習因子);     r1、r2 :随機數;     v[i]:第i個粒子的速度;     present[i]:粒子的目前位置;     pbest[i]: 單個粒子最優位置;     gbest :全局粒子最優位置;     w:權重。

2 PSO的具體步驟

    step1:初始化一個規模為M的粒子群,設定初始位置和深度

    step2:計算每個粒子的适應度值

    step3:将粒子的适應度值和其最好位置P(is)的适應度值比較,取最好的值

    step4:比較每個粒子的适應度值和全局最好位置P(gs)的适應度值,取最好的作為全局最優值

    step5:根據速度公式和位置公式,更新粒子速度及位置

    step6:滿足終止條件則輸出,否者傳回step2(條件:輸出結果可滿足預定的最小适應門檻值 )

3 PSO的改進方法及不同版本

    粒子群的改進政策如下:

    (1)引入慣性權重,提高全局搜尋能力;

    (2)帶鄰域操作,克服在搜尋後期随着搜尋增加結果無改進的缺點;

    (3)應用拉伸技術,避免陷入局部最小值;

    (4)采用适應度定标的方法,提高粒子間适應度差異;

    (5)協同,将粒子群再分成K個互相獨立的子群在不同次元上搜尋。

    粒子群的種類:

    (1)原始粒子群算法

    (2)标準粒子群算法

    (3)基于動态鄰居和廣義學習的粒子群算法

    (4)基于K均值聚類的動态多種群粒子群算法

    (5)多群體協同進化粒子群優化算法

    (6)自适應網格和擁擠距離的多目标粒子群算法

    (7)基于ε優的自适應多目标粒子群算法

    (8)..............