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


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

本文整理汇总了C++中Strategy::getBirthGeneration方法的典型用法代码示例。如果您正苦于以下问题:C++ Strategy::getBirthGeneration方法的具体用法?C++ Strategy::getBirthGeneration怎么用?C++ Strategy::getBirthGeneration使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Strategy的用法示例。


在下文中一共展示了Strategy::getBirthGeneration方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: main


//.........这里部分代码省略.........
        }

        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:flarss,项目名称:genetic,代码行数:101,代码来源:run_genetic.cpp


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