1
0
Fork 0
mirror of https://github.com/sockspls/badfish synced 2025-04-30 16:53:09 +00:00

Almost passed tuning attempts

Collect and give a second try to some almost passed tuning attempts and
one-line tweaks from the last month.

Passed STC

LLR: 3.07 (-2.94,2.94) [0.00,4.00]
Total: 15124 W: 2974 L: 2756 D: 9394

And LTC

LLR: 2.95 (-2.94,2.94) [0.00,4.00]
Total: 21577 W: 3507 L: 3289 D: 14781

Bench: 8855226

Resolves #464
This commit is contained in:
Stefano80 2015-10-20 19:46:06 -07:00 committed by Gary Linscott
parent ecc5ff6693
commit 328d314f2f
4 changed files with 36 additions and 35 deletions

View file

@ -126,19 +126,19 @@ namespace {
// friendly pieces. // friendly pieces.
const Score MobilityBonus[][32] = { const Score MobilityBonus[][32] = {
{}, {}, {}, {},
{ S(-68,-49), S(-46,-33), S(-3,-12), S( 5, -4), S( 9, 11), S(15, 16), // Knights { S(-70,-52), S(-52,-37), S( -7,-17), S( 0, -6), S( 8, 5), S( 16, 9), // Knights
S( 23, 27), S( 33, 28), S(37, 29) }, S( 23, 20), S( 31, 21), S( 36, 22) },
{ S(-49,-44), S(-23,-16), S(16, 1), S(29, 16), S(40, 25), S(51, 34), // Bishops { S(-49,-44), S(-22,-13), S( 16, 0), S( 27, 11), S( 38, 19), S( 52, 34), // Bishops
S( 55, 43), S( 61, 49), S(64, 51), S(68, 52), S(73, 55), S(75, 60), S( 56, 44), S( 65, 47), S( 67, 51), S( 73, 56), S( 81, 59), S( 83, 69),
S( 80, 65), S( 86, 66) }, S( 95, 72), S(100, 75) },
{ S(-50,-57), S(-28,-22), S(-11, 7), S(-1, 29), S( 0, 39), S( 1, 46), // Rooks { S(-49,-57), S(-22,-14), S(-10, 18), S( -5, 39), S( -4, 50), S( -2, 58), // Rooks
S( 10, 66), S( 16, 79), S(22, 86), S(23,103), S(30,109), S(33,111), S( 6, 78), S( 11, 86), S( 17, 92), S( 19,103), S( 26,111), S( 27,115),
S( 37,115), S( 38,119), S(48,124) }, S( 36,119), S( 41,121), S( 50,122) },
{ S(-43,-30), S(-27,-15), S( 1, -5), S( 2, -3), S(14, 10), S(18, 24), // Queens { S(-41,-24), S(-26, -8), S( 0, 6), S( 2, 14), S( 12, 27), S( 21, 40), // Queens
S( 20, 27), S( 33, 37), S(33, 38), S(34, 43), S(40, 46), S(43, 56), S( 22, 45), S( 37, 55), S( 40, 57), S( 43, 63), S( 50, 68), S( 52, 74),
S( 46, 61), S( 52, 63), S(52, 63), S(57, 65), S(60, 70), S(61, 74), S( 56, 80), S( 66, 84), S( 68, 85), S( 69, 88), S( 71, 92), S( 72, 94),
S( 67, 80), S( 76, 82), S(77, 88), S(82, 94), S(86, 95), S(90, 96), S( 80, 96), S( 89, 98), S( 94,101), S(102,113), S(106,114), S(107,116),
S( 94, 99), S( 96,100), S(99,111), S(99,112) } S(112,125), S(113,127), S(117,137), S(122,143) }
}; };
// Outpost[knight/bishop][supported by pawn] contains bonuses for knights and // Outpost[knight/bishop][supported by pawn] contains bonuses for knights and
@ -172,8 +172,8 @@ namespace {
// PassedFile[File] contains a bonus according to the file of a passed pawn. // PassedFile[File] contains a bonus according to the file of a passed pawn.
const Score PassedFile[] = { const Score PassedFile[] = {
S( 14, 13), S( 2, 5), S(-3, -4), S(-19, -14), S( 12, 10), S( 3, 10), S( 1, -8), S(-27, -12),
S(-19, -14), S(-3, -4), S( 2, 5), S( 14, 13) S(-27, -12), S( 1, -8), S( 3, 10), S( 12, 10)
}; };
const Score ThreatenedByHangingPawn = S(40, 60); const Score ThreatenedByHangingPawn = S(40, 60);
@ -414,7 +414,8 @@ namespace {
{ {
// ...and then remove squares not supported by another enemy piece // ...and then remove squares not supported by another enemy piece
b &= ei.attackedBy[Them][PAWN] | ei.attackedBy[Them][KNIGHT] b &= ei.attackedBy[Them][PAWN] | ei.attackedBy[Them][KNIGHT]
| ei.attackedBy[Them][BISHOP] | ei.attackedBy[Them][ROOK]; | ei.attackedBy[Them][BISHOP] | ei.attackedBy[Them][ROOK]
| ei.attackedBy[Them][KING];
if (b) if (b)
attackUnits += QueenContactCheck * popcount<Max15>(b); attackUnits += QueenContactCheck * popcount<Max15>(b);

View file

@ -28,7 +28,7 @@ class Position;
namespace Eval { namespace Eval {
const Value Tempo = Value(17); // Must be visible to search const Value Tempo = Value(20); // Must be visible to search
void init(); void init();
std::string trace(const Position& pos); std::string trace(const Position& pos);

View file

@ -31,28 +31,28 @@ namespace {
// Polynomial material imbalance parameters // Polynomial material imbalance parameters
// pair pawn knight bishop rook queen // pair pawn knight bishop rook queen
const int Linear[6] = { 1756, -164, -1067, -160, 234, -137 }; const int Linear[6] = { 1667, -168, -1027, -166, 238, -138 };
const int QuadraticOurs[][PIECE_TYPE_NB] = { const int QuadraticOurs[][PIECE_TYPE_NB] = {
// OUR PIECES // OUR PIECES
// pair pawn knight bishop rook queen // pair pawn knight bishop rook queen
{ 0 }, // Bishop pair { 0 }, // Bishop pair
{ 39, 2 }, // Pawn { 40, 2 }, // Pawn
{ 35, 271, -4 }, // Knight OUR PIECES { 32, 255, -3 }, // Knight OUR PIECES
{ 0, 105, 4, 0 }, // Bishop { 0, 104, 4, 0 }, // Bishop
{ -27, -2, 46, 100, -141 }, // Rook { -26, -2, 47, 105, -149 }, // Rook
{-177, 25, 129, 142, -137, 0 } // Queen {-185, 24, 122, 137, -134, 0 } // Queen
}; };
const int QuadraticTheirs[][PIECE_TYPE_NB] = { const int QuadraticTheirs[][PIECE_TYPE_NB] = {
// THEIR PIECES // THEIR PIECES
// pair pawn knight bishop rook queen // pair pawn knight bishop rook queen
{ 0 }, // Bishop pair { 0 }, // Bishop pair
{ 37, 0 }, // Pawn { 36, 0 }, // Pawn
{ 10, 62, 0 }, // Knight OUR PIECES { 9, 63, 0 }, // Knight OUR PIECES
{ 57, 64, 39, 0 }, // Bishop { 59, 65, 42, 0 }, // Bishop
{ 50, 40, 23, -22, 0 }, // Rook { 46, 39, 24, -24, 0 }, // Rook
{ 98, 105, -39, 141, 274, 0 } // Queen { 101, 100, -37, 141, 268, 0 } // Queen
}; };
// Endgame evaluation and scaling functions are accessed directly and not through // Endgame evaluation and scaling functions are accessed directly and not through

View file

@ -64,7 +64,7 @@ namespace {
enum NodeType { Root, PV, NonPV }; enum NodeType { Root, PV, NonPV };
// Razoring and futility margin based on depth // Razoring and futility margin based on depth
Value razor_margin(Depth d) { return Value(512 + 32 * d); } int razor_margin[4] = {483, 570, 603, 554};
Value futility_margin(Depth d) { return Value(200 * d); } Value futility_margin(Depth d) { return Value(200 * d); }
// Futility and reductions lookup tables, initialized at startup // Futility and reductions lookup tables, initialized at startup
@ -149,7 +149,7 @@ namespace {
void Search::init() { void Search::init() {
const double K[][2] = {{ 0.83, 2.25 }, { 0.50, 3.00 }}; const double K[][2] = {{ 0.799, 2.281 }, { 0.484, 3.023 }};
for (int pv = 0; pv <= 1; ++pv) for (int pv = 0; pv <= 1; ++pv)
for (int imp = 0; imp <= 1; ++imp) for (int imp = 0; imp <= 1; ++imp)
@ -393,7 +393,7 @@ void Thread::search(bool isMainThread) {
// Reset aspiration window starting size // Reset aspiration window starting size
if (depth >= 5 * ONE_PLY) if (depth >= 5 * ONE_PLY)
{ {
delta = Value(16); delta = Value(18);
alpha = std::max(rootMoves[PVIdx].previousScore - delta,-VALUE_INFINITE); alpha = std::max(rootMoves[PVIdx].previousScore - delta,-VALUE_INFINITE);
beta = std::min(rootMoves[PVIdx].previousScore + delta, VALUE_INFINITE); beta = std::min(rootMoves[PVIdx].previousScore + delta, VALUE_INFINITE);
} }
@ -453,7 +453,7 @@ void Thread::search(bool isMainThread) {
else else
break; break;
delta += delta / 2; delta += delta / 4 + 5;
assert(alpha >= -VALUE_INFINITE && beta <= VALUE_INFINITE); assert(alpha >= -VALUE_INFINITE && beta <= VALUE_INFINITE);
} }
@ -690,14 +690,14 @@ namespace {
// Step 6. Razoring (skipped when in check) // Step 6. Razoring (skipped when in check)
if ( !PvNode if ( !PvNode
&& depth < 4 * ONE_PLY && depth < 4 * ONE_PLY
&& eval + razor_margin(depth) <= alpha && eval + razor_margin[depth] <= alpha
&& ttMove == MOVE_NONE) && ttMove == MOVE_NONE)
{ {
if ( depth <= ONE_PLY if ( depth <= ONE_PLY
&& eval + razor_margin(3 * ONE_PLY) <= alpha) && eval + razor_margin[3 * ONE_PLY] <= alpha)
return qsearch<NonPV, false>(pos, ss, alpha, beta, DEPTH_ZERO); return qsearch<NonPV, false>(pos, ss, alpha, beta, DEPTH_ZERO);
Value ralpha = alpha - razor_margin(depth); Value ralpha = alpha - razor_margin[depth];
Value v = qsearch<NonPV, false>(pos, ss, ralpha, ralpha+1, DEPTH_ZERO); Value v = qsearch<NonPV, false>(pos, ss, ralpha, ralpha+1, DEPTH_ZERO);
if (v <= ralpha) if (v <= ralpha)
return v; return v;