智能算法经典测试函数

下面总结一下本人在学习智能算法的过程中所了解到的经典测试函数,参考书籍(matlab优化算法案例分析与应用)

特征

这些函数都是有许多局部最优值,所以可以用来测试智能算法寻找全局最优值的性能。

Griewank函数

全局最小值是在变量均为零时
在这里插入图片描述

下图为二维Griewank函数图像
在这里插入图片描述

function DrawGriewank()
    x = [-20 : 0.3 : 20];
    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
    mesh(X,Y,z);
    view([-15.5 30]);
    shading interp
end


function y=Griewank(x)
[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;

end

Rastrigin函数

全局最小值是在变量均为零时
在这里插入图片描述

下图为二维Rastrigin函数图像
在这里插入图片描述

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
    mesh(X,Y,z);
    shading interp
end

function y = Rastrigin(x)
    [row,col] = size(x);
    if  row > 1 
        error( ' 输入的参数错误 ' );
    end
    y = sum(x.^2 - 10 * cos( 2 * pi * x) + 10 );
    y =y;
end

Schaffer函数

全局最大值是在变量均为零时
0.5 + ( ( s i n ( x 1 2 + x 2 2 ) 0.5 ) − 0.5 ) / ( 1 + 0.001 ∗ ( x 1 2 + x 2 2 ) ) 2 0.5+((sin(x1^2+x2^2)^{0.5})-0.5)/(1+0.001*(x1^2+x2^2))^2 0.5+((sin(x12+x22)0.5)0.5)/(1+0.001(x12+x22))2

下面为Schaffer函数图像
在这里插入图片描述

function DrawSchaffer()
    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)=Schaffer([X(h,l),Y(h,l)]);
    end
    end
    mesh(X,Y,z);
    shading interp
end


function result=Schaffer(x1)
    [row,col]=size(x1);
    if row>1
        error('输入的参数错误');
    end
    x=x1(1,1);
    y=x1(1,2);
    temp=x^2+y^2;
    result=0.5-(sin(sqrt(temp))^2-0.5)/(1+0.001*temp)^2;
end

Ackley函数

最小值是在变量均为0时

img

下面是二维Ackley函数图像
在这里插入图片描述

function DrawAckley()
    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)=Ackley([X(h,l),Y(h,l)]);
        end
    end
    mesh(X,Y,z);
    shading interp
end

function y=Ackley(x)
[row,col]=size(x);
if row>1
    error('输入的参数错误');
end
y=-20*exp(-0.2*sqrt((1/col)*(sum(x.^2))))-exp((1/col)*sum(cos(2*pi.*x)))+exp(1)+20;
end

Rosenbrock函数

当变量全为1的时候,取得最小值0
在这里插入图片描述

下面为二维RosenBrock函数图像:
在这里插入图片描述

function DrawRosenbrock()  
    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)=Rosenbrock([X(h,l),Y(h,l)]);  
        end  
    end  
    mesh(X,Y,z);  
    shading interp
end

function y=Rosenbrock(x)  
    [row,col]=size(x);  
    if row>1  
        error('输入的参数错误');  
    end  
    y=100*(x(1,2)-x(1,1)^2)^2+(x(1,1)-1)^2;
    y=-y;
end
  • 14
    点赞
  • 142
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
智能优化算法测试函数是用来评估智能优化算法性能的函数。在引用\[1\],作者采用了六个智能优化算法进行对比实验,并使用相同的随机初始点初始化种群,以保证对比的公平性。这些智能优化算法包括粒子群优化算法(PSO)、麻雀搜索算法(SSA)、海鸥优化算法(SOA)、灰狼优化算法(GWO)、鲸鱼优化算法(WOA)和蜉蝣算法(MA)。而在引用\[2\],提到了30个受欢迎的算法,包括AFT、AHA、ALO、AOA、AVOA、BWO、CSA、DA、DBO、DMO、GA、GOA、GTO、GWO、HHO、INFO、MFO、MPA、MVO、NGO、POA、PSO、RUN、SCA、SCSO、SO、SSA、WOA等。这些算法都是独立的.m文件,可以直接运行。因此,智能优化算法测试函数可以用来评估这些算法在不同问题上的性能表现。 #### 引用[.reference_title] - *1* [智能优化算法:CEC23组常用测试函数公式介绍](https://blog.csdn.net/qq_45955094/article/details/116890920)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [30种智能优化算法跑23个经典测试函数](https://blog.csdn.net/2301_77465928/article/details/130303161)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值