%% 粒子群演算法函式
% 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的優勢 在於簡單容易實現並且沒有許多引...