mirror of
https://github.com/HChaZZY/Stockfish.git
synced 2025-12-24 19:16:49 +08:00
Merge branch 'master' of github.com:official-stockfish/Stockfish into nnue-player-merge
This commit is contained in:
@@ -111,7 +111,7 @@ namespace {
|
||||
constexpr Value LazyThreshold1 = Value(1400);
|
||||
constexpr Value LazyThreshold2 = Value(1300);
|
||||
constexpr Value SpaceThreshold = Value(12222);
|
||||
constexpr Value NNUEThreshold = Value(500);
|
||||
constexpr Value NNUEThreshold = Value(520);
|
||||
|
||||
// KingAttackWeights[PieceType] contains king attack weights by piece type
|
||||
constexpr int KingAttackWeights[PIECE_TYPE_NB] = { 0, 0, 81, 52, 44, 10 };
|
||||
@@ -346,7 +346,8 @@ namespace {
|
||||
{
|
||||
// Bonus if the piece is on an outpost square or can reach one
|
||||
// Reduced bonus for knights (BadOutpost) if few relevant targets
|
||||
bb = OutpostRanks & attackedBy[Us][PAWN] & ~pe->pawn_attacks_span(Them);
|
||||
bb = OutpostRanks & (attackedBy[Us][PAWN] | shift<Down>(pos.pieces(PAWN)))
|
||||
& ~pe->pawn_attacks_span(Them);
|
||||
Bitboard targets = pos.pieces(Them) & ~pos.pieces(PAWN);
|
||||
|
||||
if ( Pt == KNIGHT
|
||||
@@ -939,10 +940,9 @@ Value Eval::evaluate(const Position& pos) {
|
||||
|
||||
if (Eval::useNNUE)
|
||||
{
|
||||
Value balance = pos.non_pawn_material(WHITE) - pos.non_pawn_material(BLACK);
|
||||
balance += 200 * (pos.count<PAWN>(WHITE) - pos.count<PAWN>(BLACK));
|
||||
Value v = eg_value(pos.psq_score());
|
||||
// Take NNUE eval only on balanced positions
|
||||
if (abs(balance) < NNUEThreshold)
|
||||
if (abs(v) < NNUEThreshold)
|
||||
return NNUE::evaluate(pos) + Tempo;
|
||||
}
|
||||
return Evaluation<NO_TRACE>(pos).value();
|
||||
|
||||
@@ -816,7 +816,7 @@ namespace {
|
||||
|
||||
// Step 8. Futility pruning: child node (~50 Elo)
|
||||
if ( !PvNode
|
||||
&& depth < 6
|
||||
&& depth < 8
|
||||
&& eval - futility_margin(depth, improving) >= beta
|
||||
&& eval < VALUE_KNOWN_WIN) // Do not return unproven wins
|
||||
return eval;
|
||||
@@ -1028,7 +1028,7 @@ moves_loop: // When in check, search starts from here
|
||||
continue;
|
||||
|
||||
// Futility pruning: parent node (~5 Elo)
|
||||
if ( lmrDepth < 6
|
||||
if ( lmrDepth < 8
|
||||
&& !ss->inCheck
|
||||
&& ss->staticEval + 284 + 188 * lmrDepth <= alpha
|
||||
&& (*contHist[0])[movedPiece][to_sq(move)]
|
||||
@@ -1135,6 +1135,12 @@ moves_loop: // When in check, search starts from here
|
||||
if (type_of(move) == CASTLING)
|
||||
extension = 1;
|
||||
|
||||
// Late irreversible move extension
|
||||
if ( move == ttMove
|
||||
&& pos.rule50_count() > 80
|
||||
&& (captureOrPromotion || type_of(movedPiece) == PAWN))
|
||||
extension = 2;
|
||||
|
||||
// Add extension to new depth
|
||||
newDepth += extension;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user