📄 advancedsearch.txt
字号:
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 + -