GAlib C++ 充分利用每一代人
GAlib C++ Get the best of each generation
我正在使用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();
这几乎是标准。但我的问题是:
如何获得每一代最佳体能的阵列?
我现在正在处理同样的问题。我想出的唯一解决方法是创建我自己的终结者函数(主要是):
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 在每一代结束时检查终止条件时获得链接。
相关文章: