X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fevaluate.cpp;h=b0bebce6256e10c0868380530023eabca1b98521;hp=a3f42dbef7ab4ef8c48b7a0afbc2fcd132dc8194;hb=2c237da54647bb7526f3512bea183eb44919cdda;hpb=cf893bcded1ae2d0cdf95caa7a41a020fe450cbd diff --git a/src/evaluate.cpp b/src/evaluate.cpp index a3f42dbe..b0bebce6 100644 --- a/src/evaluate.cpp +++ b/src/evaluate.cpp @@ -154,7 +154,7 @@ namespace { }; const Score ThreatByRook[PIECE_TYPE_NB] = { - S(0, 0), S(0, 25), S(40, 62), S(40, 59), S( 0, 34), S(35, 48) + S(0, 0), S(0, 25), S(40, 62), S(40, 59), S(0, 34), S(35, 48) }; // ThreatByKing[on one/on many] contains bonuses for king attacks on @@ -240,7 +240,7 @@ namespace { ei.attackedBy[Us][ALL_PIECES] = b | ei.attackedBy[Us][PAWN]; // Init our king safety tables only if we are going to use them - if (pos.non_pawn_material(Them) >= QueenValueMg) + if (pos.non_pawn_material(Them) >= RookValueMg + KnightValueMg) { ei.kingRing[Us] = b; if (relative_rank(Us, pos.square(Us)) == RANK_1) @@ -405,7 +405,7 @@ namespace { Score score = ei.pe->king_safety(pos, ksq); // Main king safety evaluation - if (ei.kingAttackersCount[Them]) + if (ei.kingAttackersCount[Them] > (1 - pos.count(Them))) { // Find the attacked squares which are defended only by our king... undefended = ei.attackedBy[Them][ALL_PIECES] @@ -426,13 +426,14 @@ namespace { + 201 * popcount(undefended) + 143 * (popcount(b) + !!pos.pinned_pieces(Us)) - 848 * !pos.count(Them) - - 28 * mg_value(score) / 25 - 5; + - 9 * mg_value(score) / 8 + + 40; // Analyse the safe enemy's checks which are possible on next move safe = ~pos.pieces(Them); safe &= ~ei.attackedBy[Us][ALL_PIECES] | (undefended & ei.attackedBy2[Them]); - b1 = pos.attacks_from(ksq); + b1 = pos.attacks_from< ROOK>(ksq); b2 = pos.attacks_from(ksq); // Enemy queen safe checks @@ -631,7 +632,7 @@ namespace { // Adjust bonus based on the king's proximity ebonus += distance(pos.square(Them), blockSq) * 5 * rr - - distance(pos.square(Us ), blockSq) * 2 * rr; + - distance(pos.square( Us), blockSq) * 2 * rr; // If blockSq is not the queening square then consider also a second push if (relative_rank(Us, blockSq) != RANK_8) @@ -894,7 +895,7 @@ std::string Eval::trace(const Position& pos) { << " Imbalance | " << Term(IMBALANCE) << " Pawns | " << Term(PAWN) << " Knights | " << Term(KNIGHT) - << " Bishop | " << Term(BISHOP) + << " Bishops | " << Term(BISHOP) << " Rooks | " << Term(ROOK) << " Queens | " << Term(QUEEN) << " Mobility | " << Term(MOBILITY)