[galib] GaLib: RealGenome boundaries

Jörg Mennicke mail at joerg-mennicke.de
Fri Jul 14 10:27:51 EDT 2006

Dear all,


I am using galib with GASimpleGA and GARealGenome:


This is the short version of the code that I am using to call the algorithm:


      //First the Alleles

      GARealAlleleSetArray alleles;

      //For all the parameters which are to be optimized 

      for(int i=0;i<m_params->GetNumberOptParams();i++){

add them to the alleles array (passed params were of course defined and
filled before)

alleles.add(m_fMinValue[i], m_fMaxValue[i], m_fStepSize[i], bMinbound[i],



      ParamOptimization* target = this;


      //Then the Genome

      GARealGenome genome(alleles, EvalGenome,(void *)target);

      //and the algorithm


      //Set Parameters for the algorithm

GAParameterList gaparams;



      gaparams.set(gaNnGenerations, m_params->m_iNOGenerations); //#of

      gaparams.set(gaNnBestGenomes, m_params->m_iNOBestGenomes); //#of best
genomes carried over to the next generation

      gaparams.set(gaNpopulationSize, m_params->m_iPopulationSize);
//size of the population in each generation

      gaparams.set(gaNscoreFrequency, m_params->m_iScoreFrequency);    //How
often to save the scores

      gaparams.set(gaNflushFrequency, m_params->m_iFlushFrequency);    //How
often to flush the scores to drive

      gaparams.set(gaNselectScores, (int)GAStatistics::AllScores);
//Save all scores

      gaparams.set(gaNpConvergence, m_params->m_fConvergencePercentage);
//termination condition: convergence percentage 

                                                           //Ratio of the
Nth previous best-of-generation score to the current best-of-generation

      gaparams.set(gaNnConvergence, m_params->m_iNConvergence);  //N for the
convergence stopping criterion

      gaparams.set(gaNpCrossover, m_params->m_fCrossoverPercentage);
//Percentage of crossovermutations in each generation

      gaparams.set(gaNpMutation, m_params->m_fMutationPercentage);
//Percentage of mutations in each generation                               

      gaparams.set(gaNnPopulations, m_params->m_iNOPopulations); //# of
populations in each generation

      std::string outputname = m_params->m_sOutpDir + "/" +
m_params->m_sOutpFilestem + ".gascores";

      gaparams.set(gaNscoreFilename, outputname.c_str());  //Filename where
to save the scores to

      if(m_params->m_bElitism) { 

            gaparams.set(gaNelitism, gaTrue);              //Elitism on ->
Best individual is carried over to the next generation

      } else { 

            gaparams.set(gaNelitism, gaFalse); 




      //Set Minimize or Maximize and evolve

      if(m_params->m_bMinimize) { 

            ga.minimize(); //Objective Function (e.g. Error) is minimized

      } else { 

            ga.maximize(); //Objective Function (e.g. Accuracy) is minimized




In the objective function after some valid parameterconfigurations I receive
a parameterconfiguration

Which has only values of ‘0’, although ‘0’ was not in the valid interval
specified in the initialisation of ‘alleles’!

The following is a short version of the code I am using for the objective


      GARealGenome& genome = (GARealGenome&)g;

      ParamOptimization *OptEnv = (ParamOptimization *)g.userData();


      for(int i=0; i<genome.length(); i++){

            OptEnv->m_pCurrentParamConfig[i].m_fValue = genome.gene(i);


      return OptEnv->EvaluateParamConfig(OptEnv->m_pCurrentParamConfig);

      //Get GAGenome bestIndividual 


Hope anybody can help me out and tell me why this happens.


Thanks for your time and replies,

Jörg Mennicke



-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.mit.edu/pipermail/galib/attachments/20060714/2084ce48/attachment.htm

More information about the galib mailing list