function y=Griewank(x)
%Griewan函数
%输入x,给出相应的y值,在x=(0,0,…,0)处有全局极小点0.
%编制人:
%编制日期:
[row,col]=size(x);
if row>1
error(\'输入的參数错误\');
end
y1=1/4000*sum(x.^2);
y2=1;
for h=1:col
y2=y2*cos(x(h)/sqrt(h));
end
y=y1-y2+1;
y=-y;
绘制函数图像的代码例如以下:
function DrawGriewank()
%绘制Griewank函数图形
x=[-8:0.1:8];
y=x;
[X,Y]=meshgrid(x,y);
[row,col]=size(X);
for l=1:col
for h=1:row
z(h,l)=Griewank([X(h,l),Y(h,l)]);
end
end
surf(X,Y,z);
shading interp
第二个函数:Rastrigin函数,图形例如以下所看到的:
适应度函数例如以下:(为了求最大值,我去了全部函数值的相反数)
function y=Rastrigin(x)
%Rastrigin函数
%输入x,给出相应的y值,在x=(0,0,…,0)处有全局极小点0.
%编制人:
%编制日期:
[row,col]=size(x);
if row>1
error(\'输入的參数错误\');
end
y=sum(x.^2-10*cos(2*pi*x)+10);
y=-y;
绘制函数图像的代码例如以下:
function DrawRastrigin()
%绘制Rastrigin函数图形
x=[-5:0.05:5];
y=x;
[X,Y]=meshgrid(x,y);
[row,col]=size(X);
for l=1:col
for h=1:row
z(h,l)=Rastrigin([X(h,l),Y(h,l)]);
end
end
surf(X,Y,z);
shading interp
这样粒子群算法不得不草草收场。