X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fevaluate.cpp;h=aeaa4336383960142e77260b7442d17659871bcb;hp=3872dd4053994fac66f9845bff2ed42a67599ccd;hb=4c1a8ff9da057987e34936af8743a4d179a472dc;hpb=b92206305fb9a246c4a86a1f5235e47b70fb63ed diff --git a/src/evaluate.cpp b/src/evaluate.cpp index 3872dd40..aeaa4336 100644 --- a/src/evaluate.cpp +++ b/src/evaluate.cpp @@ -2,7 +2,7 @@ Stockfish, a UCI chess playing engine derived from Glaurung 2.1 Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2018 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad + Copyright (C) 2015-2019 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad Stockfish is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -162,6 +162,7 @@ namespace { constexpr Score MinorBehindPawn = S( 16, 0); constexpr Score Overload = S( 12, 6); constexpr Score PawnlessFlank = S( 18, 94); + constexpr Score RestrictedPiece = S( 7, 6); constexpr Score RookOnPawn = S( 10, 28); constexpr Score SliderOnQueen = S( 49, 21); constexpr Score ThreatByKing = S( 21, 84); @@ -474,7 +475,7 @@ namespace { + 69 * kingAttacksCount[Them] + 185 * popcount(kingRing[Us] & weak) + 150 * popcount(pos.blockers_for_king(Us) | unsafeChecks) - + 4 * tropism + + tropism * tropism / 4 - 873 * !pos.count(Them) - 6 * mg_value(score) / 8 + mg_value(mobility[Them] - mobility[Us]) @@ -508,7 +509,7 @@ namespace { constexpr Direction Up = (Us == WHITE ? NORTH : SOUTH); constexpr Bitboard TRank3BB = (Us == WHITE ? Rank3BB : Rank6BB); - Bitboard b, weak, defended, nonPawnEnemies, stronglyProtected, safe; + Bitboard b, weak, defended, nonPawnEnemies, stronglyProtected, safe, restricted; Score score = SCORE_ZERO; // Non-pawn enemies @@ -558,6 +559,13 @@ namespace { score += Overload * popcount(b); } + // Bonus for restricting their piece moves + restricted = attackedBy[Them][ALL_PIECES] + & ~attackedBy[Them][PAWN] + & ~attackedBy2[Them] + & attackedBy[Us][ALL_PIECES]; + score += RestrictedPiece * popcount(restricted); + // Bonus for enemy unopposed weak pawns if (pos.pieces(Us, ROOK, QUEEN)) score += WeakUnopposedPawn * pe->weak_unopposed(Them);