GAlib C ++充分利用每一代人

时间:2014-01-10 21:42:21

标签: c++ algorithm genetics

我正在使用C ++中的http://lancet.mit.edu/ga/库中的GAlib。我用这段代码创建了一个典型的遗传算法:

GA1DBinaryStringGenome genoma(trips.size(), Genotype::evaluator);
GASimpleGA ga(genoma);
ga.populationSize(popSize);
ga.nGenerations(genCant);
ga.pMutation(0.03);
ga.pCrossover(0.90);
ga.evolve(); // Launch

然后我用

获得最好的个人
wladi << ga.statistics().bestIndividual();

这是很重要的标准。但我的问题是:

如何才能获得每代最适合的数组?

1 个答案:

答案 0 :(得分:2)

我正在处理同样的问题。我想出的唯一解决方法是创建自己的终结器功能(主要是):

GABoolean GATerminateUponGenerationWithStatePrintout(GAGeneticAlgorithm &ga)
{
    cout << "Generation " << ga.generation() << " - best individual " << ga.statistics().bestIndividual() << endl;
    return(ga.generation() < ga.nGenerations() ? gaFalse : gaTrue);
}

然后将自定义终端链接到您的GA对象:

GASimpleGA ga(genoma);
ga.terminator(GATerminateUponGenerationWithStatePrintout);

通过这种方式,我可以获得GA在每一代结束时检查终止条件的链接。