X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fevaluate.cpp;h=6b329bb0def455471fcf6302f6ce5722de69215a;hp=d8017065f0941b009e5d917da2f07d25a3a79ede;hb=d5b24ad77b546b66d52ebde2bacfaaacddf1e7f3;hpb=87886128288a82dabc78c2ce6dd688f42eaf8212 diff --git a/src/evaluate.cpp b/src/evaluate.cpp index d8017065..6b329bb0 100644 --- a/src/evaluate.cpp +++ b/src/evaluate.cpp @@ -132,21 +132,21 @@ namespace { // Outpost[knight/bishop][supported by pawn] contains bonuses for knights and // bishops outposts, bigger if outpost piece is supported by a pawn. const Score Outpost[][2] = { - { S(42,11), S(63,17) }, // Knights - { S(18, 5), S(27, 8) } // Bishops + { S(43,11), S(65,20) }, // Knights + { S(20, 3), S(29, 8) } // Bishops }; // ReachableOutpost[knight/bishop][supported by pawn] contains bonuses for // knights and bishops which can reach an outpost square in one move, bigger // if outpost square is supported by a pawn. const Score ReachableOutpost[][2] = { - { S(21, 5), S(31, 8) }, // Knights - { S( 8, 2), S(13, 4) } // Bishops + { S(21, 5), S(35, 8) }, // Knights + { S( 8, 0), S(14, 4) } // Bishops }; // RookOnFile[semiopen/open] contains bonuses for each rook when there is no // friendly pawn on the rook file. - const Score RookOnFile[2] = { S(19, 10), S(43, 21) }; + const Score RookOnFile[2] = { S(20, 7), S(45, 20) }; // ThreatBySafePawn[PieceType] contains bonuses according to which piece // type is attacked by a pawn which is protected or is not attacked. @@ -181,12 +181,13 @@ namespace { // Assorted bonuses and penalties used by evaluation const Score MinorBehindPawn = S(16, 0); const Score BishopPawns = S( 8, 12); - const Score RookOnPawn = S( 7, 27); + const Score RookOnPawn = S( 8, 24); const Score TrappedRook = S(92, 0); const Score Checked = S(20, 20); - const Score ThreatByHangingPawn = S(70, 63); - const Score Hanging = S(48, 28); - const Score ThreatByPawnPush = S(31, 19); + const Score ThreatByHangingPawn = S(71, 61); + const Score LooseEnemies = S( 0, 25); + const Score Hanging = S(48, 27); + const Score ThreatByPawnPush = S(38, 22); const Score Unstoppable = S( 0, 20); // Penalty for a bishop on a1/h1 (a8/h8 for black) which is trapped by @@ -208,10 +209,10 @@ namespace { // Penalties for enemy's safe checks const int QueenContactCheck = 89; - const int QueenCheck = 50; + const int QueenCheck = 52; const int RookCheck = 45; - const int BishopCheck = 6; - const int KnightCheck = 14; + const int BishopCheck = 5; + const int KnightCheck = 17; // eval_init() initializes king and attack bitboards for a given color @@ -469,6 +470,11 @@ namespace { Bitboard b, weak, defended, safeThreats; Score score = SCORE_ZERO; + // Small bonus if the opponent has loose pawns or pieces + if ( (pos.pieces(Them) ^ pos.pieces(Them, QUEEN, KING)) + & ~(ei.attackedBy[Us][ALL_PIECES] | ei.attackedBy[Them][ALL_PIECES])) + score += LooseEnemies; + // Non-pawn enemies attacked by a pawn weak = (pos.pieces(Them) ^ pos.pieces(Them, PAWN)) & ei.attackedBy[Us][PAWN];