X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fevaluate.cpp;h=7e4f963e3685231d3276afa713040455182fd4ee;hp=cb77fe3efcbb46f9994d35c0cb7075e479acf8df;hb=9bacd921fa1618b2113d4ca41b0cbd9d3699d466;hpb=1a8e3f0b2e9e2a5b8a01b645ce1fc5b12e0aec55 diff --git a/src/evaluate.cpp b/src/evaluate.cpp index cb77fe3e..7e4f963e 100644 --- a/src/evaluate.cpp +++ b/src/evaluate.cpp @@ -21,6 +21,7 @@ #include #include #include +#include #include "bitcount.h" #include "evaluate.h" @@ -88,7 +89,7 @@ namespace { // // Values modified by Joona Kiiski const Score WeightsInternal[] = { - S(248, 271), S(252, 259), S(46, 0), S(247, 0), S(259, 0) + S(252, 344), S(216, 266), S(46, 0), S(247, 0), S(259, 0) }; // MobilityBonus[PieceType][attacked] contains mobility bonuses for middle and @@ -698,7 +699,7 @@ namespace { // the number and types of the enemy's attacking pieces, the number of // attacked and undefended squares around our king, the square of the // king, and the quality of the pawn shelter. - attackUnits = Min(25, (ei.kingAttackersCount[Them] * ei.kingAttackersWeight[Them]) / 2) + attackUnits = std::min(25, (ei.kingAttackersCount[Them] * ei.kingAttackersWeight[Them]) / 2) + 3 * (ei.kingAdjacentZoneAttacksCount[Them] + count_1s(undefended)) + InitKingDanger[relative_square(Us, ksq)] - mg_value(ei.pi->king_shelter(pos, ksq)) / 32; @@ -762,7 +763,7 @@ namespace { attackUnits += KnightCheckBonus * count_1s(b); // To index KingDangerTable[] attackUnits must be in [0, 99] range - attackUnits = Min(99, Max(0, attackUnits)); + attackUnits = std::min(99, std::max(0, attackUnits)); // Finally, extract the king danger score from the KingDangerTable[] // array and subtract the score from evaluation. Set also margins[] @@ -812,8 +813,8 @@ namespace { Square blockSq = s + pawn_push(Us); // Adjust bonus based on kings proximity - ebonus += Value(square_distance(pos.king_square(Them), blockSq) * 6 * rr); - ebonus -= Value(square_distance(pos.king_square(Us), blockSq) * 3 * rr); + ebonus += Value(square_distance(pos.king_square(Them), blockSq) * 5 * rr); + ebonus -= Value(square_distance(pos.king_square(Us), blockSq) * 2 * rr); // If blockSq is not the queening square then consider also a second push if (rank_of(blockSq) != (Us == WHITE ? RANK_8 : RANK_1)) @@ -844,11 +845,6 @@ namespace { // If yes, big bonus (but smaller than when there are no enemy attacks), // if no, somewhat smaller bonus. ebonus += Value(rr * ((unsafeSquares & defendedSquares) == unsafeSquares ? 13 : 8)); - - // At last, add a small bonus when there are no *friendly* pieces - // in the pawn's path. - if (!(squaresToQueen & pos.pieces(Us))) - ebonus += Value(rr); } } // rr != 0 @@ -857,6 +853,7 @@ namespace { supportingPawns = pos.pieces(PAWN, Us) & neighboring_files_bb(s); if (supportingPawns & rank_bb(s)) ebonus += Value(r * 20); + else if (supportingPawns & rank_bb(s - pawn_push(Us))) ebonus += Value(r * 12); @@ -933,7 +930,7 @@ namespace { continue; pliesToGo = 2 * movesToGo - int(c == pos.side_to_move()); - pliesToQueen[c] = Min(pliesToQueen[c], pliesToGo); + pliesToQueen[c] = std::min(pliesToQueen[c], pliesToGo); } } @@ -1003,7 +1000,7 @@ namespace { while (b2) // This while-loop could be replaced with LSB/MSB (depending on color) { d = square_distance(blockSq, pop_1st_bit(&b2)) - 2; - movesToGo = Min(movesToGo, d); + movesToGo = std::min(movesToGo, d); } } @@ -1013,7 +1010,7 @@ namespace { while (b2) // This while-loop could be replaced with LSB/MSB (depending on color) { d = square_distance(blockSq, pop_1st_bit(&b2)) - 2; - movesToGo = Min(movesToGo, d); + movesToGo = std::min(movesToGo, d); } // If obstacle can be destroyed with an immediate pawn exchange / sacrifice, @@ -1027,7 +1024,7 @@ namespace { // Plies needed for the king to capture all the blocking pawns d = square_distance(pos.king_square(loserSide), blockSq); - minKingDist = Min(minKingDist, d); + minKingDist = std::min(minKingDist, d); kingptg = (minKingDist + blockersCount) * 2; } @@ -1126,9 +1123,9 @@ namespace { t[i] = Value(int(0.4 * i * i)); if (i > 0) - t[i] = Min(t[i], t[i - 1] + MaxSlope); + t[i] = std::min(t[i], t[i - 1] + MaxSlope); - t[i] = Min(t[i], Peak); + t[i] = std::min(t[i], Peak); } // Then apply the weights and get the final KingDangerTable[] array