CEC 2021基准测试集 您所在的位置:网站首页 cec测试是什么意思 CEC 2021基准测试集

CEC 2021基准测试集

2023-10-21 15:07| 来源: 网络整理| 查看: 265

标题/*

CEC21 Test Function Suite for Single Objective Bound Constrained Numerical Optimization

*/

#include #include #include #include #define INF 1.0e99 #define EPS 1.0e-14 #define E 2.7182818284590452353602874713526625 #define PI 3.1415926535897932384626433832795029

void ellips_func(double *, double *, int , double *,double , int, int); / Ellipsoidal */ void bent_cigar_func(double *, double *, int , double *,double , int, int); / Discus */ void discus_func(double *, double *, int , double *,double , int, int); / Bent_Cigar */ void rosenbrock_func (double *, double *, int , double *,double , int, int); / Rosenbrock’s */ void ackley_func (double *, double *, int , double *,double , int, int); / Ackley’s */ void rastrigin_func (double *, double *, int , double *,double , int, int); / Rastrigin’s */ void griewank_func (double *, double *, int , double *,double , int, int); / Griewank’s */ void schwefel_func (double *, double *, int , double *,double , int, int); / Schwefel’s */ void bi_rastrigin_func (double *, double *, int , double *,double , int, int); / Lunacek Bi_rastrigin */ void grie_rosen_func (double *, double *, int , double *,double , int, int); / Griewank-Rosenbrock */ void escaffer6_func (double *, double *, int , double *,double , int, int); / Expanded Scaffer��s F6 */ void happycat_func (double *, double *, int , double *,double , int, int); / HappyCat */ void hgbat_func (double *, double *, int , double *,double , int, int); / HGBat */

void hf01 (double *, double *, int, double *,double *, int ,int, int); / Hybrid Function 1 */ void hf05 (double *, double *, int, double *,double *, int ,int, int); / Hybrid Function 5 */ void hf06 (double *, double *, int, double *,double *, int ,int, int); / Hybrid Function 6 */

void cf02 (double *, double *, int , double *,double , int); / Composition Function 2 */ void cf04 (double *, double *, int , double *,double , int); / Composition Function 4 */ void cf05 (double *, double *, int , double *,double , int); / Composition Function 5 */

void cf02_s (double *, double *, int , double ,double , int); / Composition Function 2 for shift case/ void cf04_s (double *, double *, int , double ,double , int); / Composition Function 4 for shift case/ void cf05_s (double *, double *, int , double ,double , int); / Composition Function 5 for shift case/

void shiftfunc (double*,double*,int,double*); void rotatefunc (double*,double*,int, double*); void sr_func (double , double , int, double, double, double, int, int); /* shift and rotate */ void asyfunc (double *, double *x, int, double); void oszfunc (double *, double *, int); void cf_cal(double *, double *, int, double *,double *,double *,double *,int);

extern double *OShift,*M,*y,*z,*x_bound; extern int ini_flag,n_flag,func_flag,*SS;

void cec21_basic_func(double *x, double *f, int nx, int mx,int func_num) {

int cf_num=10,i,j; if (func_num10) { printf("\nError: Test function %d is not defined.\n", func_num); } if (ini_flag==1) { if ((n_flag!=nx)||(func_flag!=func_num)) { ini_flag=0; } } if (ini_flag==0) { FILE *fpt; char FileName[256]; free(M); free(OShift); free(y); free(z); free(x_bound); y=(double *)malloc(sizeof(double) * nx); z=(double *)malloc(sizeof(double) * nx); x_bound=(double *)malloc(sizeof(double) * nx); for (i=0; i switch(func_num) { case 1: bent_cigar_func(&x[inx],&f[i],nx,OShift,M,1,1); f[i]+=100.0; break; case 2: schwefel_func(&x[inx],&f[i],nx,OShift,M,1,1); f[i]+=1100.0; break; case 3: bi_rastrigin_func(&x[inx],&f[i],nx,OShift,M,1,1); f[i]+=700.0; break; case 4: grie_rosen_func(&x[inx],&f[i],nx,OShift,M,1,1); f[i]+=1900.0; break; case 5: hf01(&x[inx],&f[i],nx,OShift,M,SS,1,1); f[i]=f[i]+1700.0; break; case 6: hf06(&x[inx],&f[i],nx,OShift,M,SS,1,1); f[i]+=1600.0; break; case 7: hf05(&x[inx],&f[i],nx,OShift,M,SS,1,1); f[i]+=2100.0; break; case 8: cf02(&x[inx],&f[i],nx,OShift,M,1); f[i]+=2200.0; break; case 9: cf04(&x[inx],&f[i],nx,OShift,M,1); f[i]+=2400.0; break; case 10: cf05(&x[inx],&f[i],nx,OShift,M,1); f[i]+=2500.0; break; default: printf("\nError: There are only 10 test functions in this test suite!\n"); f[i] = 0.0; break; }

}

}

void cec21_bias_rot_func(double *x, double *f, int nx, int mx,int func_num) {

int cf_num=10,i,j; if (func_num10) { printf("\nError: Test function %d is not defined.\n", func_num); } if (ini_flag==1) { if ((n_flag!=nx)||(func_flag!=func_num)) { ini_flag=0; } } if (ini_flag==0) { FILE *fpt; char FileName[256]; free(M); free(OShift); free(y); free(z); free(x_bound); y=(double *)malloc(sizeof(double) * nx); z=(double *)malloc(sizeof(double) * nx); x_bound=(double *)malloc(sizeof(double) * nx); for (i=0; i

int cf_num=10,i,j; if (func_num10) { printf("\nError: Test function %d is not defined.\n", func_num); } if (ini_flag==1) { if ((n_flag!=nx)||(func_flag!=func_num)) { ini_flag=0; } } if (ini_flag==0) { FILE *fpt; char FileName[256]; free(M); free(OShift); free(y); free(z); free(x_bound); y=(double *)malloc(sizeof(double) * nx); z=(double *)malloc(sizeof(double) * nx); x_bound=(double *)malloc(sizeof(double) * nx); for (i=0; i

int cf_num=10,i,j; if (func_num10) { printf("\nError: Test function %d is not defined.\n", func_num); } if (ini_flag==1) { if ((n_flag!=nx)||(func_flag!=func_num)) { ini_flag=0; } } if (ini_flag==0) { FILE *fpt; char FileName[256]; free(M); free(OShift); free(y); free(z); free(x_bound); y=(double *)malloc(sizeof(double) * nx); z=(double *)malloc(sizeof(double) * nx); x_bound=(double *)malloc(sizeof(double) * nx); for (i=0; i

int cf_num=10,i,j; if (func_num10) { printf("\nError: Test function %d is not defined.\n", func_num); } if (ini_flag==1) { if ((n_flag!=nx)||(func_flag!=func_num)) { ini_flag=0; } } if (ini_flag==0) { FILE *fpt; char FileName[256]; free(M); free(OShift); free(y); free(z); free(x_bound); y=(double *)malloc(sizeof(double) * nx); z=(double *)malloc(sizeof(double) * nx); x_bound=(double *)malloc(sizeof(double) * nx); for (i=0; i int i; sr_func (x, z, nx, Os, Mr,1.0, s_flag, r_flag); / shift and rotate */ f[0] = z[0]*z[0]; for (i=1; i int i; sr_func (x, z, nx, Os, Mr,1.0, s_flag, r_flag); / shift and rotate */ f[0] = pow(10.0,6.0)*z[0]*z[0]; for (i=1; i int i; double tmp1,tmp2; f[0] = 0.0; sr_func (x, z, nx, Os, Mr, 2.048/100.0, s_flag, r_flag); / shift and rotate / z[0] += 1.0;//shift to orgin for (i=0; i int i; double sum1, sum2; sum1 = 0.0; sum2 = 0.0;

sr_func (x, z, nx, Os, Mr, 1.0, s_flag, r_flag); /* shift and rotate */ for (i=0; i int i; f[0] = 0.0;

sr_func (x, z, nx, Os, Mr, 5.12/100.0, s_flag, r_flag); /* shift and rotate */ for (i=0; i int i; double mu0=2.5,d=1.0,s,mu1,tmp,tmp1,tmp2; double tmpx; tmpx=(double )malloc(sizeof(double) * nx); s=1.0-1.0/(2.0pow(nx+20.0,0.5)-8.2); mu1=-pow((mu0mu0-d)/s,0.5);

if (s_flag==1) shiftfunc(x, y, nx, Os); else { for (i=0; i int i; double temp1, temp2;

sr_func (x, z, nx, Os, Mr, 1.0, s_flag, r_flag); /* shift and rotate */ f[0] = 0.0; for (i=0; i int i; double alpha,r2,sum_z; alpha=1.0/4.0;

sr_func (x, z, nx, Os, Mr, 5.0/100.0, s_flag, r_flag); /* shift and rotate */ r2 = 0.0; sum_z=0.0; for (i=0; i int i,tmp,cf_num=5; double fit[5]; int G[5],G_nx[5]; double Gp[5]={0.1,0.2,0.2,0.2,0.3};

if (nx==5) // deal with D=6**04/01/2020 { G_nx[0]=1; G_nx[1]=1; G_nx[2]=1; G_nx[3]=1; G_nx[4]=1; }// deal with D=5**04/01/2020 else { tmp=0; for (i=1; i int i,cf_num=3; double fit[3]; double delta[3] = {10,20,30}; double bias[3] = {0, 0, 0};

i=0; rastrigin_func(x,&fit[i],nx,&Os[i*nx],&Mr[i*nx*nx],1,r_flag); i=1; griewank_func(x,&fit[i],nx,&Os[i*nx],&Mr[i*nx*nx],1,r_flag); fit[i]=1000*fit[i]/100; i=2; schwefel_func(x,&fit[i],nx,&Os[i*nx],&Mr[i*nx*nx],1,r_flag); cf_cal(x, f, nx, Os, delta,bias,fit,cf_num);

}

void cf04 (double *x, double *f, int nx, double *Os,double Mr,int r_flag) / Composition Function 3 */ { int i,cf_num=4; double fit[4]; double delta[4] = {10,20,30,40}; double bias[4] = {0, 0, 0, 0};

i=0; ackley_func(x,&fit[i],nx,&Os[i*nx],&Mr[i*nx*nx],1,r_flag); fit[i]=1000*fit[i]/100; i=1; ellips_func(x,&fit[i],nx,&Os[i*nx],&Mr[i*nx*nx],1,r_flag); fit[i]=10000*fit[i]/1e+10; i=2; griewank_func(x,&fit[i],nx,&Os[i*nx],&Mr[i*nx*nx],1,r_flag); fit[i]=1000*fit[i]/100; i=3; rastrigin_func(x,&fit[i],nx,&Os[i*nx],&Mr[i*nx*nx],1,r_flag); cf_cal(x, f, nx, Os, delta,bias,fit,cf_num);

} void cf05 (double x, double f, int nx, double Os,double Mr,int r_flag) / Composition Function 4 / { int i,cf_num=5; double fit[5]; double delta[5] = {10,20,30,40,50}; double bias[5] = {0, 0, 0, 0, 0}; i=0; rastrigin_func(x,&fit[i],nx,&Os[inx],&Mr[inxnx],1,r_flag); fit[i]=10000fit[i]/1e+3; i=1; happycat_func(x,&fit[i],nx,&Os[inx],&Mr[inxnx],1,r_flag); fit[i]=1000fit[i]/1e+3; i=2; ackley_func(x,&fit[i],nx,&Os[inx],&Mr[inxnx],1,r_flag); fit[i]=1000fit[i]/100; i=3; discus_func(x,&fit[i],nx,&Os[inx],&Mr[inxnx],1,r_flag); fit[i]=10000fit[i]/1e+10; i=4; rosenbrock_func(x,&fit[i],nx,&Os[inx],&Mr[inx*nx],1,r_flag); cf_cal(x, f, nx, Os, delta,bias,fit,cf_num); }

void cf02_s (double *x, double *f, int nx, double *Os,double Mr,int r_flag) / Composition Function 2 */ { int i,cf_num=3; double fit[3]; double delta[3] = {10,20,30}; double bias[3] = {0, 100, 200};

i=0; rastrigin_func(x,&fit[i],nx,&Os[i*nx],&Mr[i*nx*nx],1,r_flag); i=1; griewank_func(x,&fit[i],nx,&Os[i*nx],&Mr[i*nx*nx],1,r_flag); fit[i]=1000*fit[i]/100; i=2; schwefel_func(x,&fit[i],nx,&Os[i*nx],&Mr[i*nx*nx],1,r_flag); cf_cal(x, f, nx, Os, delta,bias,fit,cf_num);

}

void cf04_s (double *x, double *f, int nx, double *Os,double Mr,int r_flag) / Composition Function 3 */ { int i,cf_num=4; double fit[4]; double delta[4] = {10,20,30,40}; double bias[4] = {0, 100, 200, 300};

i=0; ackley_func(x,&fit[i],nx,&Os[i*nx],&Mr[i*nx*nx],1,r_flag); fit[i]=1000*fit[i]/100; i=1; ellips_func(x,&fit[i],nx,&Os[i*nx],&Mr[i*nx*nx],1,r_flag); fit[i]=10000*fit[i]/1e+10; i=2; griewank_func(x,&fit[i],nx,&Os[i*nx],&Mr[i*nx*nx],1,r_flag); fit[i]=1000*fit[i]/100; i=3; rastrigin_func(x,&fit[i],nx,&Os[i*nx],&Mr[i*nx*nx],1,r_flag); cf_cal(x, f, nx, Os, delta,bias,fit,cf_num);

}

void cf05_s (double x, double f, int nx, double Os,double Mr,int r_flag) / Composition Function 4 / { int i,cf_num=5; double fit[5]; double delta[5] = {10,20,30,40,50}; double bias[5] = {0, 100, 200, 300, 400}; i=0; rastrigin_func(x,&fit[i],nx,&Os[inx],&Mr[inxnx],1,r_flag); fit[i]=10000fit[i]/1e+3; i=1; happycat_func(x,&fit[i],nx,&Os[inx],&Mr[inxnx],1,r_flag); fit[i]=1000fit[i]/1e+3; i=2; ackley_func(x,&fit[i],nx,&Os[inx],&Mr[inxnx],1,r_flag); fit[i]=1000fit[i]/100; i=3; discus_func(x,&fit[i],nx,&Os[inx],&Mr[inxnx],1,r_flag); fit[i]=10000fit[i]/1e+10; i=4; rosenbrock_func(x,&fit[i],nx,&Os[inx],&Mr[inx*nx],1,r_flag); cf_cal(x, f, nx, Os, delta,bias,fit,cf_num); }

void shiftfunc (double *x, double *xshift, int nx,double *Os) { int i; for (i=0; i int i,j; for (i=0; i xrot[i]=xrot[i]+x[j]Mr[inx+j]; } } }

void sr_func (double *x, double *sr_x, int nx, double *Os,double Mr, double sh_rate, int s_flag,int r_flag) / shift and rotate */ { int i; if (s_flag1) { if (r_flag1) { shiftfunc(x, y, nx, Os); for (i=0; i shiftfunc(x, sr_x, nx, Os); for (i=0; i

if (r_flag==1) { for (i=0; i if (x[i]>0) xasy[i]=pow(x[i],1.0+betai/(nx-1)*pow(x[i],0.5)); } }

void oszfunc (double x, double xosz, int nx) { int i,sx; double c1,c2,xx; for (i=0; i if (x[i]!=0) xx=log(fabs(x[i])); if (x[i]>0) { c1=10; c2=7.9; } else { c1=5.5; c2=3.1; } if (x[i]>0) sx=1; else if (x[i]==0) sx=0; else sx=-1; xosz[i]=sxexp(xx+0.049(sin(c1xx)+sin(c2xx))); } else xosz[i]=x[i]; } }

void cf_cal(double *x, double *f, int nx, double *Os,double * delta,double * bias,double * fit, int cf_num) { int i,j; double *w; double w_max=0,w_sum=0; w=(double )malloc(cf_num * sizeof(double)); for (i=0; i w[i]+=pow(x[j]-Os[inx+j],2.0); } if (w[i]!=0) w[i]=pow(1.0/w[i],0.5)*exp(-w[i]/2.0/nx/pow(delta[i],2.0)); else w[i]=INF; if (w[i]>w_max) w_max=w[i]; }

for (i=0; i


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有