前言
學習粒子群算法有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)..............