Skip to content

Commit

Permalink
Update reverse move stats
Browse files Browse the repository at this point in the history
For a good quiet non-pawn move consider the reverse move as bad
and update the main history with a negative stat bonus.

STC:
LLR: 2.95 (-2.94,2.94) [0.50,4.50]
Total: 19292 W: 4401 L: 4141 D: 10750
http://tests.stockfishchess.org/tests/view/5d7751d50ebc594e7864973c

LTC:
LLR: 2.95 (-2.94,2.94) [0.00,3.50]
Total: 111952 W: 18762 L: 18275 D: 74915
http://tests.stockfishchess.org/tests/view/5d7771cf0ebc594e786498fa

Closes #2294

Bench: 3914238
  • Loading branch information
locutus2 authored and snicolet committed Sep 11, 2019
1 parent 8fec883 commit 61f44ce
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 1 deletion.
5 changes: 4 additions & 1 deletion src/search.cpp
Expand Up @@ -1113,7 +1113,7 @@ namespace {
// castling moves, because they are coded as "king captures rook" and
// hence break make_move(). (~5 Elo)
else if ( type_of(move) == NORMAL
&& !pos.see_ge(make_move(to_sq(move), from_sq(move))))
&& !pos.see_ge(reverse_move(move)))
r -= 2 * ONE_PLY;

ss->statScore = thisThread->mainHistory[us][from_to(move)]
Expand Down Expand Up @@ -1603,6 +1603,9 @@ namespace {
thisThread->mainHistory[us][from_to(move)] << bonus;
update_continuation_histories(ss, pos.moved_piece(move), to_sq(move), bonus);

if (type_of(pos.moved_piece(move)) != PAWN)
thisThread->mainHistory[us][from_to(reverse_move(move))] << -bonus;

if (is_ok((ss-1)->currentMove))
{
Square prevSq = to_sq((ss-1)->currentMove);
Expand Down
4 changes: 4 additions & 0 deletions src/types.h
Expand Up @@ -442,6 +442,10 @@ constexpr Move make_move(Square from, Square to) {
return Move((from << 6) + to);
}

constexpr Move reverse_move(Move m) {
return make_move(to_sq(m), from_sq(m));
}

template<MoveType T>
constexpr Move make(Square from, Square to, PieceType pt = KNIGHT) {
return Move(T + ((pt - KNIGHT) << 12) + (from << 6) + to);
Expand Down

0 comments on commit 61f44ce

Please sign in to comment.