示例#1
0
void GA_BuildTower::Crossover()
{
  int pre = -1;
  for (int i = 0; i < pop_size; ++i) {
    double p = rand()%1000/1000.0;
    if (p < PXOVER) {
      if (pre == -1) 
	pre = i;
      else {
	Xover(pre, i);
	pre = -1;
      }
    }
  }
}
示例#2
0
文件: GMsimple.c 项目: JakLiao/Mycode
void crossover(void)
{int mem,one;
 int first=0;
 double x;

 for(mem=0;mem<POPSIZE;++mem)
  {x=rand()%1000/1000.0;
   if(x<PXOVER)
  {++first;
   if(first%2==0)
    Xover(one,mem);
  else
   one=mem;
}
}
}
示例#3
0
void crossover() { //one point crossover
	int j, one;
	int first = 0; // count of the number of members chosen 
	double x;
	
	for(j=0; j<POPSIZE; j++) {
		x = rand()/(double)RAND_MAX;
		if(x < PX) {
            first++;
            if(first%2 == 0) {
				Xover(one, j);	//crossover
				adjust(one);
				adjust(j);
			}
            else
				one = j;
		}
	}
}