初探粒子群優化演算法(PSO)

2021-10-07 21:42:59 字數 3266 閱讀 1964

pso的原理及基本概念

引數分析

粒子群的拓撲結構

初始化時的前人經驗

粒子群優化演算法(pso)最初是由kennedy和eberhart博士於2023年受人工生命研究的結果啟發,在模擬鳥群覓食過程中的遷徙和群集行為時提出的一種基於群體智慧型的演化計算技術。

pso是一種隨機全域性優化技術,通過粒子間的相互作用發現複雜搜尋空間中的最優區域。由於pso演算法獨特的優勢,在工程領域中收到研究者的廣泛關注。

pso演算法歸根到底是一種利用隨機法求多維函式特定區域的最值的演算法。

(1)相對於其他尋優演算法,需要調整的引數較少。

(2)演算法實現較為簡單,效率較高。

(3)魯棒性較好。

(4)相對於其他尋優演算法,pso容易收斂。

(1)易陷入區域性最優解中

(2)難以得到精確的最優解

(3)pso的機理性研究較少,缺乏嚴密的數學指導。

因此pso演算法適用於處理高維的,具有多個區域性最優解的,對結果精確性要求不高的優化問題。

pso的原理是模仿鳥群覓食的原理:

單個鳥→單個粒子

鳥群→有許多粒子組成的粒子群

鳥群的覓食行為→粒子群通過一定規律的隨機運動,搜尋區域內的最優解

在d維區域裡存在m個粒子

其中第i個粒子的位置為乙個向量:xi=

其中第i個粒子的速度為乙個向量:vi=

第i個粒子搜尋到的最優位置為:pi=

整個粒子群搜尋到的最優位置為:pgbest=

第i個粒子在k次迭代時的速度為:

v id

k+1=

ωvid

k+c1

r1(p

id−x

idk)

+c2r

2(pg

best

d−xi

dk)v^_=ωv^_+c_1r_1(p_-x^k_)+c_2r_2(p_-x^k_)

vidk+1

​=ωv

idk​

+c1​

r1​(

pid​

−xid

k​)+

c2​r

2​(p

gbes

td​−

xidk

​)其中i = 1,2,3…m ; d = 1,2,3…d

ω成為慣性引數;c1,c2稱為學習因子,是乙個正常數;r1,r2為隨機數;等號右邊的三項分別是:歷史速度的記憶、認知部分、社會部分。

位置更新公式:

x id

k+1=

xidk

+vid

k+1x^_=x^_+v^_

xidk+1

​=xi

dk​+

vidk

+1​每次更新的速度控制在乙個最大速度vmax以下。

演算法流程:

(1)達到最大迭代步數

(2)得到可接受的滿意解

(1)慣性引數ω:

ω代表對原先速度的記憶程度,依據原先的速度進行慣性運動。

較大的ω使粒子更易跳出區域性最優解,獲得更強的全域性尋優能力,但也會使效率降低,不宜收斂;較小的ω容易陷入區域性最優解,但更易收斂。

當問題空間較大時,ω不應為乙個常數。在前期可以使ω較大以獲得更強的全域性尋優能力,後期ω變小可以提高收斂速度。這個功能可以由線性遞減權值公式實現:

ω =ω

max−

(ωma

x−ωm

in)∗

runr

unma

xω=ω_-(ω_-ω_)*\frac}

ω=ωmax

​−(ω

max​

−ωmi

n​)∗

runm

ax​r

un​(2)學習因子c1,c2:

c1,c2分別代表粒子動作來自認知部分和社會部分的權重。

c1=0時,為無私型粒子群演算法,喪失群體多樣性,容易陷入區域性最優解。

c2=0時,為自私型粒子群演算法,沒有資訊的社會共享,收斂速度減慢。

c1>c2>0時,適用於多峰優化問題。

c2>c1>0時,適用於多峰優化問題。

自適應或動態加速度係數是基於迭代次數對兩個係數進行動態調節。其中c1隨代數增加而減小,c2隨代數增加而增大。

c 1=

(c1f

−c1i

)ttm

ax+c

1ic_1=(c_-c_)\frac}+c_

c1​=(c

1f​−

c1i​

)tma

x​t​

+c1i

​ c 2=

(c2f

−c2i

)ttm

ax+c

2ic_2=(c_-c_)\frac}+c_

c2​=(c

2f​−

c2i​

)tma

x​t​

+c2i

​實驗建議:c1f=0.5,c1i=2.5;c2f=2.5,c2i=0.5

(3)粒子的最大速度vmax

粒子最大速度:維護演算法探索能力和開發能力的平衡。速度增大,粒子的探索能力增強,但容易飛過最優解。速度減小,開發能力較大,但容易陷入區域性最優。

一種是將群體中所有粒子都作為粒子的鄰域,這樣的結構叫做全域性粒子群演算法。這種結構下,粒子的認知部分是自己的歷史最優解;社會部分是粒子全體的全域性最優值。

另一種是將群體中的部分個體作為粒子的鄰域,這樣的結構叫做區域性粒子群演算法。這種結構下,粒子的認知部分是自己的歷史最優解;社會部分是粒子鄰域內的全域性最優值。

全域性粒子群演算法的收斂能力更強,但容易陷入區域性最優解;區域性粒子群演算法全域性尋優能力更強,但收斂速度較慢。

粒子數一般取20-40,對較難或特定類別的問題可以取100-200。

最大速度通常設定為粒子的範圍寬度。

將c1和c2統一為乙個控制引數φ=c1+c2。當φ=4.1時具有良好的收斂效果。

ω=0.7298和c1=c2=1.497時演算法有較好的收斂效能。

粒子群優化演算法 PSO

粒子群優化演算法 pso particle swarm optimization 是一種進化計算技術 evolutionary computation 源於對鳥群捕食的行為研究。粒子群優化演算法的基本思想 是通過群體中個體之間的協作和資訊共享來尋找最優解 pso的優勢 在於簡單容易實現並且沒有許多引...

粒子群優化演算法 PSO

粒子群優化演算法 pso particle swarm optimization 是一種進化計算技術 evolutionary computation 源於對鳥群捕食的行為研究。粒子群優化演算法的基本思想 是通過群體中個體之間的協作和資訊共享來尋找最優解 pso的優勢 在於簡單容易實現並且沒有許多引...

粒子群優化演算法 PSO

粒子群優化演算法 pso particle swarm optimization 是一種進化計算技術 evolutionary computation 源於對鳥群捕食的行為研究。粒子群優化演算法的基本思想 是通過群體中個體之間的協作和資訊共享來尋找最優解 pso的優勢 在於簡單容易實現並且沒有許多引...