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

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 <mcostalba@gmail.com>
This commit is contained in:
Marco Costalba 2010-04-21 20:35:47 +01:00
parent 97f5d19bdc
commit 11207f7c1f
5 changed files with 6 additions and 33 deletions

View file

@ -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();

View file

@ -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)) {

View file

@ -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;
}

View file

@ -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)));
}

View file

@ -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
};