Skip to content

Commit

Permalink
- evaluate_with_no_returnを使うように戻す。
Browse files Browse the repository at this point in the history
- qsearch()でPvのときはevaluate()呼び出すようにする。
  • Loading branch information
yaneurao committed Nov 29, 2024
1 parent 6f33da5 commit f30c136
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 7 deletions.
26 changes: 19 additions & 7 deletions source/engine/yaneuraou-engine/yaneuraou-search.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2040,9 +2040,9 @@ Value search(Position& pos, Stack* ss, Value alpha, Value beta, Depth depth, boo
// ⇨ 差分計算型の評価関数ではないときは、lazy_evaluateする必要がないので、駒得評価関数のときは何もしない。
if (evaluatedValue == VALUE_NONE)
{
//evaluatedValue = VALUE_INFINITE;
//::evaluate_with_no_return(pos);
evaluatedValue = ::evaluate(pos);
evaluatedValue = VALUE_INFINITE;
::evaluate_with_no_return(pos);
//evaluatedValue = ::evaluate(pos);
}
#endif
};
Expand Down Expand Up @@ -2130,14 +2130,19 @@ Value search(Position& pos, Stack* ss, Value alpha, Value beta, Depth depth, boo
// Eval::NNUE::hint_common_parent_position(pos, networks[numaAccessToken], refreshTable);
// → TODO : hint_common_parent_position()実装するか検討する。

#if defined(YANEURAOU_ENGINE_NNUE)

//ASSERT(unadjustedStaticEval != VALUE_NONE);
//unadjustedStaticEval = evaluate(pos);
unadjustedStaticEval = evaluate(pos);

// TODO : ここでevaluate()が必須な理由がよくわからない。
// Stockfishには無いのに…。なぜなのか…。
//
// lazy_evaluate()に変える ⇨ 弱い(V8.38dev-n7)
// unadjustedStaticEvalに代入せずに単にevaluate() ⇨ 特に弱くはなさそう(V838dev_n8)
// 結論的には、NNUEのevaluate_with_no_return()とevaluate()の挙動が違うのが原因っぽい。
// これはあきませんわ…。
#endif
}
#else
unadjustedStaticEval = evaluate(pos);
Expand Down Expand Up @@ -3765,9 +3770,9 @@ Value qsearch(Position& pos, Stack* ss, Value alpha, Value beta, Depth depth)
#if defined(USE_LAZY_EVALUATE) && defined(USE_DIFF_EVAL)
if (evaluatedValue == VALUE_NONE)
{
//evaluatedValue = VALUE_INFINITE;
//::evaluate_with_no_return(pos);
evaluatedValue = ::evaluate(pos);
evaluatedValue = VALUE_INFINITE;
::evaluate_with_no_return(pos);
//evaluatedValue = ::evaluate(pos);
}
#endif
};
Expand Down Expand Up @@ -3807,6 +3812,13 @@ Value qsearch(Position& pos, Stack* ss, Value alpha, Value beta, Depth depth)
unadjustedStaticEval =
// evaluate(networks[numaAccessToken], pos, refreshTable, thisThread->optimism[us]);
evaluate(pos);
#if defined(NNUE_LAZY_EVALUATE) && defined(YANEURAOU_ENGINE_NNUE)
else if (PvNode) {
// やねうら王独自
unadjustedStaticEval = evaluate(pos);
// ⇨ NNUEだとこれ入れたほうが強い可能性が…。
}
#endif

ss->staticEval = bestValue =
// to_corrected_static_eval(unadjustedStaticEval, *thisThread, pos, ss );
Expand Down
1 change: 1 addition & 0 deletions source/evaluate.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ namespace Eval {
// このあとのdo_move()のあとのevaluate()で差分計算ができるように、
// 現在の前局面から差分計算ができるときだけ計算しておく。
// 評価値自体は返さない。
// 備考) 差分計算型の評価関数ではないときは、この関数は何もしなくて良い。
void evaluate_with_no_return(const Position& pos);

// 評価値の内訳表示(デバッグ用)
Expand Down

0 comments on commit f30c136

Please sign in to comment.