From a3298e7e06ef269b55177ac27f08cf21aea4447b Mon Sep 17 00:00:00 2001 From: hechima256 Date: Thu, 30 Jul 2026 23:03:21 +0900 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E6=9E=90=E5=87=BA=E5=8A=9B=E3=81=8C?= =?UTF-8?q?=E6=AE=8B=E3=82=8A=E3=81=AE=E3=83=9F=E3=83=8B=E3=83=90=E3=83=83?= =?UTF-8?q?=E3=83=81=E3=82=92=E5=8F=8D=E6=98=A0=E3=81=9B=E3=81=9A=E3=80=81?= =?UTF-8?q?visits=20<=20batch=5Fsize=20=E3=81=A7=E3=82=BC=E3=83=AD?= =?UTF-8?q?=E9=99=A4=E7=AE=97=E3=81=99=E3=82=8B=E5=95=8F=E9=A1=8C=E3=82=92?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mcts/node.py | 5 ++++- mcts/tree.py | 4 ++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/mcts/node.py b/mcts/node.py index 3efae2e..fce7a21 100644 --- a/mcts/node.py +++ b/mcts/node.py @@ -472,8 +472,11 @@ def get_analysis_from_status_list(self, mode: str, """ out = "" if mode == "cgos": + # 探索結果が未反映 (node_visits == 0) の場合はゼロ除算を避け、 + # ニューラルネットワークの評価値で代用する cgos_dict = { - "winrate" : float(self.node_value_sum) / self.node_visits, + "winrate" : float(self.node_value_sum) / self.node_visits \ + if self.node_visits > 0 else float(self.raw_value), "visits" : self.node_visits, "moves" : [] } diff --git a/mcts/tree.py b/mcts/tree.py index f10ce6c..862b85e 100644 --- a/mcts/tree.py +++ b/mcts/tree.py @@ -162,6 +162,10 @@ def search(self, board: GoBoard, color: Stone, time_manager: TimeManager, \ break if len(analysis_query) > 0 and interval == 0: + # 未反映のミニバッチ (最大 batch_size - 1 プレイアウト) を + # 反映してから解析結果を出力する + if len(self.batch_queue.node_index) > 0: + self.process_mini_batch(board) root = self.node[self.current_root] mode = analysis_query.get("mode", "lz") sys.stdout.write(root.get_analysis(board, mode, self.get_pv_lists))