From fda2cf4d6fbc4a32742eb320aded6a39b718a591 Mon Sep 17 00:00:00 2001 From: yaneurao Date: Sun, 7 Jan 2024 01:16:27 +0900 Subject: [PATCH] =?UTF-8?q?-=201=E6=89=8B=E8=A9=B0=E3=82=81=E3=82=92?= =?UTF-8?q?=E7=89=B9=E6=AE=8A=E3=81=AA=E6=9D=A1=E4=BB=B6=E3=81=A7=E8=A6=8B?= =?UTF-8?q?=E9=80=83=E3=81=99=E3=81=93=E3=81=A8=E3=81=8C=E3=81=82=E3=82=8B?= =?UTF-8?q?=E3=81=AE=E3=82=92=E4=BF=AE=E6=AD=A3=E3=80=82(=E5=9C=A7?= =?UTF-8?q?=E5=80=92=E7=9A=84=E5=8B=9D=E5=8B=A2=E3=81=A7=E6=AC=A1=E5=96=84?= =?UTF-8?q?=E6=89=8B=E3=82=92=E6=8C=87=E3=81=99=E3=81=AE=E3=81=A7=E5=8B=9D?= =?UTF-8?q?=E6=95=97=E3=81=AB=E3=81=AF=E5=BD=B1=E9=9F=BF=E3=81=AA=E3=81=95?= =?UTF-8?q?=E3=81=9D=E3=81=86=E3=81=AA=E3=81=AE=E3=81=A0=E3=81=8C)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 現象が再現できるUSI入力 ``` isready position startpos moves 7g7f 8b5b 2g2f 5a6b 3i3h 6b7b 5i6h 7b8b 2f2e 3c3d 9g9f 5c5d 6h7h 5d5e 2e2d 2c2d 2h2d 4a3b 2d2h P*2c 9f9e 7a7b 6g6f 5e5f 5g5f 5b5f 7h6g 5f5a 7i6h 6c6d 6g7h 3a4b 4g4f 4b5c 3h4g 2b4d 4i5h 5c5d 5h6g 7c7d 2h5h 7b6c 4f4e 4d3c 8h7g 6a7b 4g4f P*5e 7h8h 8a7c 6i7h 4c4d 4e4d 3c4d P*4e 4d3c 3g3f 6d6e 6f6e 7c8e 7g8f 5d6e P*6f 6e5f P*5b 5a5b 6g5f 5e5f P*5e G*4g 5h5f 4g4f 5f4f 5b5e P*5f 5e5a 4e4d S*6i 7h7i 6i5h+ 4f4e 8c8d 4d4c+ 3c6f S*7g 8e7g+ 6h7g 6f5g+ 4c3b S*6g G*7h P*6f N*6d 5a6a 6d7b+ 6c7b 4e4c+ 6g7h+ 7i7h N*7c 8f5c+ G*6b G*5b 6b5c 5b6a 7b6a 4c5c G*7b G*6c 7b6c 5c6c G*6b R*4b P*5b 4b5b+ B*7a 6c6b 6a6b G*7b 8b8c 5b6b 5g7i 7h7i R*9h go position startpos moves 7g7f 8b5b 2g2f 5a6b 3i3h 6b7b 5i6h 7b8b 2f2e 3c3d 9g9f 5c5d 6h7h 5d5e 2e2d 2c2d 2h2d 4a3b 2d2h P*2c 9f9e 7a7b 6g6f 5e5f 5g5f 5b5f 7h6g 5f5a 7i6h 6c6d 6g7h 3a4b 4g4f 4b5c 3h4g 2b4d 4i5h 5c5d 5h6g 7c7d 2h5h 7b6c 4f4e 4d3c 8h7g 6a7b 4g4f P*5e 7h8h 8a7c 6i7h 4c4d 4e4d 3c4d P*4e 4d3c 3g3f 6d6e 6f6e 7c8e 7g8f 5d6e P*6f 6e5f P*5b 5a5b 6g5f 5e5f P*5e G*4g 5h5f 4g4f 5f4f 5b5e P*5f 5e5a 4e4d S*6i 7h7i 6i5h+ 4f4e 8c8d 4d4c+ 3c6f S*7g 8e7g+ 6h7g 6f5g+ 4c3b S*6g G*7h P*6f N*6d 5a6a 6d7b+ 6c7b 4e4c+ 6g7h+ 7i7h N*7c 8f5c+ G*6b G*5b 6b5c 5b6a 7b6a 4c5c G*7b G*6c 7b6c 5c6c G*6b R*4b P*5b 4b5b+ B*7a 6c6b 6a6b G*7b 8b8c 5b6b 5g7i 7h7i R*9h 9i9h go position startpos moves 7g7f 8b5b 2g2f 5a6b 3i3h 6b7b 5i6h 7b8b 2f2e 3c3d 9g9f 5c5d 6h7h 5d5e 2e2d 2c2d 2h2d 4a3b 2d2h P*2c 9f9e 7a7b 6g6f 5e5f 5g5f 5b5f 7h6g 5f5a 7i6h 6c6d 6g7h 3a4b 4g4f 4b5c 3h4g 2b4d 4i5h 5c5d 5h6g 7c7d 2h5h 7b6c 4f4e 4d3c 8h7g 6a7b 4g4f P*5e 7h8h 8a7c 6i7h 4c4d 4e4d 3c4d P*4e 4d3c 3g3f 6d6e 6f6e 7c8e 7g8f 5d6e P*6f 6e5f P*5b 5a5b 6g5f 5e5f P*5e G*4g 5h5f 4g4f 5f4f 5b5e P*5f 5e5a 4e4d S*6i 7h7i 6i5h+ 4f4e 8c8d 4d4c+ 3c6f S*7g 8e7g+ 6h7g 6f5g+ 4c3b S*6g G*7h P*6f N*6d 5a6a 6d7b+ 6c7b 4e4c+ 6g7h+ 7i7h N*7c 8f5c+ G*6b G*5b 6b5c 5b6a 7b6a 4c5c G*7b G*6c 7b6c 5c6c G*6b R*4b P*5b 4b5b+ B*7a 6c6b 6a6b G*7b 8b8c 5b6b 5g7i 7h7i R*9h 9i9h 8d8e go position startpos moves 7g7f 8b5b 2g2f 5a6b 3i3h 6b7b 5i6h 7b8b 2f2e 3c3d 9g9f 5c5d 6h7h 5d5e 2e2d 2c2d 2h2d 4a3b 2d2h P*2c 9f9e 7a7b 6g6f 5e5f 5g5f 5b5f 7h6g 5f5a 7i6h 6c6d 6g7h 3a4b 4g4f 4b5c 3h4g 2b4d 4i5h 5c5d 5h6g 7c7d 2h5h 7b6c 4f4e 4d3c 8h7g 6a7b 4g4f P*5e 7h8h 8a7c 6i7h 4c4d 4e4d 3c4d P*4e 4d3c 3g3f 6d6e 6f6e 7c8e 7g8f 5d6e P*6f 6e5f P*5b 5a5b 6g5f 5e5f P*5e G*4g 5h5f 4g4f 5f4f 5b5e P*5f 5e5a 4e4d S*6i 7h7i 6i5h+ 4f4e 8c8d 4d4c+ 3c6f S*7g 8e7g+ 6h7g 6f5g+ 4c3b S*6g G*7h P*6f N*6d 5a6a 6d7b+ 6c7b 4e4c+ 6g7h+ 7i7h N*7c 8f5c+ G*6b G*5b 6b5c 5b6a 7b6a 4c5c G*7b G*6c 7b6c 5c6c G*6b R*4b P*5b 4b5b+ B*7a 6c6b 6a6b G*7b 8b8c 5b6b 5g7i 7h7i R*9h 9i9h 8d8e 7b7c go position startpos moves 7g7f 8b5b 2g2f 5a6b 3i3h 6b7b 5i6h 7b8b 2f2e 3c3d 9g9f 5c5d 6h7h 5d5e 2e2d 2c2d 2h2d 4a3b 2d2h P*2c 9f9e 7a7b 6g6f 5e5f 5g5f 5b5f 7h6g 5f5a 7i6h 6c6d 6g7h 3a4b 4g4f 4b5c 3h4g 2b4d 4i5h 5c5d 5h6g 7c7d 2h5h 7b6c 4f4e 4d3c 8h7g 6a7b 4g4f P*5e 7h8h 8a7c 6i7h 4c4d 4e4d 3c4d P*4e 4d3c 3g3f 6d6e 6f6e 7c8e 7g8f 5d6e P*6f 6e5f P*5b 5a5b 6g5f 5e5f P*5e G*4g 5h5f 4g4f 5f4f 5b5e P*5f 5e5a 4e4d S*6i 7h7i 6i5h+ 4f4e 8c8d 4d4c+ 3c6f S*7g 8e7g+ 6h7g 6f5g+ 4c3b S*6g G*7h P*6f N*6d 5a6a 6d7b+ 6c7b 4e4c+ 6g7h+ 7i7h N*7c 8f5c+ G*6b G*5b 6b5c 5b6a 7b6a 4c5c G*7b G*6c 7b6c 5c6c G*6b R*4b P*5b 4b5b+ B*7a 6c6b 6a6b G*7b 8b8c 5b6b 5g7i 7h7i R*9h 9i9h 8d8e 7b7c 8c8d go btime 555000 wtime 30000 binc 10000 winc 10000 ``` --- source/engine/yaneuraou-engine/yaneuraou-search.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/source/engine/yaneuraou-engine/yaneuraou-search.cpp b/source/engine/yaneuraou-engine/yaneuraou-search.cpp index d8c7fd039..988e0c6e4 100644 --- a/source/engine/yaneuraou-engine/yaneuraou-search.cpp +++ b/source/engine/yaneuraou-engine/yaneuraou-search.cpp @@ -1213,16 +1213,18 @@ void Thread::search() { // 勝ちを読みきっているのに将棋所の表示が追いつかずに、将棋所がフリーズしていて、その間の時間ロスで // 時間切れで負けることがある。 - // mateを読みきったとき、そのmateの倍以上、iterationを回しても仕方ない気がするので探索を打ち切るようにする。 + // mateを読みきったとき、そのmateの2.5倍以上、iterationを回しても仕方ない気がするので探索を打ち切るようにする。 + // ⇨ あと、rootで1手詰め呼び出さなくしたので、その影響もあって、VALUE_MATE == bestValueになることはあるから、この時、 + // rootDepth == 1で探索を終了されては困る。もう少し先まで調べて欲しいので、+2しておく。 if (!Limits.mate && bestValue >= VALUE_MATE_IN_MAX_PLY - && (VALUE_MATE - bestValue) * 5/2 < (Value)(rootDepth)) + && (VALUE_MATE - bestValue + 2) * 5/2 < (Value)(rootDepth)) break; // 詰まされる形についても同様。こちらはmateの2.5倍以上、iterationを回したなら探索を打ち切る。 if (!Limits.mate && bestValue <= VALUE_MATED_IN_MAX_PLY - && (bestValue - (-VALUE_MATE)) * 5/2 < (Value)(rootDepth)) + && (bestValue - (-VALUE_MATE) + 2) * 5/2 < (Value)(rootDepth)) break; }