mirror of
https://github.com/sockspls/badfish
synced 2025-07-13 20:49:15 +00:00
remove KNPK endgame code
In more than 100k local KNPK games, there is no discernible difference between master and master with this endgame removed: master:42971, patch:42973, draws: 3969. Removal does not seem to regress in normal games. STC LLR: 2.94 (-2.94,2.94) {-1.50,0.50} Total: 46390 W: 8998 L: 8884 D: 28508 Ptnml(0-2): 707, 5274, 11163, 5300, 751 https://tests.stockfishchess.org/tests/view/5e83b18ee42a5c3b3ca2ef02 LTC LLR: 2.94 (-2.94,2.94) {-1.50,0.50} Total: 44768 W: 5863 L: 5814 D: 33091 Ptnml(0-2): 251, 3918, 14028, 3905, 282 https://tests.stockfishchess.org/tests/view/5e84a82a4411759d9d0984f4 In tests with a book of endgames that can convert into KNPK, no significant difference can be seen either ``` TC 1.0+0.01 Score of patch vs master: 6131 - 6188 - 27681 [0.499] 40000 Elo difference: -0.5 +/- 1.9, LOS: 30.4 %, DrawRatio: 69.2 % TC 2.0+0.02 Score of patch vs master: 5740 - 5741 - 28519 [0.500] 40000 Elo difference: -0.0 +/- 1.8, LOS: 49.6 %, DrawRatio: 71.3 % `` closes https://github.com/official-stockfish/Stockfish/pull/2611 Bench 4512059
This commit is contained in:
parent
c14f4877cf
commit
3cb1c6c3c6
2 changed files with 0 additions and 21 deletions
|
@ -79,7 +79,6 @@ namespace Endgames {
|
||||||
add<KQKR>("KQKR");
|
add<KQKR>("KQKR");
|
||||||
add<KNNKP>("KNNKP");
|
add<KNNKP>("KNNKP");
|
||||||
|
|
||||||
add<KNPK>("KNPK");
|
|
||||||
add<KRPKR>("KRPKR");
|
add<KRPKR>("KRPKR");
|
||||||
add<KRPKB>("KRPKB");
|
add<KRPKB>("KRPKB");
|
||||||
add<KBPKB>("KBPKB");
|
add<KBPKB>("KBPKB");
|
||||||
|
@ -713,25 +712,6 @@ ScaleFactor Endgame<KBPKN>::operator()(const Position& pos) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// KNP vs K. There is a single rule: if the pawn is a rook pawn on the 7th rank
|
|
||||||
/// and the defending king prevents the pawn from advancing, the position is drawn.
|
|
||||||
template<>
|
|
||||||
ScaleFactor Endgame<KNPK>::operator()(const Position& pos) const {
|
|
||||||
|
|
||||||
assert(verify_material(pos, strongSide, KnightValueMg, 1));
|
|
||||||
assert(verify_material(pos, weakSide, VALUE_ZERO, 0));
|
|
||||||
|
|
||||||
// Assume strongSide is white and the pawn is on files A-D
|
|
||||||
Square pawnSq = normalize(pos, strongSide, pos.square<PAWN>(strongSide));
|
|
||||||
Square weakKingSq = normalize(pos, strongSide, pos.square<KING>(weakSide));
|
|
||||||
|
|
||||||
if (pawnSq == SQ_A7 && distance(SQ_A8, weakKingSq) <= 1)
|
|
||||||
return SCALE_FACTOR_DRAW;
|
|
||||||
|
|
||||||
return SCALE_FACTOR_NONE;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/// KP vs KP. This is done by removing the weakest side's pawn and probing the
|
/// KP vs KP. This is done by removing the weakest side's pawn and probing the
|
||||||
/// KP vs K bitbase: If the weakest side has a draw without the pawn, it probably
|
/// KP vs K bitbase: If the weakest side has a draw without the pawn, it probably
|
||||||
/// has at least a draw with the pawn as well. The exception is when the stronger
|
/// has at least a draw with the pawn as well. The exception is when the stronger
|
||||||
|
|
|
@ -57,7 +57,6 @@ enum EndgameCode {
|
||||||
KBPKB, // KBP vs KB
|
KBPKB, // KBP vs KB
|
||||||
KBPPKB, // KBPP vs KB
|
KBPPKB, // KBPP vs KB
|
||||||
KBPKN, // KBP vs KN
|
KBPKN, // KBP vs KN
|
||||||
KNPK, // KNP vs K
|
|
||||||
KPKP // KP vs KP
|
KPKP // KP vs KP
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue