群智能算法标准测试函数集
2022/5/1 20:15:52
本文主要是介绍群智能算法标准测试函数集,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
为了测试群智能算法的性能,我们整理了以下标准测试函数。
function [fobj, bound] = Optimizer(select) %% 目标函数 switch select case 1 fobj = @ Sphere; % 效果很好 [-100, 100] bound = [-100, 100]; case 2 fobj = @ Ackley; % 效果比较好 [-32, 32] bound = [-32.768, 32.768]; case 3 fobj = @ Rastrigin; % 效果好 [-5.12, 5.12] bound = [-5.12, 5.12]; case 4 fobj = @ Alpine; % 效果好 [-10,10] bound = [-10, 10]; case 5 fobj = @ Squares; % 效果好 [-10,10] bound = [-10, 10]; case 6 fobj = @ Griewank; % 效果好 [-600, 600] bound = [-600, 600]; case 7 fobj = @ Powell; % 效果好 [-4, 5] bound = [-4, 5]; case 8 fobj = @ Zakharov; % 效果好 [-5, 10] bound = [-5, 10]; case 9 fobj = @ Sumpow; % 效果好 [-1, 1] bound = [-1, 1]; case 10 fobj = @ Rothyp; % 效果好 [-65, 65] bound = [-65, 65]; case 11 fobj = @ Schaffer; % [-100, 100] bound = [-100, 100]; end function [y] = Sphere(xx) d = length(xx); sum = 0; for ii = 1:d xi = xx(ii); sum = sum + xi^2; end y = sum; end function [y] = Ackley(xx) d = length(xx); sum1 = 0; sum2 = 0; for ii = 1:d xi = xx(ii); sum1 = sum1 + xi^2; sum2 = sum2 + cos(2*pi*xi); end term1 = -20*exp(-0.2*sqrt(sum1/d)); term2 = -exp(sum2/d); y = term1 + term2 + 20 + exp(1); end function [y] = Rastrigin(xx) d = length(xx); sum = 0; for ii = 1:d xi = xx(ii); sum = sum + (xi^2 - 10*cos(2*pi*xi)); end y = 10*d + sum; end function [y] = Alpine(xx) d = length(xx); sum = 0; for i=1:d sum = sum + abs(xx(i)*sin(xx(i))+0.1*xx(i)); end y = sum; end function [y] = Squares(xx) d = length(xx); sum = 0; for i = 1:d xi = xx(i); sum = sum + i*xi^2; end y = sum; end function [y] = Griewank(xx) d = length(xx); sum = 0; prod = 1; for ii = 1:d xi = xx(ii); sum = sum + xi^2/4000; prod = prod * cos(xi/sqrt(ii)); end y = sum - prod + 1; end function [y] = Powell(xx) d = length(xx); sum = 0; for ii = 1:(d/4) term1 = (xx(4*ii-3) + 10*xx(4*ii-2))^2; term2 = 5 * (xx(4*ii-1) - xx(4*ii))^2; term3 = (xx(4*ii-2) - 2*xx(4*ii-1))^4; term4 = 10 * (xx(4*ii-3) - xx(4*ii))^4; sum = sum + term1 + term2 + term3 + term4; end y = sum; end function [y] = Zakharov(xx) d = length(xx); sum1 = 0; sum2 = 0; for ii = 1:d xi = xx(ii); sum1 = sum1 + xi^2; sum2 = sum2 + 0.5*ii*xi; end y = sum1 + sum2^2 + sum2^4; end function [y] = Sumpow(xx) d = length(xx); sum = 0; for ii = 1:d xi = xx(ii); new = (abs(xi))^(ii+1); sum = sum + new; end y = sum; end function [y] = Rothyp(xx) d = length(xx); outer = 0; for ii = 1:d inner = 0; for jj = 1:ii xj = xx(jj); inner = inner + xj^2; end outer = outer + inner; end y = outer; end function [y] = Schaffer(xx) x1 = xx(1); x2 = xx(2); fact1 = (sin(x1^2-x2^2))^2 - 0.5; fact2 = (1 + 0.001*(x1^2+x2^2))^2; y = 0.5 + fact1/fact2; end end
这篇关于群智能算法标准测试函数集的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?
- 2024-05-09企业src漏洞挖掘-有意思的命令执行
- 2024-05-08阿里云域名注册流程,分享给第一次购买域名的新手站长!