在全域性版的標準粒子群演算法中,每個粒子的速度的更新是根據兩個因素來變化的,這兩個因素是:
1. 粒子自己歷史最優值pi。
2.
粒子群體的全域性最優值
pg。如果改變粒子速度更新公式,讓每個粒子的速度的更新根據以下兩個因素更新,
a. 粒子自己歷史最優值pi。
b. 粒子鄰域內粒子的最優值
pnk。其餘保持跟全域性版的標準粒子群演算法一樣,這個演算法就變為區域性版的粒子群演算法。
一般乙個粒子
i 的鄰域隨著迭代次數的增加而逐漸增加,開始第一次迭代,它的鄰域為
0,隨著迭代次數鄰域線性變大,最後鄰域擴充套件到整個粒子群,這時就變成全域性版本的粒子群演算法了。經過實踐證明:全域性版本的粒子群演算法收斂速度快,但是容易陷入區域性最優。區域性版本的粒子群演算法收斂速度慢,但是很難陷入區域性最優。現在的粒子群演算法大都在收斂速度與擺脫區域性最優這兩個方面下功夫。其實這兩個方面是矛盾的。看如何更好的折中了。
根據取鄰域的方式的不同,區域性版本的粒子群演算法有很多不同的實現方法。
第一種方法:按照粒子的編號取粒子的鄰域,取法有四種:1
,環形取法
2,隨機環形取法
3,輪形取法
4,隨機輪形取法。
1 環形 2 隨機環形
3 輪形
4隨機輪形
環形取法為例:以粒子1
為例,當鄰域是
0的時候,鄰域是它本身,當鄰域是
1時,鄰域為2,
8;當鄰域是
2時,鄰域是2,
3,7,
8;......
,以此類推,一直到鄰域為
4,這個時候,鄰域擴充套件到整個例子群體。據文獻介紹(國外的文獻),採用輪形拓撲結構,
pso的效果很好。
第二種方法:按照粒子的歐式距離取粒子的鄰域
在第一種方法中,按照粒子的編號來得到粒子的鄰域,但是這些粒子其實可能在實際位置上並不相鄰,於是
suganthan
提出基於空間距離的劃分方案,在迭代中計算每乙個粒子與群中其他粒子的距離。記錄任何
2個粒子間的的最大距離為
dm。對每一粒子按照
||xa-xb||/dm
計算乙個比值。其中
||xa-xb||
是當前粒子a到
b的距離。而選擇閾值
frac
根據迭代次數而變化。當另一粒子b滿足
||xa-xb||/dm時,認為
b成為當前粒子的鄰域。
這種辦法經過實驗,取得較好的應用效果,但是由於要計算所有粒子之間的距離,計算量大,且需要很大的儲存空間,所以,該方法一般不經常使用。
粒子群演算法 1 粒子群演算法簡介
粒子群演算法簡介 一 粒子群演算法的歷史 粒子群演算法源於複雜適應系統 complex adaptive system,cas cas理論於1994年正式提出,cas中的成員稱為主體。比如研究鳥群系統,每個鳥在這個系統中就稱為主體。主體有適應性,它能夠與環境及其他的主體進行交流,並且根據交流的過程 ...
粒子群演算法 1 粒子群演算法簡介
原文 粒子群演算法簡介 一 粒子群演算法的歷史 粒子群演算法源於複雜適應系統 complex adaptive system,cas cas理論於1994年正式提出,cas中的成員稱為主體。比如研究鳥群系統,每個鳥在這個系統中就稱為主體。主體有適應性,它能夠與環境及其他的主體進行交流,並且根據交流的...
粒子群演算法python python實現粒子群演算法
粒子群演算法 粒子群演算法源於複雜適應系統 complex adaptive system,cas cas理論於1994年正式提出,cas中的成員稱為主體。比如研究鳥群系統,每個鳥在這個系統中就稱為主體。主體有適應性,它能夠與環境及其他的主體進行交流,並且根據交流的過程 學習 或 積累經驗 改變自身...