粒子群演算法

2021-10-01 05:35:13 字數 3778 閱讀 7801

粒子群演算法( particle swarm optimization, pso)最早是由eberhart和kennedy於2023年提出,它的基本概念源於對鳥群覓食行為的研究。

用一種粒子來模擬上述的鳥類個體,每個粒子可視為n維搜尋空間中的乙個搜尋個體,粒子的當前位置即為對應優化問題的乙個候選解,粒子的飛行過程即為該個體的搜尋過程。粒子的飛行速度可根據粒子歷史最優位置和種群歷史最優位置進行動態調整。粒子僅具有兩個屬性:速度和位置,速度代表移動的快慢,位置代表移動的方向。每個粒子單獨搜尋的最優解叫做個體極值,粒子群中最優的個體極值作為當前全域性最優解。不斷迭代,更新速度和位置。最終得到滿足終止條件的最優解。

1、引數初始化和粒子初始化

初始化粒子群演算法的三個引數(兩個加速因子c1、c2和慣性權重w),初始化迭代次數、種群規模、限制速度維、變數取值範圍、適應度函式維等。隨機產生乙個種群,初始化粒子速度和適應度。

2、 個體極值與全域性最優解

定義適應度函式,個體極值為每個粒子找到的最優解,從這些最優解找到乙個全域性值,叫做本次全域性最優解。與歷史全域性最優比較,進行更新。

3、 更新速度和位置的公式(核心)

%速度更新 v(j,:) = w*v(j,:) + c1*rand*(pbest(j,:) - pop(j,:)) + c2*rand*(gbest - pop(j,:)); %根據個體最優pbest和群體最優gbest計算下一時刻速度

4、終止條件

(1)達到設定迭代次數;(2)代數之間的差值滿足最小界限

1)原:靜態w=0.8時(c1、c2不變):

c1 = 1.49445;%加速因子

c2 = 1.49445;

w=0.8 %慣性權重

for i=1:maxgen

fprintf('第%d代,',i);

fprintf('最優適應度%f\n',fitnessgbest);

執行十次的第1000代最優適應度平均值:

fitnessgbest=(1.989918+4.974795+4.974795+0.045141+1.989918+9.949586+3.979836

+5.969754+2.984877+6.964713)/10=4.3823488

後:將靜態w改為動態w(c1、c2不變):

c1 = 1.49445;%加速因子

c2 = 1.49445;

for i=1:maxgen

w=(maxgen-i)/maxgen*0.8+0.2; %w線性變化

fprintf('第%d代,',i);

fprintf('最優適應度%f\n',fitnessgbest);

執行十次的第1000代最優適應度平均值:

fitnessgbest=(0.000000+2.501509+5.969754+0.369828+0.809087

+3.979836+6.964713+3.990878+0.000000+4.974795)/10=2.9642183

小結:

w為慣性權重,其值為非負。其值較大,全域性尋優能力強,區域性尋優能力弱;其值較小,全域性尋優能力弱,區域性尋優能力強。w起到平衡兩種搜尋能力的作用。動態w能獲得比固定值更好的尋優結果。

2)保持w=0.8不變,c1和c2同步由大變小:

for i=1:maxgen

c1 = (maxgen-i)/maxgen+1;

c2 = c1;

fprintf('第%d代,',i);

fprintf('最優適應度%f\n',fitnessgbest);

執行十次的第1000代最優適應度平均值:

fitnessgbest=(0.000000+2.984877+0.241508+0.994961+0.000000+0.267181

+3.979836+2.034837+2.984898+4.974795)/10=1.8462893

3)保持w=0.8不變,c1由大到小,c2由小到大:

for i=1:maxgen

c1 = (maxgen-i)/maxgen+1;

c2 = i/maxgen+1;

fprintf('第%d代,',i);

fprintf('最優適應度%f\n',fitnessgbest);

執行十次的第1000代最優適應度平均值:

fitnessgbest=(0.005460+3.979836+5.969754+1.990851+3.979836

+6.964713+4.974795+0.000000+1.989918+5.969754)/10=3.5824913

4)w和c1、c2都處於動態變化:

for i=1:maxgen

w = (maxgen-i)/maxgen*0.8+0.2;

c1 = i/maxgen+1;

c2 = c1;%c1、c2都由小變大

fprintf('第%d代,',i);

fprintf('最優適應度%f\n',fitnessgbest)

執行十次的第1000代最優適應度平均值:

fitnessgbest=(0.994959+1.989918+1.989918+0.000000

+0.000000+3.979836+2.984877+0.995012+2.984889+1.989918)/10=1.7909327

小結

學習因子c1和c2也起到了平衡區域性搜尋和全域性搜尋的能力。與慣性權重係數不同的是,學習因子ci和c2越大,區域性搜尋能力越強,也越有利於演算法的收斂。

1、粒子群演算法優點:

···不依賴於問題資訊,採用實數進行求解,演算法具有較強的通用性

···原理簡單,易於實現,需要調整的引數少

···收斂速度快,對計算機的記憶體要求不大

···粒子群演算法所具有的飛躍性使得其更容易找到全域性最優值,而不會被困在區域性最優

2、粒子群演算法缺點:網路權重的編碼而且遺傳運算元的選擇有時比較麻煩。

3、慣性權重w很小時偏重於發揮粒子群演算法的區域性搜尋能力;慣性權重很大時將會偏重於發揮粒子群演算法的全域性搜尋能力。

4、學習因子c1和c2也起到了平衡區域性搜尋和全域性搜尋的能力。學習因子ci和c2越大,區域性搜尋能力越強,也越有利於演算法的收斂。

粒子群優化演算法 粒子群演算法

粒子群演算法 particle swarm optimization,pso 屬於進化演算法的一種,該演算法最初是受到飛鳥集群活動的規律性啟發,進而利用群體智慧型建立的乙個簡化模型。粒子群演算法在對動物集群活動行為觀察基礎上,利用群體中的個體對資訊的共享使整個群體的運動在問題求解空間中產生從無序到有...

粒子群演算法

如前所述,pso模擬鳥群的捕食行為。設想這樣乙個場景 一群鳥在隨機搜尋食物。在這個區域裡只有一塊食物。所有的鳥都不知道食物在那裡。但是他們知道當前的位置離食物還有多遠。那麼找到食物的最優策略是什麼呢。最簡單有效的就是搜尋目前離食物最近的鳥的周圍區域。pso從這種模型中得到啟示並用於解決優化問題。ps...

粒子群演算法

一 粒子群演算法的歷史 粒子群演算法源於複雜適應系統 complex adaptive system,cas cas理論於1994年正式提出,cas中的成員稱為主體。比如研究鳥群系統,每個鳥在這個系統中就稱為主體。主體有適應性,它能夠與環境及其他的主體進行交流,並且根據交流的過程 學習 或 積累經驗...