mirror of
https://github.com/sockspls/badfish
synced 2025-04-30 16:53: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:
parent
97f5d19bdc
commit
11207f7c1f
5 changed files with 6 additions and 33 deletions
|
@ -430,13 +430,6 @@ Value do_evaluate(const Position& pos, EvalInfo& ei, int threadID) {
|
||||||
factor[BLACK] = sf;
|
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
|
// Interpolate between the middle game and the endgame score
|
||||||
Color stm = pos.side_to_move();
|
Color stm = pos.side_to_move();
|
||||||
|
|
||||||
|
|
|
@ -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))
|
if ( pos.non_pawn_material(c) == pos.non_pawn_material(opposite_color(c))
|
||||||
|| pos.non_pawn_material(c) < RookValueMidgame)
|
|| pos.non_pawn_material(c) < RookValueMidgame)
|
||||||
mi->factor[c] = SCALE_FACTOR_ZERO;
|
mi->factor[c] = 0;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
switch (pos.piece_count(c, BISHOP)) {
|
switch (pos.piece_count(c, BISHOP)) {
|
||||||
|
|
|
@ -70,13 +70,6 @@ namespace {
|
||||||
S(34,68), S(83,166), S(0, 0), S( 0, 0)
|
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
|
// Pawn storm tables for positions with opposite castling
|
||||||
const int QStormTable[64] = {
|
const int QStormTable[64] = {
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
@ -194,7 +187,6 @@ Score PawnInfoTable::evaluate_pawns(const Position& pos, Bitboard ourPawns,
|
||||||
int bonus;
|
int bonus;
|
||||||
Score value = make_score(0, 0);
|
Score value = make_score(0, 0);
|
||||||
const Square* ptr = pos.piece_list_begin(Us, PAWN);
|
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
|
// Initialize pawn storm scores by giving bonuses for open files
|
||||||
for (f = FILE_A; f <= FILE_H; f++)
|
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);
|
doubled = ourPawns & squares_behind(Us, s);
|
||||||
opposed = theirPawns & squares_in_front_of(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
|
// We calculate kingside and queenside pawn storm
|
||||||
// scores for both colors. These are used when evaluating
|
// scores for both colors. These are used when evaluating
|
||||||
// middle game positions with opposite side castling.
|
// 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)];
|
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;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -26,7 +26,6 @@
|
||||||
////
|
////
|
||||||
|
|
||||||
#include "bitboard.h"
|
#include "bitboard.h"
|
||||||
#include "scale.h"
|
|
||||||
#include "value.h"
|
#include "value.h"
|
||||||
|
|
||||||
////
|
////
|
||||||
|
@ -53,7 +52,6 @@ public:
|
||||||
Value queenside_storm_value(Color c) const;
|
Value queenside_storm_value(Color c) const;
|
||||||
Bitboard pawn_attacks(Color c) const;
|
Bitboard pawn_attacks(Color c) const;
|
||||||
Bitboard passed_pawns() const;
|
Bitboard passed_pawns() const;
|
||||||
ScaleFactor scale_factor(Color c) const;
|
|
||||||
int file_is_half_open(Color c, File f) 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_left(Color c, File f) const;
|
||||||
int has_open_file_to_right(Color c, File f) const;
|
int has_open_file_to_right(Color c, File f) const;
|
||||||
|
@ -69,7 +67,8 @@ private:
|
||||||
Square kingSquares[2];
|
Square kingSquares[2];
|
||||||
Score value;
|
Score value;
|
||||||
int16_t ksStormValue[2], qsStormValue[2];
|
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
|
/// 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]);
|
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 {
|
inline int PawnInfo::file_is_half_open(Color c, File f) const {
|
||||||
return (halfOpenFiles[c] & (1 << int(f)));
|
return (halfOpenFiles[c] & (1 << int(f)));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue