randomized initial population

Tamie Veith tveith at vt.edu
Thu Nov 1 13:21:08 EST 2001


I am using the GALib for nonpoint source pollution prediction. I am using the GA1DarrayAlleleGenome class with steady state, tournament selection. I create the first genome by sequentially adding allelesets for each gene to the allele array (this is the CreateGenomeTemplate function refered to below). I then initialize the population using the a baseline genome.   this all works fine but results in the initial population consisting of identical genomes (i.e., the baselione genome). 

I want the initial population to be random within the constraints of the allelesets. I can figure out how to do this.

Can anyone advise me?

here are my functions:
/* ----------------------------------------------------------------------------
BaselineInitializer function
  This initializer fills the values from the baseline into the genome template.
---------------------------------------------------------------------------- */
void
BaselineInitializer(GAGenome &g)
{
 GA1DArrayAlleleGenome<int> &genome=(GA1DArrayAlleleGenome<int> &)g;
 for(int i=0; i<genome.size(); i++)
 {
  genome.gene(i, iBaseArray[i]);
 } //end for
}
/* end BaselineInitializer function----------------------------------------- */

/* ----------------------------------------------------------------------------
PopInitializer function
  // This function initializes the poplulation based on the first genome. This
  // is done so that the ga can run on the population and not the indivual.
---------------------------------------------------------------------------- */
void 
PopInitializer(GAPopulation & p)
{
 for (int i = 0; i<p.size() ; i++)
 {  p.individual(i).initialize();
 }
}
/* end PopInitializer function--------------------------------------------------- */

//and from the main function-----------------
 //Create genome template from Baseline, 
   GA1DArrayAlleleGenome<int> genome(CreateGenomeTemplate(), Objective);

//initialize GA using allele set
 //Assign the initialization operator.
   genome.initializer(BaselineInitializer);
 //Intialize first genome to match baseline scenario.
   genome.initialize();
 //Keep inital genome, gBase, for future use.
   GA1DArrayAlleleGenome<int> gBase(genome);
 //Assign the mutation operator.
   genome.mutator(GA1DArrayAlleleGenome<int>::FlipMutator);
 //Assign the evaluation operator.
   genome.evaluator(Objective);

//create the population
   GAPopulation gaPop(genome,readPopSize);
   gaPop.initializer(PopInitializer);
   gaPop.initialize();
   gaPop.evaluator(PopEvaluator);


------------------------------------------------------------------
Thanks,
Tamie
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.mit.edu/pipermail/galib/attachments/20011101/efbcddce/attachment.htm


More information about the galib mailing list