这里以 2D Michalewicz function 为对象来演示粒子群算法。
1、Michalewicz function
2、代码详解
2.1 画Michalewicz函数的网格图形
f=@(x,y)(-sin(x).*(sin(x.^2/3.1415926)).^(2*m)...
-sin(y).*(sin(2*y.^2/3.1415926)).^(2*m));
range=[0 4 0 4];
Ngrid=100;
dx=(range(2)-range(1))/Ngrid;
dy=(range(4)-range(3))/Ngrid;
xgrid=range(1):dx:range(2);
ygrid=range(3):dy:range(4);
[x,y]=meshgrid(xgrid,ygrid);
z=f(x,y);
figure(1);
%subplot(1,2,1);
surfc(x,y,z);
hold on;
2.2 粒子群优化算法的子函数
粒子群初始化
function [xn,yn]=init_pso(n,range)
xrange=range(2)-range(1);
yrange=range(4)-range(3);
xn=rand(1,n)*xrange+range(1);
yn=rand(1,n)*yrange+range(3);
end
粒子群的移动
function [xn,yn]=ps