mirror of
https://github.com/sockspls/badfish
synced 2025-04-30 00:33:09 +00:00
Tidy up middle game specific evaluation
Also add starting position to benchmarks. No functional change. Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
parent
597ef38c39
commit
3e0dc9ee84
2 changed files with 18 additions and 27 deletions
|
@ -34,7 +34,8 @@
|
||||||
//// Variables
|
//// Variables
|
||||||
////
|
////
|
||||||
|
|
||||||
const std::string BenchmarkPositions[15] = {
|
const std::string BenchmarkPositions[16] = {
|
||||||
|
"rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1"
|
||||||
"r4rk1/1b2qppp/p1n1p3/1p6/1b1PN3/3BRN2/PP3PPP/R2Q2K1 b - - 7 16",
|
"r4rk1/1b2qppp/p1n1p3/1p6/1b1PN3/3BRN2/PP3PPP/R2Q2K1 b - - 7 16",
|
||||||
"4r1k1/ppq3pp/3b4/2pP4/2Q1p3/4B1P1/PP5P/R5K1 b - - 0 20",
|
"4r1k1/ppq3pp/3b4/2pP4/2Q1p3/4B1P1/PP5P/R5K1 b - - 0 20",
|
||||||
"4rrk1/pp1n3p/3q2pQ/2p1pb2/2PP4/2P3N1/P2B2PP/4RRK1 b - - 7 19",
|
"4rrk1/pp1n3p/3q2pQ/2p1pb2/2PP4/2P3N1/P2B2PP/4RRK1 b - - 7 19",
|
||||||
|
@ -116,7 +117,7 @@ void benchmark(const std::string& commandLine) {
|
||||||
}
|
}
|
||||||
fenFile.close();
|
fenFile.close();
|
||||||
} else
|
} else
|
||||||
for (int i = 0; i < 15; i++)
|
for (int i = 0; i < 16; i++)
|
||||||
positions.push_back(std::string(BenchmarkPositions[i]));
|
positions.push_back(std::string(BenchmarkPositions[i]));
|
||||||
|
|
||||||
std::vector<std::string>::iterator it;
|
std::vector<std::string>::iterator it;
|
||||||
|
|
|
@ -419,36 +419,26 @@ Value evaluate(const Position &pos, EvalInfo &ei, int threadID) {
|
||||||
&& ( (factor[WHITE] == SCALE_FACTOR_NORMAL && ei.egValue > Value(0))
|
&& ( (factor[WHITE] == SCALE_FACTOR_NORMAL && ei.egValue > Value(0))
|
||||||
|| (factor[BLACK] == SCALE_FACTOR_NORMAL && ei.egValue < Value(0))))
|
|| (factor[BLACK] == SCALE_FACTOR_NORMAL && ei.egValue < Value(0))))
|
||||||
{
|
{
|
||||||
if (pos.non_pawn_material(WHITE) + pos.non_pawn_material(BLACK) == 2*BishopValueMidgame)
|
ScaleFactor sf;
|
||||||
|
|
||||||
|
// Only the two bishops ?
|
||||||
|
if ( pos.non_pawn_material(WHITE) == BishopValueMidgame
|
||||||
|
&& pos.non_pawn_material(BLACK) == BishopValueMidgame)
|
||||||
{
|
{
|
||||||
// Only the two bishops
|
// Check for KBP vs KB with only a single pawn that is almost
|
||||||
if (pos.pawn_count(WHITE) + pos.pawn_count(BLACK) == 1)
|
// certainly a draw or at least two pawns.
|
||||||
{
|
bool one_pawn = (pos.pawn_count(WHITE) + pos.pawn_count(BLACK) == 1);
|
||||||
// KBP vs KB with only a single pawn; almost certainly a draw.
|
sf = one_pawn ? ScaleFactor(8) : ScaleFactor(32);
|
||||||
if (factor[WHITE] == SCALE_FACTOR_NORMAL)
|
|
||||||
factor[WHITE] = ScaleFactor(8);
|
|
||||||
if (factor[BLACK] == SCALE_FACTOR_NORMAL)
|
|
||||||
factor[BLACK] = ScaleFactor(8);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
// Endgame with opposite-colored bishops, but also other pieces. Still
|
||||||
// At least two pawns
|
// a bit drawish, but not as drawish as with only the two bishops.
|
||||||
|
sf = ScaleFactor(50);
|
||||||
|
|
||||||
if (factor[WHITE] == SCALE_FACTOR_NORMAL)
|
if (factor[WHITE] == SCALE_FACTOR_NORMAL)
|
||||||
factor[WHITE] = ScaleFactor(32);
|
factor[WHITE] = sf;
|
||||||
if (factor[BLACK] == SCALE_FACTOR_NORMAL)
|
if (factor[BLACK] == SCALE_FACTOR_NORMAL)
|
||||||
factor[BLACK] = ScaleFactor(32);
|
factor[BLACK] = sf;
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Endgame with opposite-colored bishops, but also other pieces.
|
|
||||||
// Still a bit drawish, but not as drawish as with only the two
|
|
||||||
// bishops.
|
|
||||||
if (factor[WHITE] == SCALE_FACTOR_NORMAL)
|
|
||||||
factor[WHITE] = ScaleFactor(50);
|
|
||||||
if (factor[BLACK] == SCALE_FACTOR_NORMAL)
|
|
||||||
factor[BLACK] = ScaleFactor(50);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Interpolate between the middle game and the endgame score, and
|
// Interpolate between the middle game and the endgame score, and
|
||||||
|
|
Loading…
Add table
Reference in a new issue