matlab基本粒子群演算法實現(二)

2022-08-16 13:51:21 字數 2438 閱讀 4950

雖然這個不是我寫的

但是這個粒子群是二維的

之前的是一維的。

main.m

clear all;

close all;

clc;

[x y]=meshgrid(-100:100,-100:100);

sigma=50;

img = (1/(2*pi*sigma^2))*exp(-(x.^2+y.^2)/(2*sigma^2)); %目標函式,高斯函式

mesh(img);

hold on;

n=10; %粒子群粒子個數

%初始化粒子群,定義結構體

%結構體中八個元素,分別是粒子座標,粒子速度,粒子適應度,粒子最佳適應度,粒子最佳座標

par=struct();          

for i=1:n

par(i).x=-100+200*rand(); %[-100 100]對x位置隨機初始化

par(i).y=-100+200*rand(); %[-100 100]對y位置隨機初始化

par(i).vx=-1+2*rand(); %[-1 1]對vx速度隨機初始化

par(i).vy=-1+2*rand(); %[-1 1]對vy速度隨機初始化

par(i).fit=0; %粒子適應度為0初始化

par(i).bestfit=0; %粒子最佳適應度為0初始化

par(i).bestx=par(i).x; %粒子x最佳位置初始化

par(i).besty=par(i).y; %粒子y最佳位置初始化

endpar_best=par(1); %初始化粒子群中最佳粒子

for k=1:10

plot3(par_best.x+100,par_best.y+100,par_best.fit,'g*'); %畫出最佳粒子的位置,+100為相對偏移

for p=1:n

[par(p) par_best]=update_par(par(p),par_best); %更新每個粒子資訊

end

end

update_par.m

function [par par_best]=update_par(par,par_best)

%px=px+pv*t,這裡t=1,px為當前粒子的位置,pv為當前粒子的速度

par.x=par.x+par.vx;

par.y=par.x+par.vy;

par.fit=compute_fit(par); %計算當前粒子適應度

%pv=pv+(c1*rand*(gx-px))+(c2*rand*(pbx-px))

%這裡c1,c2為加速因子

%gx為具有最佳適應度粒子的位置

%pbx為當前粒子的最佳位置

c1=1;

c2=1;

par.vx=par.vx+c1*rand()*(par_best.x-par.x)+c2*rand()*(par.bestx-par.x);

par.vy=par.vy+c1*rand()*(par_best.y-par.y)+c2*rand()*(par.besty-par.y);

if par.fit>par.bestfit %如果當前粒子適應度要好於當前粒子最佳適應度

par.bestfit=par.fit; %則更新當前粒子最佳適應度

par.bestx=par.x; %更新當前粒子最佳位置

par.besty=par.y;

if par.bestfit>par_best.fit %如果當前粒子最佳適應度好於最佳粒子適應度

par_best.fit=par.bestfit; %則更新最佳粒子適應度

par_best.x=par.x; %更新最佳粒子位置

par_best.y=par.y;

endend

end

compute_fit.m

function re=compute_fit(par)

x=par.x;

y=par.y;

sigma=50;

if x100 || y100

re=0; %超出範圍適應度為0

else %否則適應度按目標函式求解

matlab基本粒子群演算法實現(四)

最後在煉數成金那邊找到了很好的一篇教程 在這裡把它整理一下 做個粒子群演算法的收尾 i.清空環境 clcclear ii.繪製目標函式曲線 figure x,y meshgrid 5 0.1 5,5 0.1 5 z x.2 y.2 10 cos 2 pi x 10 cos 2 pi y 20 mes...

粒子群演算法的matlab實現

2018.7.19 粒子群演算法function xm,fv pso fitness,n,c1,c2,w,m,d 本函式用粒子群演算法實現優化 給定初始化條件 c1 學習因子1 c2 學習因子2 w 慣性權重 m 最大迭代次數 d 搜尋空間維數 n 初始化群體個體數目 xm,fv pso fitne...

PSO粒子群演算法及matlab實現

1原理 根據鳥類尋食的仿生學,結合個體的最優解和群體的最優解不斷地迭代來尋找區域的最優解。在n維的目標空間中,有m個粒子組成乙個群體,第i個粒子的位置表示為 每個位置對應乙個潛在解,把 代入適應函式中即可得到對應的適應值。粒子個體經過的最好的位置為 整個群體的最優位置為 粒子i的速度為 粒子群位置根...