Adjust reductions based on history and cmh tables

STC:
LLR: 4.06 (-2.94,2.94) [0.00,5.00]
Total: 149395 W: 28029 L: 27208 D: 94158

LTC:
LLR: 2.96 (-2.94,2.94) [0.00,5.00]
Total: 9628 W: 1368 L: 1217 D: 7043

bench: 8076724

Resolves #565
This commit is contained in:
Stefano80
2016-01-13 16:05:31 +00:00
committed by Joona Kiiski
parent dcd8ce7094
commit 74e2fa97b7

View File

@@ -1000,10 +1000,11 @@ moves_loop: // When in check search starts from here
&& cmh[pos.piece_on(to_sq(move))][to_sq(move)] <= VALUE_ZERO))
r += ONE_PLY;
// Decrease reduction for moves with a good history
if ( thisThread->history[pos.piece_on(to_sq(move))][to_sq(move)] > VALUE_ZERO
&& cmh[pos.piece_on(to_sq(move))][to_sq(move)] > VALUE_ZERO)
r = std::max(DEPTH_ZERO, r - ONE_PLY);
// Decrease reduction for moves with a good history and
// increase reduction for moves with a bad history
int rDecrease = ( thisThread->history[pos.piece_on(to_sq(move))][to_sq(move)]
+ cmh[pos.piece_on(to_sq(move))][to_sq(move)]) / 14980;
r = std::max(DEPTH_ZERO, r - rDecrease * ONE_PLY);
// Decrease reduction for moves that escape a capture. Filter out castling
// moves because are coded as "king captures rook" and break make_move().