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


C++ Agent::incSugar方法代码示例

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


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

示例1: executeAction

/*
 * Check location for agent. If present check to see if due to die.  If so then remove all sugar.
 * If agent is not dying then check each parent to see if they are dying.
 * If they are take the correct share of their sugar (total sugar divided by number of children.
 * Note: We do not bother to check if any of their other children may be dying - just to simplify code
 * @param loc :location to check for agent
 * @see Inheritance Rule
 * @return true if agent was presnt otherwise false
 * @exception none
 */
bool Inheritance::executeAction(Location * loc, group *)
{
    //offloads to intel MIC (experiment)
    //will only work with intel devices with Xeon Phi
#pragma offload target(mic:0)
    {
        if (loc->hasAgent()) {
            Agent *theAgent = loc->getAgent();
            if (theAgent->getAge() == theAgent->getMaxAge()) {//I am dying
                theAgent->setSugar(0);
            }
            else {//I am alive check to see if parents are dying
                if (theAgent->getFather()->getAge() == theAgent->getFather()->getMaxAge()) {
                    theAgent->incSugar(theAgent->getFather()->getSugar() / theAgent->getFather()->getChildrenCount());
                }
                if (theAgent->getMother()->getAge() == theAgent->getMother()->getMaxAge()) {
                    theAgent->incSugar(theAgent->getMother()->getSugar() / theAgent->getMother()->getChildrenCount());
                }
            }
            return true;
        } else {
            return false;/*!< no agent present so did nothing */
        }
    }
}
开发者ID:AaronCMcDermott,项目名称:GPU-Sugarscape,代码行数:35,代码来源:Inheritance.cpp

示例2: executeAction

/**
 * Decrements an agents sugar by their metabolism
 * @param loc :Location in lattice we are running action on
 * @param group pointer not used - nullptr passed in
 * @see Metabolism in book
 * @return true if agent was at location else false
 * @exception none
 */
bool AgentMetabolism::executeAction(Location * loc, group * ){
    if (loc->hasAgent()) {
        Agent *agent =loc->getAgent();
        agent->incSugar(-agent->getMetabolism());
        agent->incAge();
    }
    return true;
}
开发者ID:josephkehoe,项目名称:Sugarscape,代码行数:16,代码来源:AgentMetabolism.cpp

示例3: executeAction

/**
 * Agent removes agent in location in group from world and takes resources
 * It also removes links to agents killed by combat (lenders, borrowers, etc.)
 * @param loc :Pointer to Location of the winning agent
 * @param grp : Pointer to Group containing location of losing agent (or possibly an empty location)
 * @see Combat Rule
 * @return true if agent exists at loc else false
 * @exception none
 */
bool AgentCombat::executeAction(Location *loc, group *grp)
{
    if (loc->hasAgent()) {
        Agent *winner = grp->getPrimeMover()->getAgent(); //must equal loc->getAgent()!
        if (grp->getMembers().size()!=0)/*!< we are moving somewhere */
        {
            if (grp->getMembers()[0]->hasAgent()==false) {/*!< moving to empty location */
                loc->getAgent()->incSugar(grp->getMembers()[0]->getSugar());/*!< eat sugar at destination */
                grp->getMembers()[0]->setSugar(0);/*!< sugar at location is consumed */
            }
            else{
                //std::cout <<"COMBAT!"<<std::endl;
                //1. Update victorious agent resources
                Agent *loser = grp->getMembers()[0]->getAgent();//only one member in group - the loser
                winner->incSugar(grp->getMembers()[0]->getReward());//*WHAT IF WE ADD SPICE?*
                grp->getMembers()[0]->setSugar(0);/*!< sugar at location is consumed */
                //2. Kill vanquished agent
                std::pair<int,int> currPosition=loser->getPosition();
                if (loser!=sim->killAgent(currPosition))
                {
                    std::cerr << "Delete of agent failed"<<std::endl;
                }
            }
            //Move agent to new position
            std::pair<int,int> currPosition=winner->getPosition();
            sim->setAgent(currPosition, nullptr);//remove old location ptr to agent
            winner->setPosition(grp->getMembers()[0]->getPosition());//set new position to new location
            sim->setAgent(grp->getMembers()[0]->getPosition(),winner);//add ptr to agent at new location
        }
        else{/*!< we are staying put-not moving */
            loc->getAgent()->incSugar(loc->getSugar());/*!< eat sugar at destination */
            loc->setSugar(0);/*!< sugar at location is consumed */
        }
        for(auto ag:winner->getChildren())/*!< Remove any links to killed children */
        {
            if (ag->isKilled()) {
                winner->removeChild(ag);
            }
        }
        winner->removeKilledLoans();/*!< remove loans with killed agents */
        winner->removeKilledFather();/*!< remove father link if he is killed */
        winner->removeKilledMother();/*!< remove mother link if she is killed */
        return true;
    }else{
        return false;/*!< no agent present so did nothing */
    }
}
开发者ID:BrianD1991,项目名称:FYP,代码行数:56,代码来源:AgentCombat.cpp


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