GA within GA

Mineo Morohashi moro at mineo.com
Thu Apr 8 02:32:22 EDT 1999


Hello,

I'm trying to implement GA within GA as a part of my program.
Being different from sample program ex13.C, internal genome size is
dependent on the result of external GA. That's why I declare Genome,
and GA inside the evaluation function. However, when I execute it, the 
program finishes without putting out any error. The program is likely
to end at the line of GA->done(), just after receiving gaTrue.
I cannot figure out what is wrong with my program.
Would you let me know what the problem is?

Best regards,
M.Morohashi

==============================================================
float GAEvaluate(GAGenome& g)
{
  GARealGenome* teriGenome;
  GARealAlleleSetArray map;
  GASimpleGA* GA;
  int** connect;

  GA2DArrayAlleleGenome<int> & genome = (GA2DArrayAlleleGenome<int> &) g;
  
  for (int y=0; y<10; y++){
    for (int x=0; x<10; x++){
      if (genome.gene(x,y) == 1){
	map.add(0,1);
      }else if (genome.gene(x,y) == -1){
	map.add((float)-1,(float)0);
      }
    }
  }

  CompositeData data;
  selector = new GATournamentSelector;

  teriGenome = new GARealGenome((GARealAlleleSetArray&)map, internalGAEvaluate, (void*)&data);
  teriGenome->crossover(GARealGenome::TwoPointCrossover);
  GA = new GASimpleGA((GARealGenome&)*teriGenome);
  GA->selector(*selector);
  GA->minimize();
  GA->scoreFilename("hoge.log");
  GA->nGenerations(3);
  GA->populationSize(5);
  GA->pMutation(0.01);
  GA->pCrossover(0.8);
  GA->selectScores(GAStatistics::AllScores);
  GA->nBestGenomes(10);
  
  //  initTeritiaryGA(argc,argv);

  GA->initialize();
  while(!GA->done()){
    GA->step();
  }
  
  GARealGenome& Genome = (GARealGenome&)GA->population().best();

  ......
  ......
  ......

  return ***;
}





More information about the galib mailing list