1、粒子群算法(6)-几个适应度评价函数下面给出几个适应度评价函数,并给出图形表示 头几天机子种了病毒,重新安装了系统,不小心把程序全部格式化了,痛哭!没办法,好多程序不见了,现在把这几个典型的函数重新编写了,把他们给出来,就算粒子群算法的一个结束吧!痛恨病毒!第一个函数:Griewank函数,图形如下所示:适应度函数如下:(为了求最大值,我去了所有函数值的相反数)functiony=Griewank(x)%Griewan函数%输入x,给出相应的y值,在x=(0,0,0)处有全局极小点0.%编制人:%编制日期:row,col=size(x);ifrow1error(输入的参数错误);endy1=1
2、/4000*sum(x.2);y2=1;forh=1:coly2=y2*cos(x(h)/sqrt(h);endy=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:colforh=1:rowz(h,l)=Griewank(X(h,l),Y(h,l);endendsurf(X,Y,z);shadinginterp第二个函数:Rastrigin函数,图形如下所示:适应度函数如下:(为了求最大值,我去了所有函数值的
3、相反数)functiony=Rastrigin(x)%Rastrigin函数%输入x,给出相应的y值,在x=(0,0,0)处有全局极小点0.%编制人:%编制日期:row,col=size(x);ifrow1error(输入的参数错误);endy=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:colforh=1:rowz(h,l)=Rastrigin(X(h,l),
4、Y(h,l);endendsurf(X,Y,z);shadinginterp第三个函数Schaffer函数,图形如下所示:函数的代码如下,因为该函数在(0,.,0)处有最大值1,因此不需要取相反数。c-sharpview plaincopy1. functionresult=Schaffer(x1)2. %Schaffer函数3. %输入x,给出相应的y值,在x=(0,0,0)处有全局极大点1.4. %编制人:5. %编制日期:6. row,col=size(x1);7. ifrow18. error(输入的参数错误);9. end10. x=x1(1,1);11. y=x1(1,2);12.
5、 temp=x2+y2;13. result=0.5-(sin(sqrt(temp)2-0.5)/(1+0.001*temp)2;绘制函数代码图形的代码如下:c-sharpview plaincopy1. functionDrawSchaffer()2. x=-5:0.05:5;3. y=x;4. X,Y=meshgrid(x,y);5. row,col=size(X);6. forl=1:col7. forh=1:row8. z(h,l)=Schaffer(X(h,l),Y(h,l);9. end10. end11. surf(X,Y,z);12. shadinginterp第四个函数:Ac
6、kley函数,函数图形如下:函数的代码如下,因为 该函数在(0,.,0)处有最小值0,因此需要取相反数c-sharpview plaincopy1. functionresult=Ackley(x)2. %Ackley函数3. %输入x,给出相应的y值,在x=(0,0,0)处有全局极小点0,为得到最大值,返回值取相反数4. %编制人:5. %编制日期:6. row,col=size(x);7. ifrow18. error(输入的参数错误);9. end10. result=-20*exp(-0.2*sqrt(1/col)*(sum(x.2)-exp(1/col)*sum(cos(2*pi.*
7、x)+exp(1)+20;11. result=-result;绘制函数代码图形的代 码如下:c-sharpview plaincopy1. functionDrawAckley()2. %绘制Ackley函数图形3. x=-8:0.1:8;4. y=x;5. X,Y=meshgrid(x,y);6. row,col=size(X);7. forl=1:col8. forh=1:row9. z(h,l)=Ackley(X(h,l),Y(h,l);10. end11. end12. surf(X,Y,z);13. shadinginterp第五个函数是:Rosenbrock函数,该函数在(1,.
8、,1)处有最小值0,为了得到最大值,取函数值的相反数。函数图形如下所示函数的代码:c-sharpview plaincopy1. functionresult=Rosenbrock(x)2. %Rosenbrock函数3. %输入x,给出相应的y值,在x=(1,1,1)处有全局极小点0,为得到最大值,返回值取相反数4. %编制人:5. %编制日期:6. row,col=size(x);7. ifrow18. error(输入的参数错误);9. end10. result=100*(x(1,2)-x(1,1)2)2+(x(1,1)-1)2;11. result=-result;绘制函数图形的代码如下:c-sharpview plaincopy1. functionDrawRosenbrock()2. %绘制Rosenbrock函数图形,大铁锅函数,哈哈3. x=-8:0.1:8;4. y=x;5. X,Y=meshgrid(x,y);6. row,col=size(X);7. forl=1:col8. forh=1:row9. z(h,l)=Rosenbrock(X(h,l),Y(h,l);10. end11. end12. surf(X,Y,z);13. shadinginterp
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1