From ee3f7b6b6e1a1051b32cedb38ac89b3458ff4ab2 Mon Sep 17 00:00:00 2001 From: FauziAkram Date: Sun, 10 Jan 2021 01:31:09 +0200 Subject: [PATCH 1/1] Bad Outpost Pawn Scale Changed name from Bad Outpost to Uncontested Outpost Scale Uncontested Outpost with number of pawns + Decrease Bishop PSQT values and general tuning Credits for the decrease of the Bishop PSQT values: Fauzi Credits for scaling Uncontested Outpost with number of pawns: Lolligerhans Credits for the tunings: Fauzi Passed STC: LLR: 2.94 (-2.94,2.94) {-0.25,1.25} Total: 32040 W: 6593 L: 6281 D: 19166 Ptnml(0-2): 596, 3713, 7095, 4015, 601 https://tests.stockfishchess.org/tests/view/5ffa43026019e097de3ef0f2 Passed LTC: LLR: 2.95 (-2.94,2.94) {0.25,1.25} Total: 84376 W: 11395 L: 10950 D: 62031 Ptnml(0-2): 652, 7930, 24623, 8287, 696 https://tests.stockfishchess.org/tests/view/5ffa6e7b6019e097de3ef0fd closes https://github.com/official-stockfish/Stockfish/pull/3296 Bench: 4287509 --- src/evaluate.cpp | 10 +++++----- src/psqt.cpp | 16 ++++++++-------- src/search.cpp | 4 ++-- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/evaluate.cpp b/src/evaluate.cpp index c137fab5..76266937 100644 --- a/src/evaluate.cpp +++ b/src/evaluate.cpp @@ -225,7 +225,7 @@ namespace { // BishopPawns[distance from edge] contains a file-dependent penalty for pawns on // squares of the same color as our bishop. constexpr Score BishopPawns[int(FILE_NB) / 2] = { - S(3, 8), S(3, 9), S(1, 8), S(3, 7) + S(3, 8), S(3, 9), S(2, 8), S(3, 8) }; // KingProtector[knight/bishop] contains penalty for each distance unit to own king @@ -233,7 +233,7 @@ namespace { // Outpost[knight/bishop] contains bonuses for each knight or bishop occupying a // pawn protected square on rank 4 to 6 which is also safe from a pawn attack. - constexpr Score Outpost[] = { S(56, 34), S(31, 23) }; + constexpr Score Outpost[] = { S(57, 38), S(31, 24) }; // PassedRank[Rank] contains a bonus according to the rank of a passed pawn constexpr Score PassedRank[RANK_NB] = { @@ -255,7 +255,7 @@ namespace { }; // Assorted bonuses and penalties - constexpr Score BadOutpost = S( -7, 36); + constexpr Score UncontestedOutpost = S( 1, 10); constexpr Score BishopOnKingRing = S( 24, 0); constexpr Score BishopXRayPawns = S( 4, 5); constexpr Score CorneredBishop = S( 50, 50); @@ -428,7 +428,7 @@ namespace { if (Pt == BISHOP || Pt == KNIGHT) { // Bonus if the piece is on an outpost square or can reach one - // Reduced bonus for knights (BadOutpost) if few relevant targets + // Bonus for knights (UncontestedOutpost) if few relevant targets bb = OutpostRanks & (attackedBy[Us][PAWN] | shift(pos.pieces(PAWN))) & ~pe->pawn_attacks_span(Them); Bitboard targets = pos.pieces(Them) & ~pos.pieces(PAWN); @@ -437,7 +437,7 @@ namespace { && bb & s & ~CenterFiles // on a side outpost && !(b & targets) // no relevant attacks && (!more_than_one(targets & (s & QueenSide ? QueenSide : KingSide)))) - score += BadOutpost; + score += UncontestedOutpost * popcount(pos.pieces(PAWN) & (s & QueenSide ? QueenSide : KingSide)); else if (bb & s) score += Outpost[Pt == BISHOP]; else if (Pt == KNIGHT && bb & b & ~pos.pieces(Us)) diff --git a/src/psqt.cpp b/src/psqt.cpp index bf87237a..e2107240 100644 --- a/src/psqt.cpp +++ b/src/psqt.cpp @@ -43,14 +43,14 @@ constexpr Score Bonus[][RANK_NB][int(FILE_NB) / 2] = { { S(-201,-100), S(-83,-88), S(-56,-56), S(-26,-17) } }, { // Bishop - { S(-53,-57), S( -5,-30), S( -8,-37), S(-23,-12) }, - { S(-15,-37), S( 8,-13), S( 19,-17), S( 4, 1) }, - { S( -7,-16), S( 21, -1), S( -5, -2), S( 17, 10) }, - { S( -5,-20), S( 11, -6), S( 25, 0), S( 39, 17) }, - { S(-12,-17), S( 29, -1), S( 22,-14), S( 31, 15) }, - { S(-16,-30), S( 6, 6), S( 1, 4), S( 11, 6) }, - { S(-17,-31), S(-14,-20), S( 5, -1), S( 0, 1) }, - { S(-48,-46), S( 1,-42), S(-14,-37), S(-23,-24) } + { S(-37,-40), S(-4 ,-21), S( -6,-26), S(-16, -8) }, + { S(-11,-26), S( 6, -9), S( 13,-12), S( 3, 1) }, + { S(-5 ,-11), S( 15, -1), S( -4, -1), S( 12, 7) }, + { S(-4 ,-14), S( 8, -4), S( 18, 0), S( 27, 12) }, + { S(-8 ,-12), S( 20, -1), S( 15,-10), S( 22, 11) }, + { S(-11,-21), S( 4, 4), S( 1, 3), S( 8, 4) }, + { S(-12,-22), S(-10,-14), S( 4, -1), S( 0, 1) }, + { S(-34,-32), S( 1,-29), S(-10,-26), S(-16,-17) } }, { // Rook { S(-31, -9), S(-20,-13), S(-14,-10), S(-5, -9) }, diff --git a/src/search.cpp b/src/search.cpp index 7abffb87..6cc115fc 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -1233,10 +1233,10 @@ moves_loop: // When in check, search starts from here r++; // Decrease/increase reduction for moves with a good/bad history (~30 Elo) - // If we are not in check use statScore, if we are in check + // If we are not in check use statScore, if we are in check // use sum of main history and first continuation history with an offset if (ss->inCheck) - r -= (thisThread->mainHistory[us][from_to(move)] + r -= (thisThread->mainHistory[us][from_to(move)] + (*contHist[0])[movedPiece][to_sq(move)] - 4333) / 16384; else r -= ss->statScore / 14884; -- 2.39.2