diff --git a/src/GTP.cpp b/src/GTP.cpp index e3176c01b..39407c3be 100644 --- a/src/GTP.cpp +++ b/src/GTP.cpp @@ -61,7 +61,7 @@ float cfg_max_wr; float cfg_min_wr; float cfg_wr_margin; float cfg_target_komi; -int cfg_adj_playouts; +int cfg_adj_positions; float cfg_adj_pct; bool cfg_pos; bool cfg_neg; @@ -143,7 +143,7 @@ void GTP::setup_default_parameters() { cfg_dyn_komi = false; cfg_target_komi = 7.5f; - cfg_adj_playouts = 200; + cfg_adj_positions = 200; cfg_adj_pct = 4.0; cfg_pos = false; cfg_neg = false; diff --git a/src/GTP.h b/src/GTP.h index 7697f498b..c9340c2ad 100644 --- a/src/GTP.h +++ b/src/GTP.h @@ -44,7 +44,7 @@ extern float cfg_max_wr; extern float cfg_min_wr; extern float cfg_wr_margin; extern float cfg_target_komi; -extern int cfg_adj_playouts; +extern int cfg_adj_positions; extern float cfg_adj_pct; extern bool cfg_pos; extern bool cfg_neg; diff --git a/src/Leela.cpp b/src/Leela.cpp index ae71c3adb..6ee849e73 100644 --- a/src/Leela.cpp +++ b/src/Leela.cpp @@ -88,7 +88,7 @@ static void parse_commandline(int argc, char *argv[]) { ("min-wr", po::value(), "Minimal white winrate.") ("wr-margin", po::value(), "White winrate is adjusted to min+margin or max-margin.") ("target-komi", po::value(), "Target komi, default 7.5.") - ("adj-playouts", po::value(), "Number of positions to collect for komi adjustment, default 200; should be higher for strong machines to achieve more accurate komi adjustment.") + ("adj-positions", po::value(), "Number of positions to collect for komi adjustment, default 200; should be higher for strong machines to achieve more accurate komi adjustment.") ("adj-pct", po::value(), "Percentage of collected positions to use for komi adjustment, default 4.") ("num-adj", po::value(), "Maximal number of komi adjustments for each genmove, default 1.") ("pos", "Use positive komi (for side-to-move) only.") @@ -264,15 +264,15 @@ static void parse_commandline(int argc, char *argv[]) { cfg_target_komi = vm["target-komi"].as(); } - if (vm.count("adj-playouts")) { - cfg_adj_playouts = vm["adj-playouts"].as(); - if (cfg_adj_playouts < 8) { - cfg_adj_playouts = 8; + if (vm.count("adj-positions")) { + cfg_adj_positions = vm["adj-positions"].as(); + if (cfg_adj_positions < 8) { + cfg_adj_positions = 8; } } if (vm.count("adj-pct")) { - cfg_adj_playouts = vm["adj-pct"].as(); + cfg_adj_positions = vm["adj-pct"].as(); } if (vm.count("num-adj")) { diff --git a/src/UCTNodeRoot.cpp b/src/UCTNodeRoot.cpp index f527b28d9..3ba034b5c 100644 --- a/src/UCTNodeRoot.cpp +++ b/src/UCTNodeRoot.cpp @@ -407,8 +407,8 @@ void UCTNode::prepare_root_node(Network & network, int color, // redundant argum } std::array>, 2> ss; - ss[0].reserve(cfg_adj_playouts + cfg_num_threads); - ss[1].reserve(cfg_adj_playouts + cfg_num_threads); + ss[0].reserve(cfg_adj_positions + cfg_num_threads); + ss[1].reserve(cfg_adj_positions + cfg_num_threads); for (auto i = 0; i < 2; i++) { for (auto j = 0; j < cfg_num_threads; j++) { ss[i].insert(ss[i].end(), search->sym_states[i][j].begin(),search->sym_states[i][j].end()); @@ -452,9 +452,9 @@ void UCTNode::prepare_root_node(Network & network, int color, // redundant argum bool to_adjust = false; // no need to collect ss[0] or ss[1] if cfg_pos or cfg_neg .. - if (search->collecting || (ss[0].size() >= cfg_adj_playouts && ss[1].size() >= cfg_adj_playouts)) { + if (search->collecting || (ss[0].size() >= cfg_adj_positions && ss[1].size() >= cfg_adj_positions)) { to_adjust = true; - auto num_positions = ceil(cfg_adj_playouts * cfg_adj_pct / 100.0); + auto num_positions = ceil(cfg_adj_positions * cfg_adj_pct / 100.0); for (auto i = 0; i < 2; i++) { std::nth_element(ss[i].begin(), ss[i].begin() + num_positions, ss[i].end(), [](std::shared_ptr& sym_state1, std::shared_ptr& sym_state2) { diff --git a/src/UCTSearch.cpp b/src/UCTSearch.cpp index dd24eef67..f5f05be54 100644 --- a/src/UCTSearch.cpp +++ b/src/UCTSearch.cpp @@ -221,7 +221,7 @@ SearchResult UCTSearch::play_simulation(GameState & currstate, rand_sym = cfg_fixed_symmetry; } success = node->create_children(m_network, m_nodes, currstate, eval, get_min_psa_ratio(), rand_sym); - if (success && sym_states[color][thread_num].size() * cfg_num_threads < cfg_adj_playouts) { + if (success && sym_states[color][thread_num].size() * cfg_num_threads < cfg_adj_positions) { auto sym_state = std::make_shared(); auto color = currstate.get_to_move(); (*sym_state).symmetry = rand_sym; @@ -229,7 +229,7 @@ SearchResult UCTSearch::play_simulation(GameState & currstate, (*sym_state).winrate = (color == FastBoard::BLACK ? eval : 1.0f - eval); //LOCK(get_mutex(), lock); sym_states[color][thread_num].push_back(sym_state); - if ((sym_states[color][thread_num].size() - 1) * cfg_num_threads >= cfg_adj_playouts) { + if ((sym_states[color][thread_num].size() - 1) * cfg_num_threads >= cfg_adj_positions) { //sym_states[color][thread_num].pop_front(); } } @@ -782,11 +782,11 @@ int UCTSearch::think(int color, passflag_t passflag) { if (num_adjustments < cfg_max_num_adjustments && elapsed_centis * 2.0f < time_for_move && m_playouts * 2 < m_maxplayouts) { - auto adj_playouts0 = std::accumulate(sym_states[0].begin(), sym_states[0].end(), 0, + auto adj_positions0 = std::accumulate(sym_states[0].begin(), sym_states[0].end(), 0, [](int p, std::deque> q) {return p + q.size(); }), - adj_playouts1 = std::accumulate(sym_states[1].begin(), sym_states[1].end(), 0, + adj_positions1 = std::accumulate(sym_states[1].begin(), sym_states[1].end(), 0, [](int p, std::deque> q) {return p + q.size(); }); - if (adj_playouts0 >= cfg_adj_playouts && adj_playouts1 >= cfg_adj_playouts) { + if (adj_positions0 >= cfg_adj_positions && adj_positions1 >= cfg_adj_positions) { to_adjust = true; num_adjustments++; break; @@ -891,11 +891,11 @@ void UCTSearch::ponder(bool analyzing) { || m_rootstate.m_opp_komi != cfg_target_komi)))) { collecting = true; if (analyzing && num_adjustments < cfg_max_num_adjustments) { - auto adj_playouts0 = std::accumulate(sym_states[0].begin(), sym_states[0].end(), 0, + auto adj_positions0 = std::accumulate(sym_states[0].begin(), sym_states[0].end(), 0, [](int p, std::deque> q) {return p + q.size(); }), - adj_playouts1 = std::accumulate(sym_states[1].begin(), sym_states[1].end(), 0, + adj_positions1 = std::accumulate(sym_states[1].begin(), sym_states[1].end(), 0, [](int p, std::deque> q) {return p + q.size(); }); - if (adj_playouts0 >= cfg_adj_playouts && adj_playouts1 >= cfg_adj_playouts) { + if (adj_positions0 >= cfg_adj_positions && adj_positions1 >= cfg_adj_positions) { to_adjust = true; num_adjustments++; break;