本文整理汇总了C++中ActionSet::randomAction方法的典型用法代码示例。如果您正苦于以下问题:C++ ActionSet::randomAction方法的具体用法?C++ ActionSet::randomAction怎么用?C++ ActionSet::randomAction使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ActionSet
的用法示例。
在下文中一共展示了ActionSet::randomAction方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: DFBBMonteCarlo
// recursive function which does all search logic
void DFBBMonteCarlo(StarcraftStateType & s, int depth)
{
printf("Depth %d\n", depth);
// increase the node expansion count
nodesExpanded++;
// the time at which the last thing in the queue will finish
int finishTime = s.getLastFinishTime();
if (finishTime >= upperBound)
{
return;
}
int bucket = getBucket(finishTime);
int armyValue = s.getArmyValue();
if (armyValue > armyValues[bucket])
{
armyValues[bucket] = armyValue;
buildOrders[bucket] = getBuildOrder(s);
}
// if we are using search timeout and we are over the limit
if (params.searchTimeLimit && (nodesExpanded % 1000 == 0) && (searchTimer.getElapsedTimeInMilliSec() > params.searchTimeLimit))
{
// throw an exception to unroll the recursion
throw 1;
}
// get the legal action set
ActionSet legalActions = s.getLegalActionsMonteCarlo(params.goal);
// if we have children, update the counter
if (!legalActions.isEmpty())
{
numGenerations += 1;
numChildren += legalActions.numActions();
Action nextAction = legalActions.randomAction();
StarcraftStateType child(s);
int readyTime = child.resourcesReady(nextAction);
child.doAction(nextAction, readyTime);
child.setParent(&s);
DFBBMonteCarlo(child, depth+1);
}
else
{
printf("No legal actions %d\n", depth);
}
}