How can I to evolve the entire popolation
    Ramon Diaz-Uriarte 
    ramon-diaz at teleline.es
       
    Mon Jan 15 14:27:35 EST 2001
    
    
  
On Mon, 15 Jan 2001, Signoretto Mirko wrote:
> Hi,
> 
> I have a very slow objective function  and so I need to calculate it for the entire population.
> 
> I've tried to use the population evaluator:
> 
> ga.population().evaluator(popEvaluator);
> 
> defining a popEvaluator function.
> 
> The problem is that my "popEvaluator" is called only once... but I need that it is called
> for every generation.
> 
> Thanks.
I am attaching a little dumb program that I wrote a while ago where popEvaluator
is definitely called every generation.  I know the program is stupid, but I
wanted to convince myself that things would work with more complicaated
poEvaluator functions.
I hope this helps,
Ramón
************************** little program
#include<stdio.h>
#include<iostream.h>
#include<math.h>	
#include<ga/ga.h> 
using namespace std;
void popEvaluator(GAPopulation & p);
void Initializer(GAGenome& g);
int main(){
  int length_genome = 3;
  GA1DArrayGenome<float> genome(length_genome);
  genome.initializer(::Initializer);  
  GAPopulation pop(genome);
  pop.evaluator(popEvaluator);
  GASimpleGA ga(pop);
  ga.nGenerations(20);
  ga.populationSize(10);
  ga.initialize();
  cout <<" evolving\n "; cout.flush();
  while(!ga.done()){
    cout <<"\n ************* A new generation *************** \n";
    ga.step();
  }
  cout << ga.statistics() << endl;
  return 0;
}
void popEvaluator(GAPopulation & p) {
  cout <<"\npopEvaluator being called here\n"; 
  for (int i=0; i<p.size(); i++) {
    GA1DArrayGenome<float> & gx = (GA1DArrayGenome<float>&)p.individual(i);
    cout<<"\n popEvaluator being called on each individual \n";
    p.individual(i).score(gx.gene(1)+2*gx.gene(2));
  }
}
void Initializer(GAGenome& g) {
  GA1DArrayGenome<float>& genome = (GA1DArrayGenome<float>&)g;
  genome.gene(0, GARandomFloat(0, 20));
  genome.gene(1, GARandomFloat(0, 20));
  genome.gene(2, GARandomFloat(0, 20));
}
**************** end little program
> 
> 
> --
> -------------------------------------------------------------------------
> Mirko Signoretto                  mat. IN 308
> 
> Facolta` di Scienze MM.FF.NN.     Corso di Laurea in Informatica (Verona)
> 
> E-mail: msigno at arena.sci.univr.it
>         msigno at libero.it
> 
> Phone:  +39 045/890.23.64         WWW: http://arena.sci.univr.it/~msigno
> -------------------------------------------------------------------------
-- 
Ramón Díaz-Uriarte
Triana 47
28016 Madrid
Spain
email:ramon-diaz at teleline.es
Phone: +-34-918-513-966
       +-34-657-186-407	
    
    
More information about the galib
mailing list