Skip to content

Commit

Permalink
- LowPlyHistoryの確保する配列サイズ間違っていたの修正。
Browse files Browse the repository at this point in the history
  • Loading branch information
yaneurao committed Oct 15, 2024
1 parent 24517d9 commit 144605a
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 3 deletions.
4 changes: 4 additions & 0 deletions source/engine/yaneuraou-engine/yaneuraou-search.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2641,6 +2641,10 @@ Value search(Position& pos, Stack* ss, Value alpha, Value beta, Depth depth, boo
int doubleMargin = 262 * PvNode - 204 * !ttCapture;
int tripleMargin = 97 + 266 * PvNode - 255 * !ttCapture + 94 * ss->ttPv;

// We make sure to limit the extensions in some way to avoid a search explosion
// 2重延長を制限することで探索の組合せ爆発を回避する。

// TODO : ここのパラメーター、調整すべきかも?
extension = 1 + (value < singularBeta - doubleMargin)
+ (value < singularBeta - tripleMargin);

Expand Down
2 changes: 1 addition & 1 deletion source/movepick.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -388,7 +388,7 @@ void MovePicker::score()
;

// lowPlyHistoryも加算
if (ply < 4)
if (ply < LOW_PLY_HISTORY_SIZE)
m.value += 8 * (*lowPlyHistory)(ply , m.from_to()) / (1 + 2 * ply);

}
Expand Down
10 changes: 8 additions & 2 deletions source/movepick.h
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,12 @@ enum StatsType { NoCaptures, Captures };
//
// そこで、以下⇓のようなwrapper classを書いて、このopeator()を通じてアクセスを行うことにする。
// これにより、添字の順番はStockfishと同じ形になり、かつ、コンパイル時に引数の型チェックがなされる。
//
// ■ 備考
//
// move.from_to()を呼び出した時、Stockfishでは 0~SQUARE_NB*SQUARE_NB-1までの値だが、
// やねうら王では、0 ~ ((SQUARE_NB+7) * SQUARE_NB - 1)であることに注意。
// ⇨ 後者のサイズとして、Move::FROM_TO_SIZEを用いると良い。

struct ButterflyHistory
{
Expand Down Expand Up @@ -163,7 +169,7 @@ struct ButterflyHistory
// 注) 打ち駒に関して、先手と後手の歩打ちを区別する必要はない。
//   なぜなら、このButterflyHistoryではその指し手の手番(Color)の区別をしているから。
//
Stats<T, D , int(SQUARE_NB + 7) * int(SQUARE_NB) , COLOR_NB> stats;
Stats<T, D , Move::FROM_TO_SIZE, COLOR_NB> stats;
};


Expand Down Expand Up @@ -192,7 +198,7 @@ struct LowPlyHistory

//using LowPlyHistory = Stats<int16_t, 7183, LOW_PLY_HISTORY_SIZE, int(SQUARE_NB)* int(SQUARE_NB)>;
// ⇨ Stockfishのコードだと、末尾が2の冪にならないので並び順を変更する。
Stats<int16_t, D, int(SQUARE_NB)* int(SQUARE_NB), LOW_PLY_HISTORY_SIZE> stats;
Stats<int16_t, D, Move::FROM_TO_SIZE, LOW_PLY_HISTORY_SIZE> stats;
};


Expand Down
3 changes: 3 additions & 0 deletions source/types.h
Original file line number Diff line number Diff line change
Expand Up @@ -715,6 +715,9 @@ class Move
//   これは、この関数は、MovePickerのButterflyHistoryで使うから必要なのだが、そこでは指し手の手番(Color)を別途持っているから。
int from_to() const { return int(from_sq() + int(is_drop() ? (SQ_NB - 1) : 0)) * int(SQ_NB) + int(to_sq());}

// 上記のfrom_toが返す最大値 + 1。
static constexpr int FROM_TO_SIZE = int(SQ_NB + 7) * int(SQ_NB);

// 指し手が普通の指し手(駒打ち/駒成り含む)であるかテストする。
// 特殊な指し手(MOVE_NONE/MOVE_NULL/MOVE_WIN)である場合、falseが返る。
// それ普通の指し手ならばtrueが返る。
Expand Down

0 comments on commit 144605a

Please sign in to comment.