PSO粒子群演算法及matlab實現

2022-07-31 19:36:09 字數 2064 閱讀 5307

1原理:

根據鳥類尋食的仿生學,結合個體的最優解和群體的最優解不斷地迭代來尋找區域的最優解。

在n維的目標空間中,有m個粒子組成乙個群體,

第i個粒子的位置表示為:

每個位置對應乙個潛在解,把

代入適應函式中即可得到對應的適應值。

粒子個體經過的最好的位置為:

整個群體的最優位置為:

粒子i的速度為:

粒子群位置根據以下公式進行跟新:

pso的引數選取:

粒子數m,個數越多越容易找到全域性最優解,但程式耗時長。

慣性因子w,越大越容易找到全域性最優解,但可能對區域性的搜尋能力不好

加速常數c1和c2,選取無特定規則,一般都選為1.

2程式實現

本程式可以求解乙個一維上的最優解,多維可以仿照實現。

**:

clc,clear

%%%define the function

fitness=inline('

(2.1*(1-x+2*x.^2).*exp(-x.^2/2))+sin(x)+x

','x');

%%e0=0.001

;max_num=50

;particlesize=30

;c1=0.5

;c2=1

;w=0.3

;vc=0.5

;vmax=0.6

;x=-5+10*rand(particlesize,1

);v=1*rand(particlesize,1

);%%f=fitness(x);

personalbest_x=x;

personalbest_f=f;

[groupbest_f i]=max(personalbest_f);

groupbest_x=x(i);

for j=1

:max_num

v=w*v+c1*rand*(personalbest_x-x)+c2*rand*(groupbest_x*ones(particlesize,1)-x);

for kk=1

:particlesize

if v(kk)>vmax

v(kk)=vmax;

else

if v(kk)

v(kk)=-vmax;

endend

endx=x+vc*v;

f=fitness(x);

for kk=1

:particlesize

if f(kk)>personalbest_f(kk)

personalbest_f(kk)=f(kk);

personalbest_x(kk)=x(kk);

endend

[groupbest_f i]=max(personalbest_f);

groupbest_x=x(i);

ddd(j)=groupbest_f;

end str=num2str(groupbest_f)

%%subplot(

2,1,1

) x_0=-5:0.01:5

; f_0=fitness(x_0);

plot(x_0,f_0,'r

','linewidth

',2);

hold on

plot(groupbest_x,groupbest_f,'b+

','linewidth

',6);

legend(

'所求函式

','最優解位置');

subplot(

2,1,2

)plot(

1:max_num,ddd,'

linewidth

',2);

legend(

'最優解的變化');

xlabel(

'迭代次數');

ylabel(str);

注:執行時間(i5,8g,win7,64位),1s左右

程式輸出:

粒子群演算法(PSO)介紹及matlab實現

pso模擬鳥群的捕食行為。設想這樣乙個場景 一群鳥在隨機搜尋食物。在這個區域裡只有一塊食物。所有的鳥都不知道食物在那裡。但是他們知道當前的位置離食物還有多遠。那麼找到食物的最優策略是什麼呢。最簡單有效的就是搜尋目前離食物最近的鳥的周圍區域。由於每個鳥都不知道食物在 但是卻知道距離多遠,所以每次可以知...

粒子群(pso)演算法

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

粒子群演算法 PSO

1995年美國社會心理學家kennedy和電氣工程師eberhart共同提出粒子群優化演算法 particle swarm optimization,pso pso演算法的基本思想利用生物學家heppner的生物群體模型,模擬鳥類覓食過程。鳥類飛行過程相互交流,當乙個鳥飛向棲息地時,其他鳥兒也會跟著...