小编use*_*867的帖子

轮盘赌选择的实现

我正在用 C 从头开始​​编写遗传算法,我陷入了轮盘赌的实现中,以下是我的编码方式:

void selection(Chromosome * chromosome){

double totalFitness=0;
double totalProbability=0;
double probability=0;
double rndNumber;
double min,max;
int i;

min=0.0;
max=1.0;

for(i=0;i<POPULATION_SIZE;i++){
 totalFitness += chromosome[i].fitness;
  }

  for(i=0;i<POPULATION_SIZE;i++){
   chromosome[i].probability = (chromosome[i].fitness)/totalFitness;
   printf("Chromosome %d with probability %f\n",i, chromosome[i].probability);
  }
 srand((unsigned)time(NULL));
 for(i=0;i<POPULATION_SIZE;i++){
  rndNumber = ((double)rand()/(double)RAND_MAX);
  if(chromosome[i].probability >= rndNumber){
  printf("Chromosome %d selected \n",i);




}}}
Run Code Online (Sandbox Code Playgroud)

输出返回一条选定的染色体或不返回选定的染色体,这不是预期的结果。我想知道这是否是正确的点法?

提前致谢。

c roulette-wheel-selection genetic-algorithm

0
推荐指数
1
解决办法
7099
查看次数