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


C++ Entity::GetConfig方法代码示例

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


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

示例1: checkVicinityBlind

string Search::checkVicinityBlind( JoinedLandscape & thisLandscape, Entity & thisEntity, bool Sequential, int WhichLandscape )
/* randomly selects one move */
{
    tempPayoff.SetConfig ( thisEntity.GetConfig() );
    if ( !thisEntity.IsAlive() ) { return "EMPTY"; }
    string tempConfig = tempPayoff.GetConfig();
    unsigned short int i, j;
    unsigned short int strLength;
    double tempFitness;
    strLength = tempConfig.length();
    i = rand() % (strLength);
    if ( tempConfig[i] == '0' ) { tempConfig[i] = '1'; }
    else { tempConfig[i] = '0'; };

    switch (WhichLandscape)
    {
        case 0: pLandscape = &thisLandscape;

            break;
        case 1: pLandscape = &thisLandscape.LOne;

            break;
        case 2: pLandscape = &thisLandscape.LTwo;

            break;
    }

    tempFitness = thisLandscape.d[tempConfig].GetFitness();
    if ( tempPayoff.GetFitness() <= thisLandscape.d[ thisEntity.GetConfig() ].GetFitness() ) { return "EMPTY"; }
    return tempPayoff.GetConfig();
}
开发者ID:jonblackaz,项目名称:sociology,代码行数:31,代码来源:sim_new_backup.cpp

示例2: checkVicinityDist

string Search::checkVicinityDist( JoinedLandscape & thisLandscape, Entity & thisEntity, bool Sequential, int WhichLandscape )
/* randomly selects one move weighted by distribution */
{
    tempPayoff.SetConfig ( thisEntity.GetConfig() );
    if ( !thisEntity.IsAlive() ) { return "EMPTY"; }
    string tempConfig = tempPayoff.GetConfig();
    int i, j;
    unsigned short int strLength;
    double tempFitness;
    map <string,int> chance;
    vector <string> Configs;
    strLength = tempConfig.length();
    Configs.push_back( tempConfig );
    for ( i = 0 ; i < strLength; i++ )
    {
        tempConfig = tempPayoff.GetConfig();
        if ( tempConfig[i] == '0' ) { tempConfig[i] = '1'; }
        else { tempConfig[i] = '0'; }
        Configs.push_back( tempConfig );
    }	
    unsigned int total = 0;

    switch (WhichLandscape)
    {
        case 0: pLandscape = &thisLandscape;

            break;
        case 1: pLandscape = &thisLandscape.LOne;

            break;
        case 2: pLandscape = &thisLandscape.LTwo;

            break;
    }

    vector <string>::iterator IT;
    for ( IT = Configs.begin() ; IT != Configs.end() ; IT++ )
    {
        chance.insert( pair<string,int> ( (*IT), thisLandscape.d[(*IT)].GiveDistribution() ) );
        total += thisLandscape.d[(*IT)].GiveDistribution();
    }
    i = rand() % total;
    map <string,int>::reverse_iterator IT_TWO;
    for ( IT_TWO = chance.rbegin() ; IT_TWO != chance.rend() ; IT_TWO++ ) // this random number might be 1 off
    {
        i = i-(*IT_TWO).second;
        tempConfig = (*IT_TWO).first;
        if (i < 0) { break; }
    }
    tempFitness = thisLandscape.d[tempConfig].GetFitness();
    tempPayoff.SetConfig( tempConfig );
    tempPayoff.SetFitness( tempFitness );
    // if ( Move.GetFitness() <= d[ itsPayoff.GetConfig() ].GetFitness() ) { return "EMPTY"; }
    return tempPayoff.GetConfig();
}
开发者ID:jonblackaz,项目名称:sociology,代码行数:55,代码来源:sim_new_backup.cpp

示例3: checkVicinityNonrandom

string Search::checkVicinityNonrandom( JoinedLandscape & thisLandscape, Entity & thisEntity, bool Sequential, int WhichLandscape )
/* this version finds the move with the greatest improvement choices constant */
{
    tempPayoff.SetConfig ( thisEntity.GetConfig() ); // tempPayoff is current value for thisEntity
    if ( !thisEntity.IsAlive() ) { return "EMPTY"; }
    string configuration = tempPayoff.GetConfig(); // configuration is a temporary string to be returned as the potential move
    unsigned short int i, j, strLength, searchLength;
    double tempAverage = 0;
    vector <Payoff> averages;
    strLength = configuration.length();

    switch (WhichLandscape)
    {
        case 0: pLandscape = &thisLandscape;
            searchLength = strLength;
            break;
        case 1: pLandscape = &thisLandscape.LOne;
            searchLength = strLength / 2;
            break;
        case 2: pLandscape = &thisLandscape.LTwo;
            configuration = flipConfigString( configuration );
            tempPayoff.SetConfig ( flipConfigString ( tempPayoff.GetConfig() ) );
            searchLength = strLength / 2;
            break;
    }
    tempPayoff.SetFitness ( (*pLandscape).d[configuration].GetFitness() );
    for ( i = 0 ; i < searchLength ; i++)
    {
        configuration = tempPayoff.GetConfig(); // reset configuration
        if ( configuration[i] == '0' ) { configuration[i] = '1'; } // flip one decision
        else { configuration[i] = '0'; };	
        tempAverage = (*pLandscape).d[configuration].GetFitness(); // get the new value for the flipped string
        averages.push_back ( Payoff(configuration, tempAverage) ); // add to the list of possibilties
    }

    configuration = tempPayoff.GetConfig(); // resetting configuration to the Entity's current value
    if (WhichLandscape == 2) { configuration = flipConfigString (configuration); } // ugly hack to make the second landscape work
    tempAverage = tempPayoff.GetFitness(); // resetting fitness to the Entity's current value

    vector <Payoff>::iterator IT;
    for ( IT = averages.begin() ; IT != averages.end() ; IT++ )
    {
        if ( tempAverage < (*IT).GetFitness() ) // if one of the averages is greater
            {
            configuration = (*IT).GetConfig(); // set the move information
            tempAverage = (*IT).GetFitness(); // similar
            }
    } // the move information should be the greatest possible
    if ( tempAverage <= tempPayoff.GetFitness() ) { return "EMPTY"; } // if less, don't recommend a move
    if ( isEqual (tempAverage, tempPayoff.GetFitness() ) ) { return "EMPTY"; } // if equal, no reason to move
    if ( WhichLandscape == 2 ) { return flipConfigString ( configuration ); } // flip the string back for the potential move
    return configuration;
}
开发者ID:jonblackaz,项目名称:sociology,代码行数:53,代码来源:sim_new_backup.cpp

示例4: main

int main()
{
    unsigned short int n=0, k=0, totalruns=0, i=0, k_two=0, walks=0, j=0;
    string search_strategy;
    Multicounter CounterA("A"), CounterB("B"), CounterC("C"), CounterD("D");
    cout << "How many runs? ";
    cin >> totalruns;
    cout << "Select a size: ";
    cin >> n;
    srand ( time(NULL) );
    cout << "Select k_1 (" << n-1 << " or less): ";
    cin >> k;
    cout << "Select k_2 (" << n-1 << " or less): ";
    cin >> k_two;
    cout << "Select number of steps: ";
    cin >> walks;
    cout << endl << "a) Keeps landscape constant (non-blind)"
         << endl << "b) Optimizes all choices at the same time (non-blind)"
         << endl << "all) Use all methods" << endl;
    cout << "Select a search strategy[default='all']: " ;
    cin >> search_strategy;
    if ( search_strategy != "a" && search_strategy != "b" )
        {
        search_strategy = "all";
        }
    Landscape * pLandscape = 0;
    Landscape * pLandscape_two = 0;
    JoinedLandscape * pLandscape_join = 0;
    Entity * pEntity = 0;
    string Move;
    bool success = 0;
 	while( i < totalruns)
 	{
 		pLandscape = new Landscape(n,k,1);
        pLandscape_two = new Landscape(n,k,1);
        pLandscape_join = new JoinedLandscape(*pLandscape, *pLandscape_two, k_two);
        pEntity = new Entity( pLandscape_join->d, pLandscape_join->d_two, 2*n);
        if ( search_strategy == "a" || search_strategy == "all")
        {
            cout << "--------Search A--------" << endl;
            for ( j = 0 ; j < walks ; j++)
            {
                Move = pEntity->checkVicinity_one( pLandscape_join->d , pLandscape_join->d_two , n );
                success = pEntity->Move( Move, pLandscape_join->d , pLandscape_join->d_two );
                if ( !success ) { cout << "No move (1)" << endl; }
            }
            for ( j = 0 ; j < walks ; j++)
            {
                Move = pEntity->checkVicinity_two( pLandscape_join->d , pLandscape_join->d_two , n );
                success = pEntity->Move( Move, pLandscape_join->d , pLandscape_join->d_two );
                if ( !success ) { cout << "No move (2)" << endl; }
            }
            cout << "Final: " << pEntity->GetConfig() << ":" << pEntity->GetFitness() << endl;
            CounterA.Add ( pEntity->GetFitness() );
            cout << "------------------------" << endl;
        }
        pEntity->Reset( pLandscape_join->d, pLandscape_join->d_two );
        if ( search_strategy == "b" || search_strategy == "all")
        {	
            cout << "--------Search B--------" << endl;
            for ( j = 0 ; j < walks ; j++)
            {
                Move = pEntity->checkVicinity_all( pLandscape_join->d , pLandscape_join->d_two );
                success = pEntity->Move( Move, pLandscape_join->d , pLandscape_join->d_two );
                if ( !success ) { cout << "No move" << endl; }
            }
            cout << "Final: " << pEntity->GetConfig() << ":" << pEntity->GetFitness() << endl;
            CounterB.Add ( pEntity->GetFitness() );
            cout << "------------------------" << endl;
        }
        pEntity->Reset( pLandscape_join->d, pLandscape_join->d_two );
        if ( 1 )
        {	
            cout << "--------Search C--------" << endl;
            for ( j = 0 ; j < walks ; j++)
            {
                Move = pEntity->checkVicinity_one_blind( pLandscape_join->d , pLandscape_join->d_two , n );
                success = pEntity->Move( Move, pLandscape_join->d , pLandscape_join->d_two );
                if ( !success ) { cout << "No move (1)" << endl; }
            }
            for ( j = 0 ; j < walks ; j++)
            {
                Move = pEntity->checkVicinity_two_blind( pLandscape_join->d , pLandscape_join->d_two , n );
                success = pEntity->Move( Move, pLandscape_join->d , pLandscape_join->d_two );
                if ( !success ) { cout << "No move (2)" << endl; }
            }
            cout << "Final: " << pEntity->GetConfig() << ":" << pEntity->GetFitness() << endl;
            CounterC.Add ( pEntity->GetFitness() );
            cout << "------------------------" << endl;
        }
        pEntity->Reset( pLandscape_join->d, pLandscape_join->d_two );
        if ( 1 )
        {	
            cout << "--------Search D--------" << endl;
            for ( j = 0 ; j < walks ; j++)
            {
                Move = pEntity->checkVicinity_one_blind( pLandscape_join->d , pLandscape_join->d_two , n );
                success = pEntity->Move( Move, pLandscape_join->d , pLandscape_join->d_two );
                if ( !success ) { cout << "No move (1)" << endl; }
                Move = pEntity->checkVicinity_two_blind( pLandscape_join->d , pLandscape_join->d_two , n );
//.........这里部分代码省略.........
开发者ID:jonblackaz,项目名称:sociology,代码行数:101,代码来源:simrewrite3.cpp


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