📄 bench_funcs.m
字号:
[ps,D]=size(x);
if initial_flag==0
[Rmax Rmin]=Search_range(func_num);
O=Rmin + 2*Rmax*rand(1,D);
initial_flag=1;
end
x=x-O;
n = D;s1 = 0;
for j = 2:n;
s1 = s1+j*(2*x(j)^2-x(j-1))^2;
end
f = s1+(x(1)-1)^2;
%---------------------
%-------Shifted Griewank------
function f = sGriewank(x)
global initial_flag M O Rmax Rmin
persistent fhd func_num
[ps,D]=size(x);
if initial_flag==0
[Rmax Rmin]=Search_range(func_num);
O=Rmin + 2*Rmax*rand(1,D);
initial_flag=1;
end
x=x-O;
n = D; fr = 4000; s = 0; p = 1;
for j = 1:n; s = s+x(j)^2; end
for j = 1:n; p = p*cos(x(j)/sqrt(j)); end
f = s/fr-p+1;
%---------------------
%------- Shifted Levy --------
function f = sLevy(x)
global initial_flag M O Rmax Rmin
persistent fhd func_num
[ps,D]=size(x);
if initial_flag==0
[Rmax Rmin]=Search_range(func_num);
O=Rmin + 2*Rmax*rand(1,D);
initial_flag=1;
end
x=x-O;
n = D;
for i = 1:n; z(i) = 1+(x(i)-1)/4; end
s = sin(pi*z(1))^2;
for i = 1:n-1
s = s+(z(i)-1)^2*(1+10*(sin(pi*z(i)+1))^2);
end
f = s+(z(n)-1)^2*(1+(sin(2*pi*z(n)))^2);
%----------------------
%------Shifted Powell --------
function f = sPowell(x)
global initial_flag M O Rmax Rmin
persistent fhd func_num
[ps,D]=size(x);
if initial_flag==0
[Rmax Rmin]=Search_range(func_num);
O=Rmin + 2*Rmax*rand(1,D);
initial_flag=1;
end
x=x-O;
n = D; m = n;
for i = 1:m/4
fvec(4*i-3) = x(4*i-3)+10*(x(4*i-2));
fvec(4*i-2) = sqrt(5)*(x(4*i-1)-x(4*i));
fvec(4*i-1) = (x(4*i-2)-2*(x(4*i-1)))^2;
fvec(4*i) = sqrt(10)*(x(4*i-3)-x(4*i))^2;
end;
fvec = fvec';
f = norm(fvec)^2;
%----------------------
%--------Shifted Rastrigin------
function f = sRastrigin(x)
global initial_flag M O Rmax Rmin
persistent fhd func_num
[ps,D]=size(x);
if initial_flag==0
[Rmax Rmin]=Search_range(func_num);
O=Rmin + 2*Rmax*rand(1,D);
initial_flag=1;
end
x=x-O;
n = D; s = 0;
for j = 1:n
s = s+(x(j)^2-10*cos(2*pi*x(j)));
end
f = 10*n+s;
%----------------------
%--------Shifted Rosenbrock -------
function f = sRosenbrock(x)
global initial_flag M O Rmax Rmin
persistent fhd func_num
[ps,D]=size(x);
if initial_flag==0
[Rmax Rmin]=Search_range(func_num);
O=Rmin + 2*Rmax*rand(1,D);
initial_flag=1;
end
x=x-O;
n = D; sum = 0;
for j = 1:n-1;
sum = sum+100*(x(j)^2-x(j+1))^2+(x(j)-1)^2;
end
f = sum;
%--------------------------
%-------Shifted Sphere -----------
function f = sSphere(x)
global initial_flag M O Rmax Rmin
persistent fhd func_num
[ps,D]=size(x);
if initial_flag==0
[Rmax Rmin]=Search_range(func_num);
O=Rmin + 2*Rmax*rand(1,D);
initial_flag=1;
end
x=x-O;
n = D;s = 0;
for j = 1:n
s = s+x(j)^2;
end
f = s;
%--------------------------
%----------Shifted SumSquar -------
function f = sSumSquar(x)
global initial_flag M O Rmax Rmin
persistent fhd func_num
[ps,D]=size(x);
if initial_flag==0
[Rmax Rmin]=Search_range(func_num);
O=Rmin + 2*Rmax*rand(1,D);
initial_flag=1;
end
x=x-O;
n = D;s = 0;
for j = 1:n
s=s+j*x(j)^2;
end
f = s;
%--------------------------
%---------- Shifted Zakharov -------
function f =sZakharov(x)
global initial_flag M O Rmax Rmin
persistent fhd func_num
[ps,D]=size(x);
if initial_flag==0
[Rmax Rmin]=Search_range(func_num);
O=Rmin + 2*Rmax*rand(1,D);
initial_flag=1;
end
x=x-O;
n = D;s1 = 0;s2 = 0;
for j = 1:n;
s1 = s1+x(j)^2;
s2 = s2+0.5*j*x(j);
end
f = s1+s2^2+s2^4;
%--------------------------
%------------Shifted Weierstrass-----
function [f]=sWeierstrass(x)
global initial_flag M O Rmax Rmin
persistent fhd func_num
[ps,D]=size(x);
if initial_flag==0
[Rmax Rmin]=Search_range(func_num);
O=Rmin + 2*Rmax*rand(1,D);
initial_flag=1;
end
x=x-O;
x=x+0.5; a = 0.5; b = 3; kmax = 20;
c1(1:kmax+1) = a.^(0:kmax);
c2(1:kmax+1) = 2*pi*b.^(0:kmax);
f=0;
c=-w(0.5,c1,c2);
for i=1:D
f=f+w(x(:,i)',c1,c2);
end
f=f+c*D;
%--------------------------
%---------Shifted Elliptic----------
function f=sElliptic(x)
global initial_flag M O Rmax Rmin
persistent fhd func_num
[ps,D]=size(x);
if initial_flag==0
[Rmax Rmin]=Search_range(func_num);
O=Rmin + 2*Rmax*rand(1,D);
initial_flag=1;
end
x=x-O;
a=1e+6;
f=0;
for i=1:D
f=f+a.^((i-1)/(D-1)).*x(:,i).^2;
end
%--------------------------
%--------- Shifted Schwefel--------
function f = sSchwefel(x)
global initial_flag M O Rmax Rmin
persistent fhd func_num
[ps,D]=size(x);
if initial_flag==0
[Rmax Rmin]=Search_range(func_num);
O=Rmin + 2*Rmax*rand(1,D);
initial_flag=1;
end
x=x-O;
n = D;
s = sum(-x.*sin(sqrt(abs(x))));
f = 418.9829*n+s;
%--------------------------
%------------------------------------------------------------------
%------------------SHIFTED and ROTAED BASIC FUNCTIONS---------------------
%-------Shifted and Rotated Ackley--------
function f=srAckley(x)
global initial_flag M O Rmax Rmin
persistent fhd func_num
[ps,D]=size(x);
if initial_flag==0
[Rmax Rmin]=Search_range(func_num);
O=Rmin + 2*Rmax*rand(1,D);
M=orthm_generator(D);
initial_flag=1;
end
x=x-O;
y=x;
x1=M*y.';
x=x1.';
n=D;
e=exp(1);
f = (20 + e ...
-20*exp(-0.2*sqrt((1/n).*sum(x.^2,2))) ...
-exp((1/n).*sum(cos(2*pi*x),2)));
%---------------------
%-------Shifted and Rotated DixonPrice ----
function f = srDixonPrice(x)
global initial_flag M O Rmax Rmin
persistent fhd func_num
[ps,D]=size(x);
if initial_flag==0
[Rmax Rmin]=Search_range(func_num);
O=Rmin + 2*Rmax*rand(1,D);
M=orthm_generator(D);
initial_flag=1;
end
x=x-O;
y=x;
x1=M*y.';
x=x1.';
n = D;s1 = 0;
for j = 2:n;
s1 = s1+j*(2*x(j)^2-x(j-1))^2;
end
f = s1+(x(1)-1)^2;
%---------------------
%-------Shifted and Rotated Griewank------
function f = srGriewank(x)
global initial_flag M O Rmax Rmin
persistent fhd func_num
[ps,D]=size(x);
if initial_flag==0
[Rmax Rmin]=Search_range(func_num);
O=Rmin + 2*Rmax*rand(1,D);
M=orthm_generator(D);
initial_flag=1;
end
x=x-O;
y=x;
x1=M*y.';
x=x1.';
n = D; fr = 4000; s = 0; p = 1;
for j = 1:n; s = s+x(j)^2; end
for j = 1:n; p = p*cos(x(j)/sqrt(j)); end
f = s/fr-p+1;
%---------------------
%------- Shifted and Rotated Levy --------
function f = srLevy(x)
global initial_flag M O Rmax Rmin
persistent fhd func_num
[ps,D]=size(x);
if initial_flag==0
[Rmax Rmin]=Search_range(func_num);
O=Rmin + 2*Rmax*rand(1,D);
M=orthm_generator(D);
initial_flag=1;
end
x=x-O;
y=x;
x1=M*y.';
x=x1.';
n = D;
for i = 1:n; z(i) = 1+(x(i)-1)/4; end
s = sin(pi*z(1))^2;
for i = 1:n-1
s = s+(z(i)-1)^2*(1+10*(sin(pi*z(i)+1))^2);
end
f = s+(z(n)-1)^2*(1+(sin(2*pi*z(n)))^2);
%----------------------
%------Shifted and Rotated Powell --------
function f = srPowell(x)
global initial_flag M O Rmax Rmin
persistent fhd func_num
[ps,D]=size(x);
if initial_flag==0
[Rmax Rmin]=Search_range(func_num);
O=Rmin + 2*Rmax*rand(1,D);
M=orthm_generator(D);
initial_flag=1;
end
x=x-O;
y=x;
x1=M*y.';
x=x1.';
n = D; m = n;
for i = 1:m/4
fvec(4*i-3) = x(4*i-3)+10*(x(4*i-2));
fvec(4*i-2) = sqrt(5)*(x(4*i-1)-x(4*i));
fvec(4*i-1) = (x(4*i-2)-2*(x(4*i-1)))^2;
fvec(4*i) = sqrt(10)*(x(4*i-3)-x(4*i))^2;
end;
fvec = fvec';
f = norm(fvec)^2;
%----------------------
%--------Shifted and Rotated Rastrigin------
function f = srRastrigin(x)
global initial_flag M O Rmax Rmin
persistent fhd func_num
[ps,D]=size(x);
if initial_flag==0
[Rmax Rmin]=Search_range(func_num);
O=Rmin + 2*Rmax*rand(1,D);
M=orthm_generator(D);
initial_flag=1;
end
x=x-O;
y=x;
x1=M*y.';
x=x1.';
n = D; s = 0;
for j = 1:n
s = s+(x(j)^2-10*cos(2*pi*x(j)));
end
f = 10*n+s;
%----------------------
%--------Shifted and Rotated Rosenbrock -------
function f = srRosenbrock(x)
global initial_flag M O Rmax Rmin
persistent fhd func_num
[ps,D]=size(x);
if initial_flag==0
[Rmax Rmin]=Search_range(func_num);
O=Rmin + 2*Rmax*rand(1,D);
M=orthm_generator(D);
initial_flag=1;
end
x=x-O;
y=x;
x1=M*y.';
x=x1.';
n = D; sum = 0;
for j = 1:n-1;
sum = sum+100*(x(j)^2-x(j+1))^2+(x(j)-1)^2;
end
f = sum;
%--------------------------
%-------Shifted and Rotated Sphere -----------
function f = srSphere(x)
global initial_flag M O Rmax Rmin
persistent fhd func_num
[ps,D]=size(x);
if initial_flag==0
[Rmax Rmin]=Search_range(func_num);
O=Rmin + 2*Rmax*rand(1,D);
M=orthm_generator(D);
initial_flag=1;
end
x=x-O;
y=x;
x1=M*y.';
x=x1.';
n = D;s = 0;
for j = 1:n
s = s+x(j)^2;
end
f = s;
%--------------------------
%----------Shifted and Rotated SumSquar -------
function f = srSumSquar(x)
global initial_flag M O Rmax Rmin
persistent fhd func_num
[ps,D]=size(x);
if initial_flag==0
[Rmax Rmin]=Search_range(func_num);
O=Rmin + 2*Rmax*rand(1,D);
M=orthm_generator(D);
initial_flag=1;
end
x=x-O;
y=x;
x1=M*y.';
x=x1.';
n = D;s = 0;
for j = 1:n
s=s+j*x(j)^2;
end
f = s;
%--------------------------
%---------- Shifted and Rotated Zakharov -------
function f =srZakharov(x)
global initial_flag M O Rmax Rmin
persistent fhd func_num
[ps,D]=size(x);
if initial_flag==0
[Rmax Rmin]=Search_range(func_num);
O=Rmin + 2*Rmax*rand(1,D);
M=orthm_generator(D);
initial_flag=1;
end
x=x-O;
y=x;
x1=M*y.';
x=x1.';
n = D;s1 = 0;s2 = 0;
for j = 1:n;
s1 = s1+x(j)^2;
s2 = s2+0.5*j*x(j);
end
f = s1+s2^2+s2^4;
%--------------------------
%------------Shifted and Rotated Weierstrass-----
function [f]=srWeierstrass(x)
global initial_flag M O Rmax Rmin
persistent fhd func_num
[ps,D]=size(x);
if initial_flag==0
[Rmax Rmin]=Search_range(func_num);
O=Rmin + 2*Rmax*rand(1,D);
M=orthm_generator(D);
initial_flag=1;
end
x=x-O;
y=x;
x1=M*y.';
x=x1.';
x=x+0.5; a = 0.5; b = 3; kmax = 20;
c1(1:kmax+1) = a.^(0:kmax);
c2(1:kmax+1) = 2*pi*b.^(0:kmax);
f=0;
c=-w(0.5,c1,c2);
for i=1:D
f=f+w(x(:,i)',c1,c2);
end
f=f+c*D;
function y = w(x,c1,c2)
y = zeros(length(x),1);
for k = 1:length(x)
y(k) = sum(c1 .* cos(c2.*x(:,k)));
end
%--------------------------
%---------Shifted and Rotated Elliptic----------
function f=srElliptic(x)
global initial_flag M O Rmax Rmin
persistent fhd func_num
[ps,D]=size(x);
if initial_flag==0
[Rmax Rmin]=Search_range(func_num);
O=Rmin + 2*Rmax*rand(1,D);
M=orthm_generator(D);
initial_flag=1;
end
x=x-O;
y=x;
x1=M*y.';
x=x1.';
a=1e+6;
f=0;
for i=1:D
f=f+a.^((i-1)/(D-1)).*x(:,i).^2;
end
%--------------------------
%--------- Shifted and Rotated Schwefel--------
function f = srSchwefel(x)
global initial_flag M O Rmax Rmin
persistent fhd func_num
[ps,D]=size(x);
if initial_flag==0
[Rmax Rmin]=Search_range(func_num);
O=Rmin + 2*Rmax*rand(1,D);
M=orthm_generator(D);
initial_flag=1;
end
x=x-O;
y=x;
x1=M*y.';
x=x1.';
n = D;
s = sum(-x.*sin(sqrt(abs(x))));
f = 418.9829*n+s;
%--------------------------
%----------------------------------------------
function M=orthm_generator(D)
global initial_flag M O Rmax Rmin
persistent fhd func_num
pi=3.14159;
M=diag(ones(1,D));
for j=1:D%*D
R1=diag(ones(1,D));
x=pi/2.*rand;angel=[cos(x) -sin(x);sin(x) cos(x)];
rc=randperm(D);row=rc(1:2);
R1(row(1),row(1))=angel(1,1);
R1(row(1),row(2))=angel(1,2);
R1(row(2),row(1))=angel(2,1);
R1(row(2),row(2))=angel(2,2);
M=M*R1;
end
% classical Gram Schmid
function [q,r] = cGram_Schmidt (A)
global initial_flag M O Rmax Rmin
persistent fhd func_num
% computes the QR factorization of $A$ via
% classical Gram Schmid
%
[n,m] = size(A);
q = A;
for j=1:m
for i=1:j-1
r(i,j) = q(:,j)'*q(:,i);
end
for i=1:j-1
q(:,j) = q(:,j) - r(i,j)*q(:,i);
end
t = norm(q(:,j),2 ) ;
q(:,j) = q(:,j) / t ;
r(j,j) = t ;
end
function M=rot_matrix(D,c)
global initial_flag M O Rmax Rmin
persistent fhd func_num
A=normrnd(0,1,D,D);
P=cGram_Schmidt(A);
A=normrnd(0,1,D,D);
Q=cGram_Schmidt(A);
u=rand(1,D);
D=c.^((u-min(u))./(max(u)-min(u)));
D=diag(D);
M=P*D*Q;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -