⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bench_funcs.m

📁 Matlab code for Fullyinformed PSO
💻 M
📖 第 1 页 / 共 2 页
字号:
[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 + -