алгоритм — GAlib C ++ Получите лучшее от каждого поколения

Я работаю с GAlib из http://lancet.mit.edu/ga/ библиотека в C ++. Я создал типичный генетический алгоритм с этим кодом:

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

Решение

Я имею дело с той же проблемой прямо сейчас. Единственный обходной путь, который я придумал, — это создать собственную функцию терминатора (в основном):

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 проверяет условие завершения в конце каждого поколения.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]