对于Ackley函数粒子群算法求解其全局最优值,是粒子群算法应用的一个典型例子
Ackley函数形如下
借助matlab画出函数图像如下
clear all;clc;
a=linspace(-5,5,100);
b=linspace(-5,5,100);
[x,y]=meshgrid(a,b);
z=-20*exp(-0.2*sqrt(0.5*(x.^2+y.^2)))-exp(0.5*(cos(2*pi*x)+cos(2*pi*y)))+22.71282;
mesh(x,y,z)
显然函数在(0,0)处可以取得最小值,接下来借助PSO算法求解此最小值点所在坐标,具体代码如下:
clear all;clc;
Gk=200;%设定迭代次数
scale=100;%设定粒子种群规模
wini=0.9;%惯性因子
wend=0.4;
m=5*(2*rand(2