【智能优化算法-白鲸优化算法】基于白鲸优化算法求解单目标优化问题附matlab代码
1 内容介绍
白鲸优化算法(Beluga whale optimization,BWO)由Changting Zhong等人于2022年提出,该算法模拟了白鲸游泳,觅食和“鲸鱼坠落”行为。
在本文中,提出了一种新的基于群体的元启发式算法,其灵感来自白鲸的行为,称为白鲸优化 (BWO),以解决优化问题。BWO中建立了探索、开发和鲸落三个阶段,分别对应成对游泳、猎物和落鲸的行为。BWO中的平衡因子和鲸落概率具有自适应性,对控制探索和开发能力起着重要作用。此外,还引入了 Levy 飞行以增强开发阶段的全局收敛性。使用 30 个基准函数测试了所提出的 BWO 的有效性,并进行了定性、定量和可扩展性分析,并将统计结果与其他 15 种元启发式算法进行了比较。根据结果和讨论,BWO是解决单峰和多峰优化问题的竞争算法,通过弗里德曼排名测试,BWO在比较的元启发式算法中基准函数的可扩展性分析中的整体排名第一。最后,四个工程问题展示了 BWO 在解决复杂的现实世界优化问题中的优点和潜力。
2 仿真代码
function func_plot(func_name)
[lb,ub,dim,fobj]=Get_Functions_details(func_name);
switch func_name
case 'F1'
x=-100:2:100; y=x; %[-100,100]
case 'F2'
x=-10:1:10; y=x; %[-10,10]
case 'F3'
x=-100:2:100; y=x; %[-100,100]
case 'F4'
x=-100:2:100; y=x; %[-100,100]
case 'F5'
x=-30:1:30; y=x; %[-30,30]
case 'F6'
x=-100:2:100; y=x; %[-100,100]
case 'F7'
x=-1:0.03:1; y=x; %[-1.28,1.28]
case 'F8'
x=-10:0.1:10;y=x; %[-10,10]
case 'F9'
x=-10:0.1:10; y=x; %[-10,10]
case 'F10'
x=-1:0.01:1; y=x;%[-1,1]
case 'F11'
x=-100:2:100; y=x;%[-100,100]
case 'F12'
x=-5:0.1:10; y=x;%[-5,10]
case 'F13'
x=-500:5:500; y=x;%[-500,500]
case 'F14'
x=-5.12:0.5:5.12; y=x;%[-5.12,5.12]
case 'F15'
x=-32:0.4:32; y=x;%[-32,32]
case 'F16'
x=-600:6:600; y=x;%[-600,600]
case 'F17'
x=-50:1:50; y=x;%[-50,50]
case 'F18'
x=-50:1:50; y=x;%[-50,50]
case 'F19'
x=-500:5:500; y=x;%[-500,500]
case 'F20'
x=-5:0.1:5; y=x;%[-5,5]
case 'F21'
x=-5:0.1:5; y=x;%[-5.12,5.12]
case 'F22'
x=-10:0.2:10; y=x;%[-10,10]
case 'F23'
x=-20:1:20; y=x;%[-100,100]
case 'F24'
x=-100:2:100; y=x;%[-100,100]
case 'F25'
x=-5:0.1:5; y=x;%[-5,5]
case 'F26'
x=-1:0.01:1; y=x;%[-5,5]
case 'F27'
x=-5:0.1:5; y=x;%[-5,5]
case 'F28'
x=-5:0.06:5; y=x;%[-5,5]
case 'F29'
x=-5:0.1:5; y=x;%[-5,5]
case 'F30'
x=-5:0.1:5; y=x;%[-5,5]
case 'F31'
x=-5:0.1:5; y=x;%[-5,5]
case 'F32'
x=-5:0.1:5; y=x;%[-5,5]
case 'F33'
x=-5:0.1:5; y=x;%[-5,5]
end
clear all;
close all;
clc;
Function_name = 'F2'; % function name
Npop = 50; % Number of search agents
Max_it = 100; % Maximum number of iterations
[lb,ub,nD,fobj]=Get_Functions_details(Function_name);
[xposbest,fvalbest,Curve]=BWO(Npop,Max_it,lb,ub,nD,fobj);
figure('Position',[500 500 660 290])
subplot(1,2,1);
func_plot(Function_name);
title('Objective space')
xlabel('x_1');
ylabel('x_2');
zlabel([Function_name,'( x_1 , x_2 )'])
subplot(1,2,2);
semilogy(Curve,'Color','r');
hold on
title('Objective space')
xlabel('Iterations');
ylabel('Best score');
L=length(x);
f=[];
for i=1:L
for j=1:L
if strcmp(func_name,'F20') == 0 && strcmp(func_name,'F25')==0 && strcmp(func_name,'F29')==0 && strcmp(func_name,'F30')==0 && strcmp(func_name,'F31')==0 && strcmp(func_name,'F32')==0 && strcmp(func_name,'F33')==0
f(i,j)=fobj([x(i),y(j)]);
end
if strcmp(func_name,'F25')==1 || strcmp(func_name,'F20')==1
f(i,j)=fobj([x(i),y(j),0,0]);
end
if strcmp(func_name,'F29')==1
f(i,j)=fobj([x(i),y(j),0]);
end
if strcmp(func_name,'F30')==1
f(i,j)=fobj([x(i),y(j),0,0,0,0]);
end
if strcmp(func_name,'F31')==1 || strcmp(func_name,'F32')==1 || strcmp(func_name,'F33')==1
f(i,j)=fobj([x(i),y(j),0,0]);
end
if strcmp(func_name,'F21')==1 || strcmp(func_name,'F22')==1 || strcmp(func_name,'F23')==1
f(i,j)=fobj([x(i),y(j),0,0]);
end
end
end
surfc(x,y,f,'LineStyle','none');
end
function [lb,ub,dim,fobj] = Get_Functions_details(F)
switch F
case 'F1'
fobj = @F1;
lb=-100;
ub=100;
dim=30;
case 'F2'
fobj = @F2;
lb=-10;
ub=10;
dim=30;
case 'F3'
fobj = @F3;
lb = -1;
ub = 1;
dim = 30;
case 'F4'
fobj = @F4;
lb=-100;
ub=100;
dim=30;
case 'F5'
fobj = @F5;
lb=-100;
ub=100;
dim=30;
case 'F6'
fobj = @F6;
lb=-30;
ub=30;
dim=30;
case 'F7'
fobj = @F7;
lb=-100;
ub=100;
dim=30;
case 'F8'
fobj = @F8;
lb=-1.28;
ub=1.28;
dim=30;
case 'F9'
fobj = @F9;
lb=-5;
ub=10;
dim=30;
case 'F10'
fobj = @F10;
lb=-500;
ub=500;
dim=30;
case 'F11'
fobj = @F11;
lb=-10;
ub=10;
dim=30;
case 'F12'
fobj = @F12;
lb=-5;
ub=5;
dim=30;
case 'F13'
fobj = @F13;
lb=-5.12;
ub=5.12;
dim=30;
case 'F14'
fobj = @F14;
lb=-32;
ub=32;
dim=30;
case 'F15'
fobj = @F15;
lb=-600;
ub=600;
dim=30;
case 'F16'
fobj = @F16;
lb=-10;
ub=10;
dim=30;
case 'F17'
fobj = @F17;
lb=-50;
ub=50;
dim=30;
case 'F18'
fobj = @F18;
lb=-50;
ub=50;
dim=30;
case 'F19'
fobj = @F19;
lb=-65;
ub=65;
dim=2;
case 'F20'
fobj = @F20;
lb=-5;
ub=5;
dim=4;
case 'F21'
fobj = @F21;
lb=-5;
ub=5;
dim=2;
case 'F22'
fobj = @F22;
lb=0;
ub=10;
dim=4;
case 'F23'
fobj = @F23;
lb=0;
ub=10;
dim=4;
case 'F24'
fobj = @F24;
lb=0;
ub=10;
dim=4;
end
end
% F1
function o = F1(x)
o=sum(x.^2);
end
% F2
function o = F2(x)
o=sum(abs(x))+prod(abs(x));
end
% F3
function o = F3(x)
dim = size(x,2);
o=0;
for i=1:dim
o=o+abs(x(i))^(i+1);
end
end
% F4
function o = F4(x)
dim=size(x,2);
o=0;
for i=1:dim
o=o+sum(x(1:i))^2;
end
end
% F5
function o = F5(x)
o=max(abs(x));
end
% F6
function o = F6(x)
dim=size(x,2);
o=sum(100*(x(2:dim)-(x(1:dim-1).^2)).^2+(x(1:dim-1)-1).^2);
end
% F7
function o = F7(x)
o=sum(abs((x+.5)).^2);
end
% F8
1 内容介绍
白鲸优化算法(Beluga whale optimization,BWO)由Changting Zhong等人于2022年提出,该算法模拟了白鲸游泳,觅食和“鲸鱼坠落”行为。
在本文中,提出了一种新的基于群体的元启发式算法,其灵感来自白鲸的行为,称为白鲸优化 (BWO),以解决优化问题。BWO中建立了探索、开发和鲸落三个阶段,分别对应成对游泳、猎物和落鲸的行为。BWO中的平衡因子和鲸落概率具有自适应性,对控制探索和开发能力起着重要作用。此外,还引入了 Levy 飞行以增强开发阶段的全局收敛性。使用 30 个基准函数测试了所提出的 BWO 的有效性,并进行了定性、定量和可扩展性分析,并将统计结果与其他 15 种元启发式算法进行了比较。根据结果和讨论,BWO是解决单峰和多峰优化问题的竞争算法,通过弗里德曼排名测试,BWO在比较的元启发式算法中基准函数的可扩展性分析中的整体排名第一。最后,四个工程问题展示了 BWO 在解决复杂的现实世界优化问题中的优点和潜力。
2 仿真代码
function func_plot(func_name)
[lb,ub,dim,fobj]=Get_Functions_details(func_name);
switch func_name
case 'F1'
x=-100:2:100; y=x; %[-100,100]
case 'F2'
x=-10:1:10; y=x; %[-10,10]
case 'F3'
x=-100:2:100; y=x; %[-100,100]
case 'F4'
x=-100:2:100; y=x; %[-100,100]
case 'F5'
x=-30:1:30; y=x; %[-30,30]
case 'F6'
x=-100:2:100; y=x; %[-100,100]
case 'F7'
x=-1:0.03:1; y=x; %[-1.28,1.28]
case 'F8'
x=-10:0.1:10;y=x; %[-10,10]
case 'F9'
x=-10:0.1:10; y=x; %[-10,10]
case 'F10'
x=-1:0.01:1; y=x;%[-1,1]
case 'F11'
x=-100:2:100; y=x;%[-100,100]
case 'F12'
x=-5:0.1:10; y=x;%[-5,10]
case 'F13'
x=-500:5:500; y=x;%[-500,500]
case 'F14'
x=-5.12:0.5:5.12; y=x;%[-5.12,5.12]
case 'F15'
x=-32:0.4:32; y=x;%[-32,32]
case 'F16'
x=-600:6:600; y=x;%[-600,600]
case 'F17'
x=-50:1:50; y=x;%[-50,50]
case 'F18'
x=-50:1:50; y=x;%[-50,50]
case 'F19'
x=-500:5:500; y=x;%[-500,500]
case 'F20'
x=-5:0.1:5; y=x;%[-5,5]
case 'F21'
x=-5:0.1:5; y=x;%[-5.12,5.12]
case 'F22'
x=-10:0.2:10; y=x;%[-10,10]
case 'F23'
x=-20:1:20; y=x;%[-100,100]
case 'F24'
x=-100:2:100; y=x;%[-100,100]
case 'F25'
x=-5:0.1:5; y=x;%[-5,5]
case 'F26'
x=-1:0.01:1; y=x;%[-5,5]
case 'F27'
x=-5:0.1:5; y=x;%[-5,5]
case 'F28'
x=-5:0.06:5; y=x;%[-5,5]
case 'F29'
x=-5:0.1:5; y=x;%[-5,5]
case 'F30'
x=-5:0.1:5; y=x;%[-5,5]
case 'F31'
x=-5:0.1:5; y=x;%[-5,5]
case 'F32'
x=-5:0.1:5; y=x;%[-5,5]
case 'F33'
x=-5:0.1:5; y=x;%[-5,5]
end
clear all;
close all;
clc;
Function_name = 'F2'; % function name
Npop = 50; % Number of search agents
Max_it = 100; % Maximum number of iterations
[lb,ub,nD,fobj]=Get_Functions_details(Function_name);
[xposbest,fvalbest,Curve]=BWO(Npop,Max_it,lb,ub,nD,fobj);
figure('Position',[500 500 660 290])
subplot(1,2,1);
func_plot(Function_name);
title('Objective space')
xlabel('x_1');
ylabel('x_2');
zlabel([Function_name,'( x_1 , x_2 )'])
subplot(1,2,2);
semilogy(Curve,'Color','r');
hold on
title('Objective space')
xlabel('Iterations');
ylabel('Best score');
L=length(x);
f=[];
for i=1:L
for j=1:L
if strcmp(func_name,'F20') == 0 && strcmp(func_name,'F25')==0 && strcmp(func_name,'F29')==0 && strcmp(func_name,'F30')==0 && strcmp(func_name,'F31')==0 && strcmp(func_name,'F32')==0 && strcmp(func_name,'F33')==0
f(i,j)=fobj([x(i),y(j)]);
end
if strcmp(func_name,'F25')==1 || strcmp(func_name,'F20')==1
f(i,j)=fobj([x(i),y(j),0,0]);
end
if strcmp(func_name,'F29')==1
f(i,j)=fobj([x(i),y(j),0]);
end
if strcmp(func_name,'F30')==1
f(i,j)=fobj([x(i),y(j),0,0,0,0]);
end
if strcmp(func_name,'F31')==1 || strcmp(func_name,'F32')==1 || strcmp(func_name,'F33')==1
f(i,j)=fobj([x(i),y(j),0,0]);
end
if strcmp(func_name,'F21')==1 || strcmp(func_name,'F22')==1 || strcmp(func_name,'F23')==1
f(i,j)=fobj([x(i),y(j),0,0]);
end
end
end
surfc(x,y,f,'LineStyle','none');
end
1 内容介绍
白鲸优化算法(Beluga whale optimization,BWO)由Changting Zhong等人于2022年提出,该算法模拟了白鲸游泳,觅食和“鲸鱼坠落”行为。
在本文中,提出了一种新的基于群体的元启发式算法,其灵感来自白鲸的行为,称为白鲸优化 (BWO),以解决优化问题。BWO中建立了探索、开发和鲸落三个阶段,分别对应成对游泳、猎物和落鲸的行为。BWO中的平衡因子和鲸落概率具有自适应性,对控制探索和开发能力起着重要作用。此外,还引入了 Levy 飞行以增强开发阶段的全局收敛性。使用 30 个基准函数测试了所提出的 BWO 的有效性,并进行了定性、定量和可扩展性分析,并将统计结果与其他 15 种元启发式算法进行了比较。根据结果和讨论,BWO是解决单峰和多峰优化问题的竞争算法,通过弗里德曼排名测试,BWO在比较的元启发式算法中基准函数的可扩展性分析中的整体排名第一。最后,四个工程问题展示了 BWO 在解决复杂的现实世界优化问题中的优点和潜力。
2 仿真代码
function func_plot(func_name)
[lb,ub,dim,fobj]=Get_Functions_details(func_name);
switch func_name
case 'F1'
x=-100:2:100; y=x; %[-100,100]
case 'F2'
x=-10:1:10; y=x; %[-10,10]
case 'F3'
x=-100:2:100; y=x; %[-100,100]
case 'F4'
x=-100:2:100; y=x; %[-100,100]
case 'F5'
x=-30:1:30; y=x; %[-30,30]
case 'F6'
x=-100:2:100; y=x; %[-100,100]
case 'F7'
x=-1:0.03:1; y=x; %[-1.28,1.28]
case 'F8'
x=-10:0.1:10;y=x; %[-10,10]
case 'F9'
x=-10:0.1:10; y=x; %[-10,10]
case 'F10'
x=-1:0.01:1; y=x;%[-1,1]
case 'F11'
x=-100:2:100; y=x;%[-100,100]
case 'F12'
x=-5:0.1:10; y=x;%[-5,10]
case 'F13'
x=-500:5:500; y=x;%[-500,500]
case 'F14'
x=-5.12:0.5:5.12; y=x;%[-5.12,5.12]
case 'F15'
x=-32:0.4:32; y=x;%[-32,32]
case 'F16'
x=-600:6:600; y=x;%[-600,600]
case 'F17'
x=-50:1:50; y=x;%[-50,50]
case 'F18'
x=-50:1:50; y=x;%[-50,50]
case 'F19'
x=-500:5:500; y=x;%[-500,500]
case 'F20'
x=-5:0.1:5; y=x;%[-5,5]
case 'F21'
x=-5:0.1:5; y=x;%[-5.12,5.12]
case 'F22'
x=-10:0.2:10; y=x;%[-10,10]
case 'F23'
x=-20:1:20; y=x;%[-100,100]
case 'F24'
x=-100:2:100; y=x;%[-100,100]
case 'F25'
x=-5:0.1:5; y=x;%[-5,5]
case 'F26'
x=-1:0.01:1; y=x;%[-5,5]
case 'F27'
x=-5:0.1:5; y=x;%[-5,5]
case 'F28'
x=-5:0.06:5; y=x;%[-5,5]
case 'F29'
x=-5:0.1:5; y=x;%[-5,5]
case 'F30'
x=-5:0.1:5; y=x;%[-5,5]
case 'F31'
x=-5:0.1:5; y=x;%[-5,5]
case 'F32'
x=-5:0.1:5; y=x;%[-5,5]
case 'F33'
x=-5:0.1:5; y=x;%[-5,5]
end
clear all;
close all;
clc;
Function_name = 'F2'; % function name
Npop = 50; % Number of search agents
Max_it = 100; % Maximum number of iterations
[lb,ub,nD,fobj]=Get_Functions_details(Function_name);
[xposbest,fvalbest,Curve]=BWO(Npop,Max_it,lb,ub,nD,fobj);
figure('Position',[500 500 660 290])
subplot(1,2,1);
func_plot(Function_name);
title('Objective space')
xlabel('x_1');
ylabel('x_2');
zlabel([Function_name,'( x_1 , x_2 )'])
subplot(1,2,2);
semilogy(Curve,'Color','r');
hold on
title('Objective space')
xlabel('Iterations');
ylabel('Best score');
L=length(x);
f=[];
for i=1:L
for j=1:L
if strcmp(func_name,'F20') == 0 && strcmp(func_name,'F25')==0 && strcmp(func_name,'F29')==0 && strcmp(func_name,'F30')==0 && strcmp(func_name,'F31')==0 && strcmp(func_name,'F32')==0 && strcmp(func_name,'F33')==0
f(i,j)=fobj([x(i),y(j)]);
end
if strcmp(func_name,'F25')==1 || strcmp(func_name,'F20')==1
f(i,j)=fobj([x(i),y(j),0,0]);
end
if strcmp(func_name,'F29')==1
f(i,j)=fobj([x(i),y(j),0]);
end
if strcmp(func_name,'F30')==1
f(i,j)=fobj([x(i),y(j),0,0,0,0]);
end
if strcmp(func_name,'F31')==1 || strcmp(func_name,'F32')==1 || strcmp(func_name,'F33')==1
f(i,j)=fobj([x(i),y(j),0,0]);
end
if strcmp(func_name,'F21')==1 || strcmp(func_name,'F22')==1 || strcmp(func_name,'F23')==1
f(i,j)=fobj([x(i),y(j),0,0]);
end
end
end
surfc(x,y,f,'LineStyle','none');
end
function [lb,ub,dim,fobj] = Get_Functions_details(F)
switch F
case 'F1'
fobj = @F1;
lb=-100;
ub=100;
dim=30;
case 'F2'
fobj = @F2;
lb=-10;
ub=10;
dim=30;
case 'F3'
fobj = @F3;
lb = -1;
ub = 1;
dim = 30;
case 'F4'
fobj = @F4;
lb=-100;
ub=100;
dim=30;
case 'F5'
fobj = @F5;
lb=-100;
ub=100;
dim=30;
case 'F6'
fobj = @F6;
lb=-30;
ub=30;
dim=30;
case 'F7'
fobj = @F7;
lb=-100;
ub=100;
dim=30;
case 'F8'
fobj = @F8;
lb=-1.28;
ub=1.28;
dim=30;
case 'F9'
fobj = @F9;
lb=-5;
ub=10;
dim=30;
case 'F10'
fobj = @F10;
lb=-500;
ub=500;
dim=30;
case 'F11'
fobj = @F11;
lb=-10;
ub=10;
dim=30;
case 'F12'
fobj = @F12;
lb=-5;
ub=5;
dim=30;
case 'F13'
fobj = @F13;
lb=-5.12;
ub=5.12;
dim=30;
case 'F14'
fobj = @F14;
lb=-32;
ub=32;
dim=30;
case 'F15'
fobj = @F15;
lb=-600;
ub=600;
dim=30;
case 'F16'
fobj = @F16;
lb=-10;
ub=10;
dim=30;
case 'F17'
fobj = @F17;
lb=-50;
ub=50;
dim=30;
case 'F18'
fobj = @F18;
lb=-50;
ub=50;
dim=30;
case 'F19'
fobj = @F19;
lb=-65;
ub=65;
dim=2;
case 'F20'
fobj = @F20;
lb=-5;
ub=5;
dim=4;
case 'F21'
fobj = @F21;
lb=-5;
ub=5;
dim=2;
case 'F22'
fobj = @F22;
lb=0;
ub=10;
dim=4;
case 'F23'
fobj = @F23;
lb=0;
ub=10;
dim=4;
case 'F24'
fobj = @F24;
lb=0;
ub=10;
dim=4;
end
end
% F1
function o = F1(x)
o=sum(x.^2);
end
% F2
function o = F2(x)
o=sum(abs(x))+prod(abs(x));
end
% F3
function o = F3(x)
dim = size(x,2);
o=0;
for i=1:dim
o=o+abs(x(i))^(i+1);
end
end
% F4
function o = F4(x)
dim=size(x,2);
o=0;
for i=1:dim
o=o+sum(x(1:i))^2;
end
end
% F5
function o = F5(x)
o=max(abs(x));
end
% F6
function o = F6(x)
dim=size(x,2);
o=sum(100*(x(2:dim)-(x(1:dim-1).^2)).^2+(x(1:dim-1)-1).^2);
end
% F7
function o = F7(x)
o=sum(abs((x+.5)).^2);
end
% F8
1 内容介绍
白鲸优化算法(Beluga whale optimization,BWO)由Changting Zhong等人于2022年提出,该算法模拟了白鲸游泳,觅食和“鲸鱼坠落”行为。
在本文中,提出了一种新的基于群体的元启发式算法,其灵感来自白鲸的行为,称为白鲸优化 (BWO),以解决优化问题。BWO中建立了探索、开发和鲸落三个阶段,分别对应成对游泳、猎物和落鲸的行为。BWO中的平衡因子和鲸落概率具有自适应性,对控制探索和开发能力起着重要作用。此外,还引入了 Levy 飞行以增强开发阶段的全局收敛性。使用 30 个基准函数测试了所提出的 BWO 的有效性,并进行了定性、定量和可扩展性分析,并将统计结果与其他 15 种元启发式算法进行了比较。根据结果和讨论,BWO是解决单峰和多峰优化问题的竞争算法,通过弗里德曼排名测试,BWO在比较的元启发式算法中基准函数的可扩展性分析中的整体排名第一。最后,四个工程问题展示了 BWO 在解决复杂的现实世界优化问题中的优点和潜力。
2 仿真代码
function func_plot(func_name)
[lb,ub,dim,fobj]=Get_Functions_details(func_name);
switch func_name
case 'F1'
x=-100:2:100; y=x; %[-100,100]
case 'F2'
x=-10:1:10; y=x; %[-10,10]
case 'F3'
x=-100:2:100; y=x; %[-100,100]
case 'F4'
x=-100:2:100; y=x; %[-100,100]
case 'F5'
x=-30:1:30; y=x; %[-30,30]
case 'F6'
x=-100:2:100; y=x; %[-100,100]
case 'F7'
x=-1:0.03:1; y=x; %[-1.28,1.28]
case 'F8'
x=-10:0.1:10;y=x; %[-10,10]
case 'F9'
x=-10:0.1:10; y=x; %[-10,10]
case 'F10'
x=-1:0.01:1; y=x;%[-1,1]
case 'F11'
x=-100:2:100; y=x;%[-100,100]
case 'F12'
x=-5:0.1:10; y=x;%[-5,10]
case 'F13'
x=-500:5:500; y=x;%[-500,500]
case 'F14'
x=-5.12:0.5:5.12; y=x;%[-5.12,5.12]
case 'F15'
x=-32:0.4:32; y=x;%[-32,32]
case 'F16'
x=-600:6:600; y=x;%[-600,600]
case 'F17'
x=-50:1:50; y=x;%[-50,50]
case 'F18'
x=-50:1:50; y=x;%[-50,50]
case 'F19'
x=-500:5:500; y=x;%[-500,500]
case 'F20'
x=-5:0.1:5; y=x;%[-5,5]
case 'F21'
x=-5:0.1:5; y=x;%[-5.12,5.12]
case 'F22'
x=-10:0.2:10; y=x;%[-10,10]
case 'F23'
x=-20:1:20; y=x;%[-100,100]
case 'F24'
x=-100:2:100; y=x;%[-100,100]
case 'F25'
x=-5:0.1:5; y=x;%[-5,5]
case 'F26'
x=-1:0.01:1; y=x;%[-5,5]
case 'F27'
x=-5:0.1:5; y=x;%[-5,5]
case 'F28'
x=-5:0.06:5; y=x;%[-5,5]
case 'F29'
x=-5:0.1:5; y=x;%[-5,5]
case 'F30'
x=-5:0.1:5; y=x;%[-5,5]
case 'F31'
x=-5:0.1:5; y=x;%[-5,5]
case 'F32'
x=-5:0.1:5; y=x;%[-5,5]
case 'F33'
x=-5:0.1:5; y=x;%[-5,5]
end
clear all;
close all;
clc;
Function_name = 'F2'; % function name
Npop = 50; % Number of search agents
Max_it = 100; % Maximum number of iterations
[lb,ub,nD,fobj]=Get_Functions_details(Function_name);
[xposbest,fvalbest,Curve]=BWO(Npop,Max_it,lb,ub,nD,fobj);
figure('Position',[500 500 660 290])
subplot(1,2,1);
func_plot(Function_name);
title('Objective space')
xlabel('x_1');
ylabel('x_2');
zlabel([Function_name,'( x_1 , x_2 )'])
subplot(1,2,2);
semilogy(Curve,'Color','r');
hold on
title('Objective space')
xlabel('Iterations');
ylabel('Best score');
L=length(x);
f=[];
for i=1:L
for j=1:L
if strcmp(func_name,'F20') == 0 && strcmp(func_name,'F25')==0 && strcmp(func_name,'F29')==0 && strcmp(func_name,'F30')==0 && strcmp(func_name,'F31')==0 && strcmp(func_name,'F32')==0 && strcmp(func_name,'F33')==0
f(i,j)=fobj([x(i),y(j)]);
end
if strcmp(func_name,'F25')==1 || strcmp(func_name,'F20')==1
f(i,j)=fobj([x(i),y(j),0,0]);
end
if strcmp(func_name,'F29')==1
f(i,j)=fobj([x(i),y(j),0]);
end
if strcmp(func_name,'F30')==1
f(i,j)=fobj([x(i),y(j),0,0,0,0]);
end
if strcmp(func_name,'F31')==1 || strcmp(func_name,'F32')==1 || strcmp(func_name,'F33')==1
f(i,j)=fobj([x(i),y(j),0,0]);
end
if strcmp(func_name,'F21')==1 || strcmp(func_name,'F22')==1 || strcmp(func_name,'F23')==1
f(i,j)=fobj([x(i),y(j),0,0]);
end
end
end
surfc(x,y,f,'LineStyle','none');
end
function [lb,ub,dim,fobj] = Get_Functions_details(F)
switch F
case 'F1'
fobj = @F1;
lb=-100;
ub=100;
dim=30;
case 'F2'
fobj = @F2;
lb=-10;
ub=10;
dim=30;
case 'F3'
fobj = @F3;
lb = -1;
ub = 1;
dim = 30;
case 'F4'
fobj = @F4;
lb=-100;
ub=100;
dim=30;
case 'F5'
fobj = @F5;
lb=-100;
ub=100;
dim=30;
case 'F6'
fobj = @F6;
lb=-30;
ub=30;
dim=30;
case 'F7'
fobj = @F7;
lb=-100;
ub=100;
dim=30;
case 'F8'
fobj = @F8;
lb=-1.28;
ub=1.28;
dim=30;
case 'F9'
fobj = @F9;
lb=-5;
ub=10;
dim=30;
case 'F10'
fobj = @F10;
lb=-500;
ub=500;
dim=30;
case 'F11'
fobj = @F11;
lb=-10;
ub=10;
dim=30;
case 'F12'
fobj = @F12;
lb=-5;
ub=5;
dim=30;
case 'F13'
fobj = @F13;
lb=-5.12;
ub=5.12;
dim=30;
case 'F14'
fobj = @F14;
lb=-32;
ub=32;
dim=30;
case 'F15'
fobj = @F15;
lb=-600;
ub=600;
dim=30;
case 'F16'
fobj = @F16;
lb=-10;
ub=10;
dim=30;
case 'F17'
fobj = @F17;
lb=-50;
ub=50;
dim=30;
case 'F18'
fobj = @F18;
lb=-50;
ub=50;
dim=30;
case 'F19'
fobj = @F19;
lb=-65;
ub=65;
dim=2;
case 'F20'
fobj = @F20;
lb=-5;
ub=5;
dim=4;
case 'F21'
fobj = @F21;
lb=-5;
ub=5;
dim=2;
case 'F22'
fobj = @F22;
lb=0;
ub=10;
dim=4;
case 'F23'
fobj = @F23;
lb=0;
ub=10;
dim=4;
case 'F24'
fobj = @F24;
lb=0;
ub=10;
dim=4;
end
end
% F1
function o = F1(x)
o=sum(x.^2);
end
% F2
function o = F2(x)
o=sum(abs(x))+prod(abs(x));
end
% F3
function o = F3(x)
dim = size(x,2);
o=0;
for i=1:dim
o=o+abs(x(i))^(i+1);
end
end
% F4
function o = F4(x)
dim=size(x,2);
o=0;
for i=1:dim
o=o+sum(x(1:i))^2;
end
end
% F5
function o = F5(x)
o=max(abs(x));
end
% F6
function o = F6(x)
dim=size(x,2);
o=sum(100*(x(2:dim)-(x(1:dim-1).^2)).^2+(x(1:dim-1)-1).^2);
end
% F7
function o = F7(x)
o=sum(abs((x+.5)).^2);
end
% F8
function o = F8(x)
dim=size(x,2);
o=sum([1:dim].*(x.^4))+rand;
end
% F9
function o = F9(x)
dim = size(x,2);
o = sum(x.^2)+(sum(0.5*[1:dim].*x))^2+(sum(0.5*[1:dim].*x))^4;
end
% F10
function o = F10(x)
o=sum(-x.*sin(sqrt(abs(x))));
end
% F11
function o = F11(x)
dim = size(x,2);
o = 1+sum(sin(x(1:dim)).^2)-exp(-sum(x.^2));
end
% F12
function o = F12(x)
dim = size(x,2);
o = 0.5*sum(x(1:dim).^4-16*x(1:dim).^2+5*x(1:dim));
end
% F13
function o = F13(x)
dim=size(x,2);
o=sum(x.^2-10*cos(2*pi.*x))+10*dim;
end
% F14
function o = F14(x)
dim=size(x,2);
o=-20*exp(-.2*sqrt(sum(x.^2)/dim))-exp(sum(cos(2*pi.*x))/dim)+20+exp(1);
end
% F15
function o = F15(x)
dim=size(x,2);
o=sum(x.^2)/4000-prod(cos(x./sqrt([1:dim])))+1;
end
% F16
function o = F16(x)
dim = size(x,2);
o = (sum(sin(x(1:dim)).^2) - exp(-sum(x.^2)))*exp(-sum(sin(sqrt(abs(x(1:dim)))).^2));
end
% F17
function o = F17(x)
dim=size(x,2);
o=(pi/dim)*(10*((sin(pi*(1+(x(1)+1)/4)))^2)+sum((((x(1:dim-1)+1)./4).^2).*...
(1+10.*((sin(pi.*(1+(x(2:dim)+1)./4)))).^2))+((x(dim)+1)/4)^2)+sum(Ufun(x,10,100,4));
end
% F18
function o = F18(x)
dim=size(x,2);
o=.1*((sin(3*pi*x(1)))^2+sum((x(1:dim-1)-1).^2.*(1+(sin(3.*pi.*x(2:dim))).^2))+...
((x(dim)-1)^2)*(1+(sin(2*pi*x(dim)))^2))+sum(Ufun(x,5,100,4));
end
% F19
function o = F19(x)
aS=[-32 -16 0 16 32 -32 -16 0 16 32 -32 -16 0 16 32 -32 -16 0 16 32 -32 -16 0 16 32;,...
-32 -32 -32 -32 -32 -16 -16 -16 -16 -16 0 0 0 0 0 16 16 16 16 16 32 32 32 32 32];
for j=1:25
bS(j)=sum((x'-aS(:,j)).^6);
end
o=(1/500+sum(1./([1:25]+bS))).^(-1);
end
% F20
function o = F20(x)
aK=[.1957 .1947 .1735 .16 .0844 .0627 .0456 .0342 .0323 .0235 .0246];
bK=[.25 .5 1 2 4 6 8 10 12 14 16];bK=1./bK;
o=sum((aK-((x(1).*(bK.^2+x(2).*bK))./(bK.^2+x(3).*bK+x(4)))).^2);
end
% F21
function o = F21(x)
o=4*(x(1)^2)-2.1*(x(1)^4)+(x(1)^6)/3+x(1)*x(2)-4*(x(2)^2)+4*(x(2)^4);
end
% F22
function o = F22(x)
aSH=[4 4 4 4;1 1 1 1;8 8 8 8;6 6 6 6;3 7 3 7;2 9 2 9;5 5 3 3;8 1 8 1;6 2 6 2;7 3.6 7 3.6];
cSH=[.1 .2 .2 .4 .4 .6 .3 .7 .5 .5];
o=0;
for i=1:5
o=o-((x-aSH(i,:))*(x-aSH(i,:))'+cSH(i))^(-1);
end
end
% F23
function o = F23(x)
aSH=[4 4 4 4;1 1 1 1;8 8 8 8;6 6 6 6;3 7 3 7;2 9 2 9;5 5 3 3;8 1 8 1;6 2 6 2;7 3.6 7 3.6];
cSH=[.1 .2 .2 .4 .4 .6 .3 .7 .5 .5];
o=0;
for i=1:7
o=o-((x-aSH(i,:))*(x-aSH(i,:))'+cSH(i))^(-1);
end
end
% F24
function o = F24(x)
aSH=[4 4 4 4;1 1 1 1;8 8 8 8;6 6 6 6;3 7 3 7;2 9 2 9;5 5 3 3;8 1 8 1;6 2 6 2;7 3.6 7 3.6];
cSH=[.1 .2 .2 .4 .4 .6 .3 .7 .5 .5];
o=0;
for i=1:10
o=o-((x-aSH(i,:))*(x-aSH(i,:))'+cSH(i))^(-1);
end
end
3 运行结果
4 参考文献
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。
function o = F8(x)
dim=size(x,2);
o=sum([1:dim].*(x.^4))+rand;
end
% F9
function o = F9(x)
dim = size(x,2);
o = sum(x.^2)+(sum(0.5*[1:dim].*x))^2+(sum(0.5*[1:dim].*x))^4;
end
% F10
function o = F10(x)
o=sum(-x.*sin(sqrt(abs(x))));
end
% F11
function o = F11(x)
dim = size(x,2);
o = 1+sum(sin(x(1:dim)).^2)-exp(-sum(x.^2));
end
% F12
function o = F12(x)
dim = size(x,2);
o = 0.5*sum(x(1:dim).^4-16*x(1:dim).^2+5*x(1:dim));
end
% F13
function o = F13(x)
dim=size(x,2);
o=sum(x.^2-10*cos(2*pi.*x))+10*dim;
end
% F14
function o = F14(x)
dim=size(x,2);
o=-20*exp(-.2*sqrt(sum(x.^2)/dim))-exp(sum(cos(2*pi.*x))/dim)+20+exp(1);
end
% F15
function o = F15(x)
dim=size(x,2);
o=sum(x.^2)/4000-prod(cos(x./sqrt([1:dim])))+1;
end
% F16
function o = F16(x)
dim = size(x,2);
o = (sum(sin(x(1:dim)).^2) - exp(-sum(x.^2)))*exp(-sum(sin(sqrt(abs(x(1:dim)))).^2));
end
% F17
function o = F17(x)
dim=size(x,2);
o=(pi/dim)*(10*((sin(pi*(1+(x(1)+1)/4)))^2)+sum((((x(1:dim-1)+1)./4).^2).*...
(1+10.*((sin(pi.*(1+(x(2:dim)+1)./4)))).^2))+((x(dim)+1)/4)^2)+sum(Ufun(x,10,100,4));
end
% F18
function o = F18(x)
dim=size(x,2);
o=.1*((sin(3*pi*x(1)))^2+sum((x(1:dim-1)-1).^2.*(1+(sin(3.*pi.*x(2:dim))).^2))+...
((x(dim)-1)^2)*(1+(sin(2*pi*x(dim)))^2))+sum(Ufun(x,5,100,4));
end
% F19
function o = F19(x)
aS=[-32 -16 0 16 32 -32 -16 0 16 32 -32 -16 0 16 32 -32 -16 0 16 32 -32 -16 0 16 32;,...
-32 -32 -32 -32 -32 -16 -16 -16 -16 -16 0 0 0 0 0 16 16 16 16 16 32 32 32 32 32];
for j=1:25
bS(j)=sum((x'-aS(:,j)).^6);
end
o=(1/500+sum(1./([1:25]+bS))).^(-1);
end
% F20
function o = F20(x)
aK=[.1957 .1947 .1735 .16 .0844 .0627 .0456 .0342 .0323 .0235 .0246];
bK=[.25 .5 1 2 4 6 8 10 12 14 16];bK=1./bK;
o=sum((aK-((x(1).*(bK.^2+x(2).*bK))./(bK.^2+x(3).*bK+x(4)))).^2);
end
% F21
function o = F21(x)
o=4*(x(1)^2)-2.1*(x(1)^4)+(x(1)^6)/3+x(1)*x(2)-4*(x(2)^2)+4*(x(2)^4);
end
% F22
function o = F22(x)
aSH=[4 4 4 4;1 1 1 1;8 8 8 8;6 6 6 6;3 7 3 7;2 9 2 9;5 5 3 3;8 1 8 1;6 2 6 2;7 3.6 7 3.6];
cSH=[.1 .2 .2 .4 .4 .6 .3 .7 .5 .5];
o=0;
for i=1:5
o=o-((x-aSH(i,:))*(x-aSH(i,:))'+cSH(i))^(-1);
end
end
% F23
function o = F23(x)
aSH=[4 4 4 4;1 1 1 1;8 8 8 8;6 6 6 6;3 7 3 7;2 9 2 9;5 5 3 3;8 1 8 1;6 2 6 2;7 3.6 7 3.6];
cSH=[.1 .2 .2 .4 .4 .6 .3 .7 .5 .5];
o=0;
for i=1:7
o=o-((x-aSH(i,:))*(x-aSH(i,:))'+cSH(i))^(-1);
end
end
% F24
function o = F24(x)
aSH=[4 4 4 4;1 1 1 1;8 8 8 8;6 6 6 6;3 7 3 7;2 9 2 9;5 5 3 3;8 1 8 1;6 2 6 2;7 3.6 7 3.6];
cSH=[.1 .2 .2 .4 .4 .6 .3 .7 .5 .5];
o=0;
for i=1:10
o=o-((x-aSH(i,:))*(x-aSH(i,:))'+cSH(i))^(-1);
end
end
3 运行结果
4 参考文献
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。
function [lb,ub,dim,fobj] = Get_Functions_details(F)
switch F
case 'F1'
fobj = @F1;
lb=-100;
ub=100;
dim=30;
case 'F2'
fobj = @F2;
lb=-10;
ub=10;
dim=30;
case 'F3'
fobj = @F3;
lb = -1;
ub = 1;
dim = 30;
case 'F4'
fobj = @F4;
lb=-100;
ub=100;
dim=30;
case 'F5'
fobj = @F5;
lb=-100;
ub=100;
dim=30;
case 'F6'
fobj = @F6;
lb=-30;
ub=30;
dim=30;
case 'F7'
fobj = @F7;
lb=-100;
ub=100;
dim=30;
case 'F8'
fobj = @F8;
lb=-1.28;
ub=1.28;
dim=30;
case 'F9'
fobj = @F9;
lb=-5;
ub=10;
dim=30;
case 'F10'
fobj = @F10;
lb=-500;
ub=500;
dim=30;
case 'F11'
fobj = @F11;
lb=-10;
ub=10;
dim=30;
case 'F12'
fobj = @F12;
lb=-5;
ub=5;
dim=30;
case 'F13'
fobj = @F13;
lb=-5.12;
ub=5.12;
dim=30;
case 'F14'
fobj = @F14;
lb=-32;
ub=32;
dim=30;
case 'F15'
fobj = @F15;
lb=-600;
ub=600;
dim=30;
case 'F16'
fobj = @F16;
lb=-10;
ub=10;
dim=30;
case 'F17'
fobj = @F17;
lb=-50;
ub=50;
dim=30;
case 'F18'
fobj = @F18;
lb=-50;
ub=50;
dim=30;
case 'F19'
fobj = @F19;
lb=-65;
ub=65;
dim=2;
case 'F20'
fobj = @F20;
lb=-5;
ub=5;
dim=4;
case 'F21'
fobj = @F21;
lb=-5;
ub=5;
dim=2;
case 'F22'
fobj = @F22;
lb=0;
ub=10;
dim=4;
case 'F23'
fobj = @F23;
lb=0;
ub=10;
dim=4;
case 'F24'
fobj = @F24;
lb=0;
ub=10;
dim=4;
end
end
% F1
function o = F1(x)
o=sum(x.^2);
end
% F2
function o = F2(x)
o=sum(abs(x))+prod(abs(x));
end
% F3
function o = F3(x)
dim = size(x,2);
o=0;
for i=1:dim
o=o+abs(x(i))^(i+1);
end
end
% F4
function o = F4(x)
dim=size(x,2);
o=0;
for i=1:dim
o=o+sum(x(1:i))^2;
end
end
% F5
function o = F5(x)
o=max(abs(x));
end
% F6
function o = F6(x)
dim=size(x,2);
o=sum(100*(x(2:dim)-(x(1:dim-1).^2)).^2+(x(1:dim-1)-1).^2);
end
% F7
function o = F7(x)
o=sum(abs((x+.5)).^2);
end
% F8
function o = F8(x)
dim=size(x,2);
o=sum([1:dim].*(x.^4))+rand;
end
% F9
function o = F9(x)
dim = size(x,2);
o = sum(x.^2)+(sum(0.5*[1:dim].*x))^2+(sum(0.5*[1:dim].*x))^4;
end
% F10
function o = F10(x)
o=sum(-x.*sin(sqrt(abs(x))));
end
% F11
function o = F11(x)
dim = size(x,2);
o = 1+sum(sin(x(1:dim)).^2)-exp(-sum(x.^2));
end
% F12
function o = F12(x)
dim = size(x,2);
o = 0.5*sum(x(1:dim).^4-16*x(1:dim).^2+5*x(1:dim));
end
% F13
function o = F13(x)
dim=size(x,2);
o=sum(x.^2-10*cos(2*pi.*x))+10*dim;
end
% F14
function o = F14(x)
dim=size(x,2);
o=-20*exp(-.2*sqrt(sum(x.^2)/dim))-exp(sum(cos(2*pi.*x))/dim)+20+exp(1);
end
% F15
function o = F15(x)
dim=size(x,2);
o=sum(x.^2)/4000-prod(cos(x./sqrt([1:dim])))+1;
end
% F16
function o = F16(x)
dim = size(x,2);
o = (sum(sin(x(1:dim)).^2) - exp(-sum(x.^2)))*exp(-sum(sin(sqrt(abs(x(1:dim)))).^2));
end
% F17
function o = F17(x)
dim=size(x,2);
o=(pi/dim)*(10*((sin(pi*(1+(x(1)+1)/4)))^2)+sum((((x(1:dim-1)+1)./4).^2).*...
(1+10.*((sin(pi.*(1+(x(2:dim)+1)./4)))).^2))+((x(dim)+1)/4)^2)+sum(Ufun(x,10,100,4));
end
% F18
function o = F18(x)
dim=size(x,2);
o=.1*((sin(3*pi*x(1)))^2+sum((x(1:dim-1)-1).^2.*(1+(sin(3.*pi.*x(2:dim))).^2))+...
((x(dim)-1)^2)*(1+(sin(2*pi*x(dim)))^2))+sum(Ufun(x,5,100,4));
end
% F19
function o = F19(x)
aS=[-32 -16 0 16 32 -32 -16 0 16 32 -32 -16 0 16 32 -32 -16 0 16 32 -32 -16 0 16 32;,...
-32 -32 -32 -32 -32 -16 -16 -16 -16 -16 0 0 0 0 0 16 16 16 16 16 32 32 32 32 32];
for j=1:25
bS(j)=sum((x'-aS(:,j)).^6);
end
o=(1/500+sum(1./([1:25]+bS))).^(-1);
end
% F20
function o = F20(x)
aK=[.1957 .1947 .1735 .16 .0844 .0627 .0456 .0342 .0323 .0235 .0246];
bK=[.25 .5 1 2 4 6 8 10 12 14 16];bK=1./bK;
o=sum((aK-((x(1).*(bK.^2+x(2).*bK))./(bK.^2+x(3).*bK+x(4)))).^2);
end
% F21
function o = F21(x)
o=4*(x(1)^2)-2.1*(x(1)^4)+(x(1)^6)/3+x(1)*x(2)-4*(x(2)^2)+4*(x(2)^4);
end
% F22
function o = F22(x)
aSH=[4 4 4 4;1 1 1 1;8 8 8 8;6 6 6 6;3 7 3 7;2 9 2 9;5 5 3 3;8 1 8 1;6 2 6 2;7 3.6 7 3.6];
cSH=[.1 .2 .2 .4 .4 .6 .3 .7 .5 .5];
o=0;
for i=1:5
o=o-((x-aSH(i,:))*(x-aSH(i,:))'+cSH(i))^(-1);
end
end
% F23
function o = F23(x)
aSH=[4 4 4 4;1 1 1 1;8 8 8 8;6 6 6 6;3 7 3 7;2 9 2 9;5 5 3 3;8 1 8 1;6 2 6 2;7 3.6 7 3.6];
cSH=[.1 .2 .2 .4 .4 .6 .3 .7 .5 .5];
o=0;
for i=1:7
o=o-((x-aSH(i,:))*(x-aSH(i,:))'+cSH(i))^(-1);
end
end
% F24
function o = F24(x)
aSH=[4 4 4 4;1 1 1 1;8 8 8 8;6 6 6 6;3 7 3 7;2 9 2 9;5 5 3 3;8 1 8 1;6 2 6 2;7 3.6 7 3.6];
cSH=[.1 .2 .2 .4 .4 .6 .3 .7 .5 .5];
o=0;
for i=1:10
o=o-((x-aSH(i,:))*(x-aSH(i,:))'+cSH(i))^(-1);
end
end
3 运行结果
4 参考文献
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。
function o = F8(x)
dim=size(x,2);
o=sum([1:dim].*(x.^4))+rand;
end
% F9
function o = F9(x)
dim = size(x,2);
o = sum(x.^2)+(sum(0.5*[1:dim].*x))^2+(sum(0.5*[1:dim].*x))^4;
end
% F10
function o = F10(x)
o=sum(-x.*sin(sqrt(abs(x))));
end
% F11
function o = F11(x)
dim = size(x,2);
o = 1+sum(sin(x(1:dim)).^2)-exp(-sum(x.^2));
end
% F12
function o = F12(x)
dim = size(x,2);
o = 0.5*sum(x(1:dim).^4-16*x(1:dim).^2+5*x(1:dim));
end
% F13
function o = F13(x)
dim=size(x,2);
o=sum(x.^2-10*cos(2*pi.*x))+10*dim;
end
% F14
function o = F14(x)
dim=size(x,2);
o=-20*exp(-.2*sqrt(sum(x.^2)/dim))-exp(sum(cos(2*pi.*x))/dim)+20+exp(1);
end
% F15
function o = F15(x)
dim=size(x,2);
o=sum(x.^2)/4000-prod(cos(x./sqrt([1:dim])))+1;
end
% F16
function o = F16(x)
dim = size(x,2);
o = (sum(sin(x(1:dim)).^2) - exp(-sum(x.^2)))*exp(-sum(sin(sqrt(abs(x(1:dim)))).^2));
end
% F17
function o = F17(x)
dim=size(x,2);
o=(pi/dim)*(10*((sin(pi*(1+(x(1)+1)/4)))^2)+sum((((x(1:dim-1)+1)./4).^2).*...
(1+10.*((sin(pi.*(1+(x(2:dim)+1)./4)))).^2))+((x(dim)+1)/4)^2)+sum(Ufun(x,10,100,4));
end
% F18
function o = F18(x)
dim=size(x,2);
o=.1*((sin(3*pi*x(1)))^2+sum((x(1:dim-1)-1).^2.*(1+(sin(3.*pi.*x(2:dim))).^2))+...
((x(dim)-1)^2)*(1+(sin(2*pi*x(dim)))^2))+sum(Ufun(x,5,100,4));
end
% F19
function o = F19(x)
aS=[-32 -16 0 16 32 -32 -16 0 16 32 -32 -16 0 16 32 -32 -16 0 16 32 -32 -16 0 16 32;,...
-32 -32 -32 -32 -32 -16 -16 -16 -16 -16 0 0 0 0 0 16 16 16 16 16 32 32 32 32 32];
for j=1:25
bS(j)=sum((x'-aS(:,j)).^6);
end
o=(1/500+sum(1./([1:25]+bS))).^(-1);
end
% F20
function o = F20(x)
aK=[.1957 .1947 .1735 .16 .0844 .0627 .0456 .0342 .0323 .0235 .0246];
bK=[.25 .5 1 2 4 6 8 10 12 14 16];bK=1./bK;
o=sum((aK-((x(1).*(bK.^2+x(2).*bK))./(bK.^2+x(3).*bK+x(4)))).^2);
end
% F21
function o = F21(x)
o=4*(x(1)^2)-2.1*(x(1)^4)+(x(1)^6)/3+x(1)*x(2)-4*(x(2)^2)+4*(x(2)^4);
end
% F22
function o = F22(x)
aSH=[4 4 4 4;1 1 1 1;8 8 8 8;6 6 6 6;3 7 3 7;2 9 2 9;5 5 3 3;8 1 8 1;6 2 6 2;7 3.6 7 3.6];
cSH=[.1 .2 .2 .4 .4 .6 .3 .7 .5 .5];
o=0;
for i=1:5
o=o-((x-aSH(i,:))*(x-aSH(i,:))'+cSH(i))^(-1);
end
end
% F23
function o = F23(x)
aSH=[4 4 4 4;1 1 1 1;8 8 8 8;6 6 6 6;3 7 3 7;2 9 2 9;5 5 3 3;8 1 8 1;6 2 6 2;7 3.6 7 3.6];
cSH=[.1 .2 .2 .4 .4 .6 .3 .7 .5 .5];
o=0;
for i=1:7
o=o-((x-aSH(i,:))*(x-aSH(i,:))'+cSH(i))^(-1);
end
end
% F24
function o = F24(x)
aSH=[4 4 4 4;1 1 1 1;8 8 8 8;6 6 6 6;3 7 3 7;2 9 2 9;5 5 3 3;8 1 8 1;6 2 6 2;7 3.6 7 3.6];
cSH=[.1 .2 .2 .4 .4 .6 .3 .7 .5 .5];
o=0;
for i=1:10
o=o-((x-aSH(i,:))*(x-aSH(i,:))'+cSH(i))^(-1);
end
end
3 运行结果
4 参考文献
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。