From 7a59656ec9d3af475ae12c01fc5557aac0c845a0 Mon Sep 17 00:00:00 2001 From: yaneurao Date: Wed, 23 Oct 2024 07:32:19 +0900 Subject: [PATCH] =?UTF-8?q?-=20CounterMoveHistory=E3=81=AE=E3=82=B3?= =?UTF-8?q?=E3=83=BC=E3=83=89=E6=8E=83=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/eval/kpp_kkpt/evaluate_kpp_kkpt.cpp | 2 +- source/eval/kppt/evaluate_kppt.cpp | 6 +--- source/learn/learn.h | 6 ++-- source/movepick.h | 38 ---------------------- source/thread.cpp | 1 - source/thread.h | 1 - source/usi.cpp | 6 ++-- 7 files changed, 8 insertions(+), 52 deletions(-) diff --git a/source/eval/kpp_kkpt/evaluate_kpp_kkpt.cpp b/source/eval/kpp_kkpt/evaluate_kpp_kkpt.cpp index c968a9a13..619b94685 100644 --- a/source/eval/kpp_kkpt/evaluate_kpp_kkpt.cpp +++ b/source/eval/kpp_kkpt/evaluate_kpp_kkpt.cpp @@ -837,7 +837,7 @@ namespace Eval // 返す値の絶対値がVALUE_MAX_EVALを超えてないことを保証しないといけないのだが…。 // いまの評価関数、手番を過学習したりして、ときどき超えてそう…。 - //ASSERT_LV3(abs(v) < VALUE_MAX_EVAL); + //ASSERT_LV3(abs(v) < =VALUE_MAX_EVAL); return v; } diff --git a/source/eval/kppt/evaluate_kppt.cpp b/source/eval/kppt/evaluate_kppt.cpp index a546ec303..dc9bc8d25 100644 --- a/source/eval/kppt/evaluate_kppt.cpp +++ b/source/eval/kppt/evaluate_kppt.cpp @@ -931,11 +931,7 @@ namespace Eval // 返す値の絶対値がVALUE_MAX_EVALを超えてないことを保証しないといけないのだが…。 // いまの評価関数、手番を過学習したりして、ときどき超えてそう…。 - //ASSERT_LV3(abs(v) < VALUE_MAX_EVAL); -#if 0 - if (!((abs(v) < VALUE_MAX_EVAL))) - std::cout << pos << std::endl; -#endif + //ASSERT_LV3(abs(v) <= VALUE_MAX_EVAL); return v; } diff --git a/source/learn/learn.h b/source/learn/learn.h index fc3bbde88..2066358fe 100644 --- a/source/learn/learn.h +++ b/source/learn/learn.h @@ -223,12 +223,12 @@ namespace Learner // 読み筋とそのときの評価値を返す型 // Learner::search() , Learner::qsearch()で用いる。 - typedef std::pair > ValueAndPV; + typedef std::pair > ValuePV; // いまのところ、YANEURAOU_ENGINEしか、このスタブを持っていないが // EVAL_LEARNをdefineするなら、このスタブが必須。 - Learner::ValueAndPV search(Position& pos, int depth , size_t multiPV = 1 , u64 NodesLimit = 0); - Learner::ValueAndPV qsearch(Position& pos); + Learner::ValuePV search(Position& pos, int depth , size_t multiPV = 1 , u64 NodesLimit = 0); + Learner::ValuePV qsearch(Position& pos); double calc_grad(Value shallow, const PackedSfenValue& psv); diff --git a/source/movepick.h b/source/movepick.h index 4bf7b5966..5136b1236 100644 --- a/source/movepick.h +++ b/source/movepick.h @@ -200,44 +200,6 @@ struct LowPlyHistory Stats stats; }; - -// CounterMoveHistory stores counter moves indexed by [piece][to] of the previous -// move, see www.chessprogramming.org/Countermove_Heuristic -// CounterMoveHistoryは、直前の指し手の[piece][to]によってindexされるcounter moves(応手)を格納する。 -// cf. http://chessprogramming.wikispaces.com/Countermove+Heuristic - -//using CounterMoveHistory = Stats; - -struct CounterMoveHistory -{ - using T = Move; // StatsEntryの型 - static constexpr int D = NOT_USED; // StatsEntryの範囲 - - // - // メモ) - // StockfishのMove、移動させる駒の情報は持っていないのだが、 - // 将棋でもMove16で十分である可能性はある。 - // - - // 必ず以下のアクセッサを通してアクセスすること。 - // ※ 引数の順番は、Stockfishの配列の添字の順番と合わせてある。 - - const StatsEntry& operator() (Piece pc, Square sq) const { - return stats[sq][pc]; - } - - StatsEntry& operator() (Piece pc, Square sq) { - return stats[sq][pc]; - } - - void fill(T t) { stats.fill(t); } - -private: - // ※ Stockfishとは、添字の順番を入れ替えてあるので注意。 - // やねうら王の実際の格納配列(stats)では、[to][piece]の順。 - Stats stats; -}; - // CapturePieceToHistory is addressed by a move's [piece][to][captured piece type] // CapturePieceToHistoryは、指し手の [piece][to][captured piece type]で示される。 diff --git a/source/thread.cpp b/source/thread.cpp index f68d9c6cb..cb99e9cb0 100644 --- a/source/thread.cpp +++ b/source/thread.cpp @@ -44,7 +44,6 @@ Thread::~Thread() void Thread::clear() { #if defined(USE_MOVE_PICKER) - counterMoves.fill(Move::none()); mainHistory.fill(0); captureHistory.fill(0); #if defined(ENABLE_PAWN_HISTORY) diff --git a/source/thread.h b/source/thread.h index 7fe9c8028..011765f80 100644 --- a/source/thread.h +++ b/source/thread.h @@ -189,7 +189,6 @@ class Thread #if defined(USE_MOVE_PICKER) // 近代的なMovePickerではオーダリングのために、スレッドごとにhistoryとcounter movesなどのtableを持たないといけない。 - CounterMoveHistory counterMoves; ButterflyHistory mainHistory; LowPlyHistory lowPlyHistory; CapturePieceToHistory captureHistory; diff --git a/source/usi.cpp b/source/usi.cpp index c876c01be..7c12f3879 100644 --- a/source/usi.cpp +++ b/source/usi.cpp @@ -109,10 +109,10 @@ namespace Learner #endif // 読み筋と評価値のペア。Learner::search(),Learner::qsearch()が返す。 - typedef std::pair > ValueAndPV; + typedef std::pair > ValuePV; - ValueAndPV qsearch(Position& pos); - ValueAndPV search(Position& pos, int depth_, size_t multiPV = 1 , u64 nodesLimit = 0 ); + ValuePV qsearch(Position& pos); + ValuePV search(Position& pos, int depth_, size_t multiPV = 1 , u64 nodesLimit = 0 ); } #endif