From: Marco Costalba Date: Wed, 21 Apr 2010 19:35:47 +0000 (+0100) Subject: Revert scale factor in pawn evaluation X-Git-Url: https://git.sesse.net/?p=stockfish;a=commitdiff_plain;h=11207f7c1f943aa02bccbfa5eff6fdd18859721f Revert scale factor in pawn evaluation It simply doesn't seems to work both in direct matches and in balance tuning. So revert the idea. Signed-off-by: Marco Costalba --- diff --git a/src/evaluate.cpp b/src/evaluate.cpp index 5f86227c..9bb6c1c0 100644 --- a/src/evaluate.cpp +++ b/src/evaluate.cpp @@ -430,13 +430,6 @@ Value do_evaluate(const Position& pos, EvalInfo& ei, int threadID) { factor[BLACK] = sf; } - // If we don't already have an unusual scale factor, use pawn - // evaluation ones. - if (factor[WHITE] == SCALE_FACTOR_NORMAL) - factor[WHITE] = ei.pi->scale_factor(WHITE); - if (factor[BLACK] == SCALE_FACTOR_NORMAL) - factor[BLACK] = ei.pi->scale_factor(BLACK); - // Interpolate between the middle game and the endgame score Color stm = pos.side_to_move(); diff --git a/src/material.cpp b/src/material.cpp index f0ee5f68..65c8c862 100644 --- a/src/material.cpp +++ b/src/material.cpp @@ -304,7 +304,7 @@ MaterialInfo* MaterialInfoTable::get_material_info(const Position& pos) { { if ( pos.non_pawn_material(c) == pos.non_pawn_material(opposite_color(c)) || pos.non_pawn_material(c) < RookValueMidgame) - mi->factor[c] = SCALE_FACTOR_ZERO; + mi->factor[c] = 0; else { switch (pos.piece_count(c, BISHOP)) { diff --git a/src/pawns.cpp b/src/pawns.cpp index 65bb3dba..df7a0a2d 100644 --- a/src/pawns.cpp +++ b/src/pawns.cpp @@ -70,13 +70,6 @@ namespace { S(34,68), S(83,166), S(0, 0), S( 0, 0) }; - // UnpairedPawnsTable[] gives a score according to the number - // of panws that do not have an enemy pawn in front of them. - const int UnpairedPawnsTable[16] = { 32, 48, 64, 80, 96, 112, 128, 128, 128 }; - - // PawnsQtyTable[] gives a score according to the number of panws - const int PawnsQtyTable[16] = { 16, 16, 16, 16, 16, 16, 16, 16, 16 }; - // Pawn storm tables for positions with opposite castling const int QStormTable[64] = { 0, 0, 0, 0, 0, 0, 0, 0, @@ -194,7 +187,6 @@ Score PawnInfoTable::evaluate_pawns(const Position& pos, Bitboard ourPawns, int bonus; Score value = make_score(0, 0); const Square* ptr = pos.piece_list_begin(Us, PAWN); - int unpairedPawnsNum = pos.piece_count(Us, PAWN); // Initialize pawn storm scores by giving bonuses for open files for (f = FILE_A; f <= FILE_H; f++) @@ -219,10 +211,6 @@ Score PawnInfoTable::evaluate_pawns(const Position& pos, Bitboard ourPawns, doubled = ourPawns & squares_behind(Us, s); opposed = theirPawns & squares_in_front_of(Us, s); - // Decrease number of unpaired pawns - if (opposed) - unpairedPawnsNum--; - // We calculate kingside and queenside pawn storm // scores for both colors. These are used when evaluating // middle game positions with opposite side castling. @@ -349,9 +337,6 @@ Score PawnInfoTable::evaluate_pawns(const Position& pos, Bitboard ourPawns, value += CandidateBonus[relative_rank(Us, s)]; } - // Calculate a scale factor to be used to evaluate if position is drawish - pi->factor[Us] = UnpairedPawnsTable[unpairedPawnsNum] * PawnsQtyTable[pos.piece_count(Us, PAWN)] / 16; - return value; } diff --git a/src/pawns.h b/src/pawns.h index 5939253b..2dc86684 100644 --- a/src/pawns.h +++ b/src/pawns.h @@ -26,7 +26,6 @@ //// #include "bitboard.h" -#include "scale.h" #include "value.h" //// @@ -53,7 +52,6 @@ public: Value queenside_storm_value(Color c) const; Bitboard pawn_attacks(Color c) const; Bitboard passed_pawns() const; - ScaleFactor scale_factor(Color c) const; int file_is_half_open(Color c, File f) const; int has_open_file_to_left(Color c, File f) const; int has_open_file_to_right(Color c, File f) const; @@ -69,7 +67,8 @@ private: Square kingSquares[2]; Score value; int16_t ksStormValue[2], qsStormValue[2]; - uint8_t halfOpenFiles[2], kingShelters[2], factor[2]; + uint8_t halfOpenFiles[2]; + uint8_t kingShelters[2]; }; /// The PawnInfoTable class represents a pawn hash table. It is basically @@ -117,10 +116,6 @@ inline Value PawnInfo::queenside_storm_value(Color c) const { return Value(qsStormValue[c]); } -inline ScaleFactor PawnInfo::scale_factor(Color c) const { - return ScaleFactor(factor[c]); -} - inline int PawnInfo::file_is_half_open(Color c, File f) const { return (halfOpenFiles[c] & (1 << int(f))); } diff --git a/src/scale.h b/src/scale.h index bcf37dd4..a02cc764 100644 --- a/src/scale.h +++ b/src/scale.h @@ -33,10 +33,10 @@ //// enum ScaleFactor { - SCALE_FACTOR_ZERO = 0, + SCALE_FACTOR_ZERO = 0, SCALE_FACTOR_NORMAL = 64, - SCALE_FACTOR_MAX = 128, - SCALE_FACTOR_NONE = 255 + SCALE_FACTOR_MAX = 128, + SCALE_FACTOR_NONE = 255 };