我正在使用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();

威奇(Vich)是标准兵。但是我的问题是:

如何获得最适合每一代的阵列?

最佳答案

我现在正在处理相同的问题。我想到的唯一变通方法是创建自己的终止符函数(在主目录中):

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在每一代末尾检查终止条件时的链接。

08-25 00:53