(完整版)matlab常用的几个适应度评价函数

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

/niuyongjie/article/details/1619496 粒子群算法(6)-----几个适应度评价函数

下面给出几个适应度评价函数,并给出图形表示

头几天机子种了病毒,重新安装了系统,不小心把程序全部格式化了,痛哭!!!没办法,好多程序不见了,现在把这几个典型的函数重新编写了,把他们给出来,就算粒子群算法的一个结束吧!痛恨病毒!!!!

第一个函数:Griewank函数,图形如下所示:

适应度函数如下:(为了求最大值,我去了所有函数值的相反数)

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

第三个函数Schaffer函数,图形如下所示:

函数的代码如下,因为该函数在(0,...,0)处有最大值1,因此不需要取相反数。

[c-sharp]view plaincopy

1.function result=Schaffer(x1)

2.%Schaffer 函数

3.%输入x,给出相应的y值,在x=(0,0,…,0)处有全局极大点1.

4.%编制人:

5.%编制日期:

6.[row,col]=size(x1);

7.if row>1

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]view plaincopy

1.function DrawSchaffer()

2.x=[-5:0.05:5];

3.y=x;

4.[X,Y]=meshgrid(x,y);

5.[row,col]=size(X);

6.for l=1:col

7.for h=1:row

8.z(h,l)=Schaffer([X(h,l),Y(h,l)]);

9.end

10.end

11.surf(X,Y,z);

12.shading interp

第四个函数:Ackley函数,函数图形如下:

函数的代码如下,因为该函数在(0,...,0)处有最小值0,因此需要取相反数[c-sharp]view plaincopy

1.function result=Ackley(x)

2.%Ackley 函数

3.%输入x,给出相应的y值,在x=(0,0,…,0)处有全局极小点0,为得到最大值,返回值取相反

4.%编制人:

5.%编制日期:

6.[row,col]=size(x);

7.if row>1

8. error('输入的参数错误');

9.end

10.result=-20*exp(-0.2*sqrt((1/col)*(sum(x.^2))))-

exp((1/col)*sum(cos(2*pi.*x)))+exp(1)+20;

11.result=-result;

绘制函数代码图形的代码如下:

[c-sharp]view plaincopy

1.function DrawAckley()

相关文档
最新文档