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: 8502826pull/358/head
parent
db05b1f9f5
commit
3d58092ec1
|
@ -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
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue