void GoUctDefaultPriorKnowledge::InitializeForNonRandomPolicyMove( const GoPointList& empty, const SgPointSet& pattern, const SgPointSet& atari, int nuSimulations) { const GoBoard& bd = Board(); for (GoPointList::Iterator it(empty); it; ++it) { const SgPoint p = *it; SG_ASSERT (bd.IsEmpty(p)); if (BadSelfAtari(bd, p)) Initialize(p, 0.1f, nuSimulations); else if (atari[p]) Initialize(p, 0.8f, nuSimulations); else if (pattern[p]) Initialize(*it, 0.5 + (m_patternGammas[*it] / m_maxPatternGamma) * 0.3, nuSimulations); else Initialize(p, 0.4f, nuSimulations); } const GoPointList moves = m_policy.GetEquivalentBestMoves(); for (GoPointList::Iterator it(moves); it; ++it) Initialize(*it, 1.0, nuSimulations); }
void GoUctDefaultPriorKnowledge::InitializeForGlobalHeuristic( const GoPointList& empty, const SgPointSet& pattern, const SgPointSet& atari, SgUctValue nuSimulations) { const GoBoard& bd = Board(); const SgUctValue smallWeight = m_defaultPriorWeight * 3; for (GoPointList::Iterator it(empty); it; ++it) { const SgPoint p = *it; SG_ASSERT (bd.IsEmpty(p)); if (BadSelfAtari(bd, p)) Initialize(p, 0.1f, nuSimulations); else if (atari[p]) Initialize(p, 1.0f, smallWeight); else if (pattern[p]) Initialize(*it, 0.6 + (m_patternGammas[*it] / m_maxPatternGamma) * 0.4, smallWeight); else Initialize(p, 0.5f, smallWeight); } }
void GoUctDefaultPriorKnowledge::InitializeForRandomPolicyMove( const GoPointList& empty, int nuSimulations) { const GoBoard& bd = Board(); for (GoPointList::Iterator it(empty); it; ++it) { const SgPoint p = *it; SG_ASSERT (bd.IsEmpty(p)); if (BadSelfAtari(bd, p)) Initialize(p, 0.1f, nuSimulations); else Clear(p); // Don't initialize } }