diff --git a/src/UCTNode.cpp b/src/UCTNode.cpp index 1fffe16fa..3f008e4f1 100644 --- a/src/UCTNode.cpp +++ b/src/UCTNode.cpp @@ -87,6 +87,7 @@ bool UCTNode::create_children(std::atomic& nodecount, if (state.board.white_to_move()) { m_net_eval = 1.0f - m_net_eval; } + update(m_net_eval); eval = m_net_eval; std::vector nodelist; diff --git a/src/UCTSearch.cpp b/src/UCTSearch.cpp index 5b327fc15..fdc1b2c50 100644 --- a/src/UCTSearch.cpp +++ b/src/UCTSearch.cpp @@ -199,6 +199,7 @@ SearchResult UCTSearch::play_simulation(GameState & currstate, if (currstate.get_passes() >= 2) { auto score = currstate.final_score(); result = SearchResult::from_score(score); + node->update(result.eval()); } else if (m_nodes < MAX_TREE_SIZE) { float eval; const auto had_children = node->has_children(); @@ -220,12 +221,12 @@ SearchResult UCTSearch::play_simulation(GameState & currstate, next->invalidate(); } else { result = play_simulation(currstate, next); + if (result.valid()) { + node->update(result.eval()); + } } } - if (result.valid()) { - node->update(result.eval()); - } node->virtual_loss_undo(); return result;