mirror of
https://github.com/HChaZZY/Stockfish.git
synced 2025-12-16 15:16:25 +08:00
Two more parameters eliminated
RedundantRook and RedundantQueen replaced by simple variable RedundantMajor. Also the SameColor coefficient for Queen<->Queen has been set by definition to 0. The remaining 5 parameters: LinearCoefficients[ROOK] LinearCoefficients[QUEEN] QuadraticCoefficientsSameColor[ROOK][ROOK] QuadraticCoefficientsSameColor[QUEEN][ROOK] RedundantMajor are sufficient to equate the material imbalances for the 5 common material configurations of R, RR, Q, QR and QRR to any desired values simultaneously. With the chosen parameters there should be no functional change unless one side has more than 2 rooks or more than 1 queen. For example bench from the start position using the commands: ./stockfish go depth 16 produces identical output except for one extra node in the last iteration. bench: 8198094
This commit is contained in:
committed by
Marco Costalba
parent
53c04c0429
commit
52ae0efccf
@@ -35,11 +35,10 @@ namespace {
|
||||
const int NoPawnsSF[4] = { 6, 12, 32 };
|
||||
|
||||
// Polynomial material balance parameters
|
||||
const Value RedundantQueen = Value(320);
|
||||
const Value RedundantRook = Value(554);
|
||||
const Value RedundantMajor = Value(160);
|
||||
|
||||
// pair pawn knight bishop rook queen
|
||||
const int LinearCoefficients[6] = { 1852, -162, -1122, -183, 105, 26 };
|
||||
const int LinearCoefficients[6] = { 1852, -162, -1122, -183, 302, 1 };
|
||||
|
||||
const int QuadraticCoefficientsSameColor[][PIECE_TYPE_NB] = {
|
||||
// pair pawn knight bishop rook queen
|
||||
@@ -47,8 +46,8 @@ namespace {
|
||||
{ 39, 2 }, // Pawn
|
||||
{ 35, 271, -4 }, // Knight
|
||||
{ 0, 105, 4, 0 }, // Bishop
|
||||
{ -27, -2, 46, 100, 56 }, // Rook
|
||||
{ 58, 29, 83, 148, -3, -25 } // Queen
|
||||
{ -27, -2, 46, 100, -141 }, // Rook
|
||||
{ 58, 29, 83, 148, -163, 0 } // Queen
|
||||
};
|
||||
|
||||
const int QuadraticCoefficientsOppositeColor[][PIECE_TYPE_NB] = {
|
||||
@@ -106,11 +105,9 @@ namespace {
|
||||
int pt1, pt2, pc, v;
|
||||
int value = 0;
|
||||
|
||||
// Redundancy of major pieces, formula based on Kaufman's paper
|
||||
// "The Evaluation of Material Imbalances in Chess"
|
||||
if (pieceCount[Us][ROOK] > 0)
|
||||
value -= RedundantRook * (pieceCount[Us][ROOK] - 1)
|
||||
+ RedundantQueen * pieceCount[Us][QUEEN];
|
||||
// Penalty for major piece redundancy
|
||||
if (pieceCount[Us][ROOK] + pieceCount[Us][QUEEN] > 1)
|
||||
value -= RedundantMajor;
|
||||
|
||||
// Second-degree polynomial material imbalance by Tord Romstad
|
||||
for (pt1 = NO_PIECE_TYPE; pt1 <= QUEEN; ++pt1)
|
||||
|
||||
Reference in New Issue
Block a user