当前位置: 首页>>代码示例>>C++>>正文


C++ Strategy::getMutationCount方法代码示例

本文整理汇总了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;
}
开发者ID:Avi2011class,项目名称:genetic,代码行数:101,代码来源:run_genetic.cpp


注:本文中的Strategy::getMutationCount方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。