PSO粒子群演算法 二維

2021-10-10 14:22:35 字數 1585 閱讀 2196

%% 粒子群演算法函式

% function[xm,fv] = pso(fitness,n,c1,c2,w,m,d)

% c1,c2:學習因子

% w:慣性權重

% m:最大迭代次數

% d:搜尋空間維數

% n:初始化群體個體數目

ticclear;clc;

c1=1.5;

c2=2.5;

w=0.3;

m=100;

d=2;

n=50;

% 初始化種群的個體(可以在這裡限定位置和速度的範圍)

format long;

xmin =-15; xmax = 15;

vmin = -2; vmax = 2;

%二維畫圖

x1=xmin:1:xmax;

x2=xmin:1:xmax;

[x1,x2]=meshgrid(x1,x2);

z=x1.^2+x2.^2-x1.*x2-10.*x1-4.*x2+60;

mesh(x1,x2,z);

hold on;

xlabel('x')

%一維畫圖

% fplot(@fitness,[xmin xmax]);

grid on;

hold on;

x = xmin+rand(n,d)*(xmax-xmin);

v = vmin+rand(n,d)*(vmax-vmin);

% 先計算各個粒子的適應度,並初始化pi和pg

for i=1:n

p(i) = fitness(x(i,:));

y(i,:) = x(i,:);

end

pg = x(n,:); % pg為全域性最優

for i=1:(n-1)

if(fitness(x(i,:))vmax))=vmax;

x(i,:)=x(i,:)+v(i,:);

% 位置限幅

x(i,find(x(i,:)xmax))=xmax;

%個體適應度更新

if fitness(x(i,:)) < p(i)

p(i)=fitness(x(i,:));

y(i,:)=x(i,:);

end%再次求取群體最優

if p(i) < fitness(pg)

pg=y(i,:);

endend

plot3(x(i,1),x(i,2),fitness(x(i,:)),'ro')

pause(0.05);

pbest(t)=fitness(pg);

endplot3(pg(1),pg(2),fitness(pg),'b*')

figure(2)

plot(pbest)

xlabel('進化次數');

ylabel('適應度值');

grid on;

% 輸出結果

disp('目標函式取最小值時的自變數:')

xm=pg'

disp('目標函式的最小值為:')

fv=fitness(pg)

toc

粒子群(pso)演算法

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

粒子群演算法 PSO

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

粒子群優化演算法 PSO

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