Ejemplo n.º 1
0
void evaluation(individual *pop){

	int i;
	for(i=0; i< POP_SIZE; i++){
		pop[i].fitness = fitness_function(&pop[i]);
	}
}
Ejemplo n.º 2
0
void
evaluate_fitness()
{
	int i;

	for (i = 0; i < num_particles; i++)
		fitness[i] = fitness_function(particles[i]);
}
Ejemplo n.º 3
0
void
evolve_apply_real_pop_fitness (const evolve_real_pop_t *pop,
                               double (*fitness_function) (evolve_real_chrom_t *))
{
  size_t i;
  for (i = 0; i < pop->size; i++)
    {
      evolve_real_chrom_t *individual = pop->individuals[i];
      individual->fitness = fitness_function (individual);
    }
}
Ejemplo n.º 4
0
int main()  
{
  int gen, indivs, offspring, parent1,  i, j;
  float *fitness = (float *) calloc( POPSIZE, sizeof(float));
  char **pop;
  scanf( "%ld%hd%hd", &seed, &varnumber, &fitnesscases);
  seed = seed ? (long) time( NULL ): seed;
  srand48(seed);
  if (varnumber > MAX_INPUTS || fitnesscases >= MAX_EXAMPLES ) 
    perror("var/example #");
  for (i = 0; i < fitnesscases; i ++ )
    for (j = 0; j <= varnumber; j++)
      scanf("%g",&(targets[i][j]));
  pop = create_random_pop(POPSIZE, DEPTH, fitness );
  printf("SEED=%ld\nMAXLEN=%d\nPSIZE=%d\nDEPTH=%d\nXOPROB=%g\nPMUT=%g\nGENS=%d\nTSIZE=%d",
 seed, MAX_LEN, POPSIZE, DEPTH, CROSSOVER_PROB, PMUT_PER_NODE, GENERATIONS, TSIZE );
  stats( fitness, pop, 0 );
  for ( gen = 1; gen < GENERATIONS; gen ++ )
    {
      if (  fitness[best] > -1e-5f ) 
	{
	  printf("\nOK\n");
	  exit( 0 );
	}
      for ( indivs = 0; indivs < POPSIZE; indivs ++ )
	{
	  parent1 = tournament( fitness, TSIZE,1 );
	  offspring = tournament( fitness, TSIZE,0 );
	  free( pop[offspring] );
	  pop[offspring] = drand48() > CROSSOVER_PROB ?
	    crossover( pop[parent1],pop[tournament( fitness, TSIZE,1 )] ) :
	    mutation( pop[parent1], PMUT_PER_NODE );
	  fitness[offspring] = fitness_function( pop[offspring] );
	}
      stats( fitness, pop, gen );
    }
  printf("\nNO\n");
  exit(1);
}
Ejemplo n.º 5
0
void
evolve_apply_real_fitness (evolve_real_chrom_t *chrom,
                           double (*fitness_function) (evolve_real_chrom_t *))
{
  chrom->fitness = fitness_function (chrom);
}