mirror of
https://github.com/sockspls/badfish
synced 2025-07-12 12:09:14 +00:00
Simplify SEE pruning for captures
It seems that the current search is smart enough to allow us to remove (again) the block of code that checks for discovered attacks after the first pruning condition for captures. STC: LLR: 2.94 (-2.94,2.94) <-1.75,0.25> Total: 278848 W: 70856 L: 70903 D: 137089 Ptnml(0-2): 960, 32829, 71894, 32780, 961 https://tests.stockfishchess.org/tests/view/64d0af095b17f7c21c0dc440 LTC: LLR: 2.95 (-2.94,2.94) <-1.75,0.25> Total: 100704 W: 25564 L: 25425 D: 49715 Ptnml(0-2): 56, 10858, 28381, 11005, 52 https://tests.stockfishchess.org/tests/view/64d293e85b17f7c21c0df844 closes https://github.com/official-stockfish/Stockfish/pull/4736 Bench: 1470572
This commit is contained in:
parent
c02ee70927
commit
495852fecd
1 changed files with 3 additions and 22 deletions
|
@ -989,28 +989,9 @@ moves_loop: // When in check, search starts here
|
|||
+ captureHistory[movedPiece][to_sq(move)][type_of(pos.piece_on(to_sq(move)))] / 7 < alpha)
|
||||
continue;
|
||||
|
||||
Bitboard occupied;
|
||||
// SEE based pruning (~11 Elo)
|
||||
if (!pos.see_ge(move, occupied, Value(-205) * depth))
|
||||
{
|
||||
if (depth < 2 - capture)
|
||||
continue;
|
||||
// Don't prune the move if opponent Queen/Rook is under discovered attack after the exchanges
|
||||
// Don't prune the move if opponent King is under discovered attack after or during the exchanges
|
||||
Bitboard leftEnemies = (pos.pieces(~us, KING, QUEEN, ROOK)) & occupied;
|
||||
Bitboard attacks = 0;
|
||||
occupied |= to_sq(move);
|
||||
while (leftEnemies && !attacks)
|
||||
{
|
||||
Square sq = pop_lsb(leftEnemies);
|
||||
attacks |= pos.attackers_to(sq, occupied) & pos.pieces(us) & occupied;
|
||||
// Don't consider pieces that were already threatened/hanging before SEE exchanges
|
||||
if (attacks && (sq != pos.square<KING>(~us) && (pos.attackers_to(sq, pos.pieces()) & pos.pieces(us))))
|
||||
attacks = 0;
|
||||
}
|
||||
if (!attacks)
|
||||
continue;
|
||||
}
|
||||
// SEE based pruning for captures and checks (~11 Elo)
|
||||
if (!pos.see_ge(move, Value(-205) * depth))
|
||||
continue;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
Loading…
Add table
Reference in a new issue