X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fevaluate.cpp;h=c397671cb408d53293b76967260b2d292591f6f1;hb=3ed603cd;hp=9368aa2cb38e25f1f5c952037400568a3e958646;hpb=3e663d8c50310a7a66043a2cdeb70cc83c2d269d;p=stockfish diff --git a/src/evaluate.cpp b/src/evaluate.cpp index 9368aa2c..c397671c 100644 --- a/src/evaluate.cpp +++ b/src/evaluate.cpp @@ -58,15 +58,17 @@ namespace { // weights read from UCI parameters. The purpose is to be able to change // the evaluation weights while keeping the default values of the UCI // parameters at 100, which looks prettier. - const int WeightMobilityMidgameInternal = 0x100; - const int WeightMobilityEndgameInternal = 0x100; - const int WeightPawnStructureMidgameInternal = 0x100; - const int WeightPawnStructureEndgameInternal = 0x100; - const int WeightPassedPawnsMidgameInternal = 0x100; - const int WeightPassedPawnsEndgameInternal = 0x100; - const int WeightKingSafetyInternal = 0x110; - const int WeightKingOppSafetyInternal = 0x110; - const int WeightSpaceInternal = 0x30; + // + // Values modified by Joona Kiiski + const int WeightMobilityMidgameInternal = 0x0FA; + const int WeightMobilityEndgameInternal = 0x10A; + const int WeightPawnStructureMidgameInternal = 0x0EC; + const int WeightPawnStructureEndgameInternal = 0x0CD; + const int WeightPassedPawnsMidgameInternal = 0x108; + const int WeightPassedPawnsEndgameInternal = 0x109; + const int WeightKingSafetyInternal = 0x0F7; + const int WeightKingOppSafetyInternal = 0x101; + const int WeightSpaceInternal = 0x02F; // Visually better to define tables constants typedef Value V; @@ -167,18 +169,19 @@ namespace { V(0), V(0), V(0), V(0), V(0), V(0), V(0), V(0) // 8 }; - // Bonus for unstoppable passed pawns: + // Bonus for unstoppable passed pawns const Value UnstoppablePawnValue = Value(0x500); - // Rooks and queens on the 7th rank: - const Value MidgameRookOn7thBonus = Value(50); - const Value EndgameRookOn7thBonus = Value(100); - const Value MidgameQueenOn7thBonus = Value(25); - const Value EndgameQueenOn7thBonus = Value(50); + // Rooks and queens on the 7th rank + const Value MidgameRookOn7thBonus = Value(47); + const Value EndgameRookOn7thBonus = Value(98); + const Value MidgameQueenOn7thBonus = Value(27); + const Value EndgameQueenOn7thBonus = Value(54); - // Rooks on open files: - const Value RookOpenFileBonus = Value(40); - const Value RookHalfOpenFileBonus = Value(20); + + // Rooks on open files + const Value RookOpenFileBonus = Value(43); + const Value RookHalfOpenFileBonus = Value(19); // Penalty for rooks trapped inside a friendly king which has lost the // right to castle: @@ -593,10 +596,14 @@ namespace { void evaluate_pieces(const Position& pos, Color us, EvalInfo& ei) { Bitboard b; + Square s, ksq; + Color them; + int mob; + File f; - for (int i = 0; i < pos.piece_count(us, Piece); i++) + for (int i = 0, e = pos.piece_count(us, Piece); i < e; i++) { - Square s = pos.piece_list(us, Piece, i); + s = pos.piece_list(us, Piece, i); if (Piece == KNIGHT || Piece == QUEEN) b = pos.piece_attacks(s); @@ -606,7 +613,7 @@ namespace { b = rook_attacks_bb(s, pos.occupied_squares() & ~pos.rooks_and_queens(us)); // Attacks, mobility and outposts - int mob = evaluate_common(pos, b, us, ei, s); + mob = evaluate_common(pos, b, us, ei, s); // Special patterns: trapped bishops on a7/h7/a2/h2 // and trapped bishops on a1/h1/a8/h8 in Chess960. @@ -623,7 +630,7 @@ namespace { continue; // Queen or rook on 7th rank - Color them = opposite_color(us); + them = opposite_color(us); if ( relative_rank(us, s) == RANK_7 && relative_rank(us, pos.king_square(them)) == RANK_8) @@ -637,7 +644,7 @@ namespace { continue; // Open and half-open files - File f = square_file(s); + f = square_file(s); if (ei.pi->file_is_half_open(us, f)) { if (ei.pi->file_is_half_open(them, f)) @@ -657,7 +664,7 @@ namespace { if (mob > 6 || ei.pi->file_is_half_open(us, f)) continue; - Square ksq = pos.king_square(us); + ksq = pos.king_square(us); if ( square_file(ksq) >= FILE_E && square_file(s) > square_file(ksq)