mirror of
https://github.com/HChaZZY/Stockfish.git
synced 2025-12-26 20:16:14 +08:00
Retire KBBKN endgame
As pointed out by Joona, Lucas and otehr people in the forum, this endgame is not a known, there are many positions where it takes more than 50 moves to claim the win and becasue exact rules is not possible better to retire and allow the search to workout the endgame for us. bench: 8502826
This commit is contained in:
@@ -118,7 +118,6 @@ Endgames::Endgames() {
|
||||
add<KRKN>("KRKN");
|
||||
add<KQKP>("KQKP");
|
||||
add<KQKR>("KQKR");
|
||||
add<KBBKN>("KBBKN");
|
||||
|
||||
add<KNPK>("KNPK");
|
||||
add<KNPKB>("KNPKB");
|
||||
@@ -348,29 +347,6 @@ Value Endgame<KQKR>::operator()(const Position& pos) const {
|
||||
}
|
||||
|
||||
|
||||
/// KBB vs KN. This is almost always a win. We try to push the enemy king to a corner
|
||||
/// and away from his knight. For a reference of this difficult endgame see:
|
||||
/// en.wikipedia.org/wiki/Chess_endgame#Effect_of_tablebases_on_endgame_theory
|
||||
|
||||
template<>
|
||||
Value Endgame<KBBKN>::operator()(const Position& pos) const {
|
||||
|
||||
assert(verify_material(pos, strongSide, 2 * BishopValueMg, 0));
|
||||
assert(verify_material(pos, weakSide, KnightValueMg, 0));
|
||||
|
||||
Square winnerKSq = pos.king_square(strongSide);
|
||||
Square loserKSq = pos.king_square(weakSide);
|
||||
Square knightSq = pos.list<KNIGHT>(weakSide)[0];
|
||||
|
||||
Value result = VALUE_KNOWN_WIN
|
||||
+ PushToCorners[loserKSq]
|
||||
+ PushClose[square_distance(winnerKSq, loserKSq)]
|
||||
+ PushAway[square_distance(loserKSq, knightSq)];
|
||||
|
||||
return strongSide == pos.side_to_move() ? result : -result;
|
||||
}
|
||||
|
||||
|
||||
/// Some cases of trivial draws
|
||||
template<> Value Endgame<KNNK>::operator()(const Position&) const { return VALUE_DRAW; }
|
||||
template<> Value Endgame<KmmKm>::operator()(const Position&) const { return VALUE_DRAW; }
|
||||
|
||||
@@ -42,7 +42,6 @@ enum EndgameType {
|
||||
KRKN, // KR vs KN
|
||||
KQKP, // KQ vs KP
|
||||
KQKR, // KQ vs KR
|
||||
KBBKN, // KBB vs KN
|
||||
KmmKm, // K and two minors vs K and one or two minors
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user