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

📄 advancedsearch.txt

📁 高级搜索算法
💻 TXT
📖 第 1 页 / 共 2 页
字号:
  if(Ainsnum[i]<Optins[j])     
  {Optins[j]=Ainsnum[i];     
  for(k=1;k<=Ins;k++)     
  Opt[j][k]=A[i][k];     
  break;     
  }}}     
  void   JC(void)     
  unsigned   long   a,i,j,F,M;   /*   fsum   是行适应度的和   */     
  unsigned   char   used;     
  double   fsum=0,f,m;     
  for(i=1;i<=Row;i++)   /*初始化*/     
  {Aused[i]=0;     
  for(j=1;j<=Ins;j++)     
  Aimg[i][j]=0;     
  }     
  i=0;     
  while(i<JCn)   /*这个while选取交叉的行*/     
  {a=random(Row)+1;   /*因为random值域是从0到Row-1*/     
  used=0;     
  for(j=1;j<=i;j++)     
  if(Aused[j]==a)     
  used=1;     
  if(!used)     
  {Aused[++i]=a;     
  fsum+=ada[a];     
  }     
  }     
  for(i=1;i<=JCn;i++)   /*这个for计算P(i)的值*/     
  ada[Aused[i]]/=fsum;     
  for(i=2;i<=JCn;i++)   /*把P(i)值化为范围*/     
  ada[Aused[i]]+=ada[Aused[i-1]];     
  ada[(int)JCn]=1.0;     
  for(i=1;i<=JCn/2;i++)     
  {f=rnd();     
  for(j=1;j<=JCn;j++)     
  {if(ada[Aused[j]]>=f)       
  {M=F=j;       
  break;       
  }       
    }       
  while(M!=F)       
  {m=rnd();       
  for(j=1;j<=JCn;j++)     
  {if(ada[Aused[j]]>=m)       
  {M=j;       
  break;       
    }       
    }       
  }       
  for(j=1;j<=Ins;j++)     
  {Aimg[i*2-1][j]=A[M][j];     
  Aimg[i*2][j]=A[F][j];     
  }     
  }     
  for(i=1;i<=JCn/2;i++)     
  {for(j=1;j<=hyR;j++)     
  Aimg[i*2-1][j]=Aimg[i*2][(int)(Ins-hyR+j)];     
  for(j=1;j<=Ins-hyR;j++)     
  Aimg[i*2][j]=Aimg[i*2-1][(int)(hyR+j)];     
  }     
  for(i=1;i<=JCn;i++)     
  for(j=1;j<=Ins;j++)     
  A[Aused[i]][j]=Aimg[i][j];     
  }     
  void   FZ1(void)     
  {unsigned   long   i=0,j,k,l,a;     
  unsigned   char   used;     
  while(i<FZn)     
  {a=random(Row)+1;     
  used=0;     
  for(j=1;j<=JCn+i;j++)     
  if(Auseinclude<stdlib.h>   
  #include<time.h>   
  #include<math.h>   
  double   x,y,f;   
  double   a[100][4];   
  double   uniform(){   
    return((double)(rand()&RAND_MAX)/RAND_MAX-0.5);   
  }   
  double   fit(double   x,double   y){   
    return   (x*x+2*y*y-0.3*cos(3*3.14159*x)-0.4*cos(4*3.14159*y)+0.7);   
  }   
    
  // srand((unsigned)time(NULL));   
    
  double   gaussian(){   
    static   int   ready=0;   
    static   double   gstore;   
    double   v1,v2,r,fac,gaus;   
    double   uniform();   
    if   (ready==0){   
      do   {   
          v1=2.*uniform();   
          v2=2.*uniform();   
          r=v1*v1+v2*v2;   
      }   while(r>1.0);   
      fac=sqrt(-2.*log(r)/r);   
      gstore=v1*fac;   
      gaus=v2*fac;   
      ready=1;   
      }   
    else{   
    ready=0;   
    gaus=gstore;   
    }   
    return(gaus);   
  }   
  double   fitsum(){   
  int   i,j;   
  double   s=0.0;   
    for(i=0;i<50;i++)   
    s+=a[i][2];   
    return   s;   
  }   
  void   initialize(){   
  int   i,j;   
  //randomize();   
  srand((unsigned)time(NULL));   
  for(i=0;i<=50;i++)   
    for(j=0;j<2;j++){   
      a[i][j]=60*2*uniform();printf("%lf   ",a[i][j]);   
  }   
  }   
  void   mutation(){   
  int   i,j;   
  for(i=0;i<=50;i++){   
    a[i][2]=fit(a[i][0],a[i][1]);   
    a[i+50][0]=a[i][0]+(30*a[i][2]/fitsum())*gaussian();   
    a[i+50][1]=a[i][1]+(30*a[i][2]/fitsum())*gaussian();   
  }   
  }   
  void   competion(){   
  int   i,j,p,k;   
  double   w;   
    //randomize();   
  // srand((unsigned)time(NULL));   
  for(i=0;i<100;i++){   
    a[i][3]=0.0;   
    for(j=0;j<10;j++){   
      p=rand(100)%100;   
      if(a[i][2]<a[p][2])   a[i][3]++;   
    }   
  }   
  for(i=0;i<100-1;i++){   
    p=i;   
    for(j=i+1;j<100;j++){   
      if(a[j][3]>a[p][3])   p=j;   
      for(k=0;k<4;k++){   
        w=a[i][k];   
        a[i][k]=a[p][k];   
        a[p][k]=w;   
      }   
    }   
  }   
  }   
  void   main()   
  {   
    int   i;   
    //randomize();   
    // srand((unsigned)time(NULL));   
    initialize();   
    
    for(i=0;i<300;i++){   
    printf("aaaaa%f   %f   \n",a[0][0],a[0][1]);   
    mutation();   
    competion();   
  }   
    
  }  d[j]==a)     
  used=1;     
  if(!used)   Aused[(int)((++i)+JCn)]=1;     
  }     
  }     
  void   PY1( 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -