diff --git a/source/engine/yaneuraou-engine/yaneuraou-search.cpp b/source/engine/yaneuraou-engine/yaneuraou-search.cpp index 4c3155184..96f839246 100644 --- a/source/engine/yaneuraou-engine/yaneuraou-search.cpp +++ b/source/engine/yaneuraou-engine/yaneuraou-search.cpp @@ -1914,8 +1914,8 @@ namespace { /* + complexity / 28 */ && !excludedMove // && pos.non_pawn_material(us) // これ終盤かどうかを意味する。将棋でもこれに相当する条件が必要かも。 - && (ss->ply >= thisThread->nmpMinPly || us != thisThread->nmpColor) - // 同じ手番側に連続してnull moveを適用しない + && ss->ply >= thisThread->nmpMinPly + // && beta > VALUE_TB_LOSS_IN_MAX_PLY ) { ASSERT_LV3(eval - beta >= 0); @@ -1955,11 +1955,11 @@ namespace { ASSERT_LV3(!thisThread->nmpMinPly); // 再帰的な検証は認めていない。 // Do verification search at high depths, with null move pruning disabled - // for us, until ply exceeds nmpMinPly. - // null move枝刈りを無効化してus側の手番で、plyがnmpMinPlyを超えるまで + // until ply exceeds nmpMinPly. + + // null move枝刈りを無効化して、plyがnmpMinPlyを超えるまで // 高いdepthで検証のための探索を行う。 thisThread->nmpMinPly = ss->ply + 3 * (depth - R) / 4 ; - thisThread->nmpColor = us; // nullMoveせずに(現在のnodeと同じ手番で)同じ深さで探索しなおして本当にbetaを超えるか検証する。cutNodeにしない。 Value v = search(pos, ss, beta - 1, beta, depth - R, false); diff --git a/source/thread.h b/source/thread.h index 88015cae1..64aaf44bd 100644 --- a/source/thread.h +++ b/source/thread.h @@ -99,7 +99,6 @@ class Thread // nmpColor : null moveの前回の適用Color // state : 探索で組合せ爆発が起きているか等を示す状態 int selDepth, nmpMinPly; - Color nmpColor; // bestValue : // search()で、そのnodeでbestMoveを指したときの(探索の)評価値