粒子群算法几个适应度评价函数.pdf
粒子群算法几个适应度评价函数
第一个函数:Griewan函数,图形如下所示:
适应度函数如下:(为了求最大值,我去了所有函数值的相反数)
functiony=Griewank(x)
%Griewan函数
%输入x,给出相应的y值,在x=(0,0,…,0)处有全局极小点0.
%编制人:
%编制日期:
[row,col]=size(x);
ifrow1
error(输入的参数错误);
end
y1=1/4000*sum(x.^2);
y2=1;
forh=1:col
y2=y2*cos(x(h)/sqrt(h));
end
y=y1-y2+1;
y=-y;
绘制函数图像的代码如下:
functionDrawGriewank()
%绘制Griewank函数图形
x=[-8:0.1:8];
y=x;
[X,Y]=meshgrid(x,y);
[row,col]=size(X);
forl=1:co
forh=1:row
z(h,l)=Griewank([X(h,l),Y(h,l)]);
end
end
surf(X,Y,z);
shadinginterp
第二个函数:Rastrigin函数,图形如下所示:
适应度函数如下:(为了求最大值,我去了所有函数值的相反数)
functiony=Rastrigin(x)
%Rastrigin函数
%输入x,给出相应的y值,在x=(0,0,…,0)处有全局极小点0.
%编制人:
%编制日期:
[row,col]=size(x);
irow1
error(输入的参数错误);
end
y=sum(x.^2-10*cos(2*pi*x)+10);
y=-y;
绘制函数图像的代码如下:
functionDrawRastrigin()
%绘制Rastrigin函数图形
x=[-5:0.05:5];
y=x;
[X,Y]=meshgrid(x,y);
[row,col]=size(X);
forl=1:col
forh=1:row
z(h,l)=Rastrigin([X(h,l),Y(h,l)]);
end
end
surf(X,Y,z);
shadinginterp
第三个函数Schaer函数,图形如下所示:
函数的代码如下,因为该函数在(0,...,0)处有最大值1,因此不需要取相反数。
[c-sharp]viewplaincopyprint?
1.functionresult=Schaffer(x1)
2.%Schaffer函数
3.%输入x,给出相应的y值,在x=(0,0,…,0)处有全局极大1.
4.%编制人:
5.%编制日期:
6.[row,col]=size(x1);
7.ifrow1
8.error(输入的参数错误);
9.end
10.x=x1(1,1);
11.y=x1(1,2);
12.temp=x^2+y^2;
13.result=0.5-(sin(sqrt(temp))^2-0.5)/(1+0.001*temp)^2;
绘制函数代码图形的代码如下:
[c-sharp]viewplaincopyprint?
1.functionDrawSchaffer()
2.x=[-5:0.05:5];
3.y=x;
4.[X,Y]=meshgrid(x,y);
5.[row,col]=size(X);
6.forl=1:col
7.forh=1:row
8.z(h,l)=Schaffer([X(h,l),Y(h,l)]);
9.en
10.e