As this KRP vs KR endgame contains more than 50% won positions it is very difficult to find patterns that rule out all the winning positions to be left with the draws. Here instead I try to find positive rules that mark the draw and announce a UNKNOWN if no rules match.
To find those patterns the chess theory helps. The characteristics of the Philidor position are
- the defending king is on the queening square of the pawn or adjacent to it
- the opposing pawn has not yet reached its sixth rank
- the opposing king is beyond the defender's third rank
- the defender's rook is on the third rank
Draw
My first unverified version of the patterns was very buggy. I corrected the patterns and added also some rules when the attacker pawn is not very advanced. The engine has now a good understanding of the Philidor position and will try to reach it when losing or try to prevent it when winning.
This is the final performance of the fixed code compared with the first version
iCE 0.2 iCE 0.3
Incorrect Draws : 83.061 0
Spotted Draws : 1.551.216 9.012.914
Missed Draws : 210.404.306 202.942.608
Spotted Wins : 271.313.885 271.396.946
Spotted Draws : 1.551.216 9.012.914
Missed Draws : 210.404.306 202.942.608
Spotted Wins : 271.313.885 271.396.946
I now have to have a look at the evaluation of this endgame to spot the Lucena position and give it a higher score so the engine will play / exchange pieces towards it when winning.
No comments:
Post a Comment