原理
粒子群算法(也稱粒子群優(yōu)化算法(particle swarm optimization, PSO))剂娄,模擬鳥群隨機搜索食物的行為送滞。粒子群算法中,每個優(yōu)化問題的潛在解都是搜索空間中的一只鳥,叫做“粒子”躺坟。所有的粒子都有一個由被優(yōu)化的函數(shù)決定的適應(yīng)值(fitness value),每個粒子還有一個速度決定它們“飛行”的方向和距離乳蓄。
粒子群算法初始化為一群隨機的粒子(隨機解)咪橙,然后根據(jù)迭代找到最優(yōu)解。每一次迭代中虚倒,粒子通過跟蹤兩個極值來更新自己:第1個是粒子本身所找到的最優(yōu)解美侦,這個稱為個體極值;第2個是整個種群目前找到的最優(yōu)解魂奥,這個稱為全局極值菠剩。也可以不用整個種群,而是用其中的一部分作為粒子的鄰居耻煤,稱為局部極值具壮。
假設(shè)在一個D維搜索空間中,有N個粒子組成一個群落哈蝇,其中第i個粒子表示為一個D維的向量:
第i個粒子的速度表示為:
還要保存每個個體的已經(jīng)找到的最優(yōu)解棺妓,和一個整個群落找到的最優(yōu)解
。
第i個粒子根據(jù)下面的公式更新自己的速度和位置:
其中炮赦, 是個體已知最優(yōu)解怜跑,
是種群已知最優(yōu)解,
為慣性權(quán)重吠勘,
,
為學(xué)習(xí)因子(或加速常數(shù) acceleration constant)妆艘,
,
是[0,1]范圍內(nèi)的隨機數(shù)破加。
式(1)由三部分組成:
- 慣性或動量部分,反應(yīng)粒子的運動習(xí)慣直砂。
- 認(rèn)知部分供璧,粒子有向自身歷史最佳位置逼近的優(yōu)勢。
- 社會部分汽煮,粒子有向群體或領(lǐng)域歷史最佳位置逼近的趨勢搏熄。
特點
- 粒子群算法是一種高效的并行搜索算法。
- 粒子群算法保留了基于種群的全局搜索策略暇赤,操作模型比較簡單心例,避免了復(fù)雜的遺傳操作。
- 保留了每個粒子的個體歷史極值鞋囊。
- 算法在后期收斂速度緩慢止后。
- 粒子群算法對種群大小不十分敏感。