本文整理汇总了C++中Strategy::getMutationCount方法的典型用法代码示例。如果您正苦于以下问题:C++ Strategy::getMutationCount方法的具体用法?C++ Strategy::getMutationCount怎么用?C++ Strategy::getMutationCount使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Strategy
的用法示例。
在下文中一共展示了Strategy::getMutationCount方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: main
//.........这里部分代码省略.........
if ( ! (st.exists ( agentArray [ i ].getStrategy ( ) ) ) )
st.addStrategy ( agentArray [ i ].getStrategy ( ) );
}
populationCount = 0;
Strategy survivors [ SURVIVORS ];
for ( int performers = 0; performers < SURVIVORS; performers++) {
st.getOne ( survivors [ performers ], performers );
agentArray [ performers ].setStrategy ( survivors [ performers ] );
if ( rand () % 100 == 0 ) {
agentArray [ populationCount ].getStrategy ( ).mutate ( );
agentArray [ populationCount ].getStrategy ( ).updateMutationCount ( );
}
populationCount++;
}
while ( populationCount < NR_AGENTS ) {
int father = 0; int mother = 1;
Strategy *temp;
// first child for one parent pair
//
temp = copulate ( survivors [ father ], survivors [ mother ] );
agentArray [ populationCount ].setStrategy ( *temp );
agentArray [ populationCount ].getStrategy ( ). setBirthGeneration ( genCounter ) ;
delete temp;
// second child for one parent pair
//
temp = copulate ( survivors [ mother ], survivors [ father ] );
agentArray [ populationCount ].setStrategy ( *temp );
agentArray [ populationCount ].getStrategy ( ). setBirthGeneration ( genCounter ) ;
delete temp;
// mutate a fraction of the children
//
if ( rand () % 4 == 0) {
agentArray [ populationCount ].getStrategy ( ).mutate ( );
agentArray [ populationCount ].getStrategy ( ).updateMutationCount ( );
}
// decrease the likelihood of lower performing parents to breed
//
if ( rand ( ) % 10 == 0 ) {
father +=2; mother += 2;
}
populationCount++;
}
if ( genCounter % 10 == 0 ) {
st.printStore ();
cout << endl << "generation average similarity:" << st.averageSimilarity () << endl;
}
if (genCounter < nr_generations -1)
st.resetRanks ( );
genCounter++;
} // end generations
cout << endl << " FINAL RANKINGS after " << genCounter << " generations " << endl;
st.printStore ( );
// testrun the winning strategy for same number of sessions as the generations did
//
Robby winningAgent;
Strategy winner;
st.getOne ( winner, 0);
int winnerScore = 0;
winningAgent.setStrategy ( winner );
winningAgent.getStrategy ( ).printStrategy ( );
cout << endl << "WINNERS RANK SCORE: " << winner.getScore ( ) << " BIRTHGEN: " << winner.getBirthGeneration ( ) << " MUTATIONS: " << winner.getMutationCount ( ) ;
for ( int nr_sessions = 0; nr_sessions < SESSIONS; nr_sessions++ ) {
cout << endl << "Starting session: " << nr_sessions ;
winningAgent.setPos ( 0 , 0 );
winningAgent.initializeField ( fieldMatrix );
winningAgent.resetStatistics ( );
for ( int steps = 0; steps < nr_steps; steps++) {
winningAgent.updateContext ( ) ;
winningAgent.makeMove ( winningAgent.getStrategy( ).getAction ( winningAgent.getContext( ).getCoding( ) ) , false );
}
winnerScore += winningAgent.getPoints ( );
}
winnerScore = winnerScore / SESSIONS;
cout << endl << " WINNER'S testrun average score: " << winnerScore;
}