2014-01-10 6 views
1

저는 C++의 http://lancet.mit.edu/ga/ 라이브러리에서 GAlib와 함께 작업하고 있습니다. 이 코드와 tipical 유전자 알고리즘을 만들었습니다 GAlib 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(); 

느릅 나무와 함께 최고의 개인을 얻는 것은 prety 많은 standar을합니다. 하지만 내 질문은 :

각 세대에 가장 적합한 피트니스를 어떻게 얻을 수 있습니까?

답변

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); 

이 방법 I (주에) 내 자신의 종결 자 함수를 만드는 것입니다와 함께 유일한 작품은 주위에 내가 와서 GA가 각 세대가 끝날 때 종료 조건을 확인할 때 연결될 수 있습니다.