From f7568a025db6b5c2cf8add342a10ca3c422729ad Mon Sep 17 00:00:00 2001 From: borg323 Date: Tue, 25 May 2021 11:59:56 +0300 Subject: [PATCH] hack for smooth tm tuning --- src/mcts/stoppers/factory.cc | 46 ++++++++++++++++++++++++++++++++++-- 1 file changed, 44 insertions(+), 2 deletions(-) diff --git a/src/mcts/stoppers/factory.cc b/src/mcts/stoppers/factory.cc index cb1fc0dfaf..a310c50eb7 100644 --- a/src/mcts/stoppers/factory.cc +++ b/src/mcts/stoppers/factory.cc @@ -49,21 +49,63 @@ const OptionId kTimeManagerId{ "Name and config of a time manager. " "Possible names are 'legacy', 'smooth' (default) and 'alphazero'." "See https://lc0.org/timemgr for configuration details."}; + +const OptionId kITRId{"init-tree-reuse", "init-tree-reuse",""}; +const OptionId kMTRId{"max-tree-reuse", "max-tree-reuse",""}; +const OptionId kTRURId{"tree-reuse-update-rate", "tree-reuse-update-rate",""}; +const OptionId kNURId{"nps-update-rate", "nps-update-rate",""}; +const OptionId kITId{"init-timeuse", "init-timeuse",""}; +const OptionId kMTId{"min-timeuse", "min-timeuse",""}; +const OptionId kTURId{"timeuse-update-rate", "timeuse-update-rate",""}; +const OptionId kMMBId{"max-move-budget", "max-move-budget",""}; +const OptionId kIPId{"init-piggybank", "init-piggybank",""}; +const OptionId kPMPId{"per-move-piggybank", "per-move-piggybank",""}; +const OptionId kMPUId{"max-piggybank-use", "max-piggybank-use",""}; +const OptionId kMPMId{"max-piggybank-moves", "max-piggybank-moves",""}; } // namespace + void PopulateTimeManagementOptions(RunType for_what, OptionsParser* options) { PopulateCommonStopperOptions(for_what, options); if (for_what == RunType::kUci) { options->Add(kMoveOverheadId, 0, 100000000) = 200; - options->Add(kTimeManagerId) = "smooth"; + options->Add(kITRId, 0, 10) = 0.5f; + options->Add(kMTRId, 0, 10) = 0.8f; + options->Add(kTRURId, 0, 10) = 3.0f; + options->Add(kNURId, 0, 10) = 5.0f; + options->Add(kITId, 0, 10) = 0.5f; + options->Add(kMTId, 0, 10) = 0.2f; + options->Add(kTURId, 0, 10) = 3.0f; + options->Add(kMMBId, 0, 10) = 0.3f; + options->Add(kIPId, 0, 10) = 0.0f; + options->Add(kPMPId, 0, 10) = 0.18f; + options->Add(kMPUId, 0, 10) = 0.95f; + options->Add(kMPMId, 0, 100) = 27.0f; + } } std::unique_ptr MakeTimeManager(const OptionsDict& options) { const int64_t move_overhead = options.Get(kMoveOverheadId); + std::ostringstream oss; + oss << "smooth("; + oss << "init-tree-reuse=" << std::setprecision(5) << std::fixed << options.Get(kITRId); + oss << ",max-tree-reuse=" << std::setprecision(5) << std::fixed << options.Get(kMTRId); + oss << ",tree-reuse-update-rate=" << std::setprecision(5) << std::fixed << options.Get(kTRURId); + oss << ",nps-update-rate=" << std::setprecision(5) << std::fixed << options.Get(kNURId); + oss << ",init-timeuse=" << std::setprecision(5) << std::fixed << options.Get(kITId); + oss << ",min-timeuse=" << std::setprecision(5) << std::fixed << options.Get(kMTId); + oss << ",timeuse-update-rate=" << std::setprecision(5) << std::fixed << options.Get(kTURId); + oss << ",max-move-budget=" << std::setprecision(5) << std::fixed << options.Get(kMMBId); + oss << ",init-piggybank=" << std::setprecision(5) << std::fixed << options.Get(kIPId); + oss << ",per-move-piggybank=" << std::setprecision(5) << std::fixed << options.Get(kPMPId); + oss << ",max-piggybank-use=" << std::setprecision(5) << std::fixed << options.Get(kMPUId); + oss << ",max-piggybank-moves=" << std::setprecision(5) << std::fixed << options.Get(kMPMId); + oss << ")"; + OptionsDict tm_options; - tm_options.AddSubdictFromString(options.Get(kTimeManagerId)); + tm_options.AddSubdictFromString(oss.str()); const auto managers = tm_options.ListSubdicts();