martinnovaak / motor

UCI chess engine written in C++
19 stars 3 forks source link

Motor can't mate #109

Open tissatussa opened 3 months ago

tissatussa commented 3 months ago

i just tested your newest Motor v0.6.0 and it seems the engine is unable to give mate, it made a draw by fifty moves rule - replay the game here.

i don't know if previous versions suffer from the same issue but you certainly should take a look at this.

btw. the game started with a fixed position after 2 moves - it's an interesting new setup and Motor acts well : it plays f4! and Nf2! which are typical for this opening.

[ i'm on Xubuntu 22.04 ]

[Event "engine vs engine"]
[Site "Holland"]
[Date "2024.07.01"]
[Round "?"]
[White "Motor v0.6.0 NN"]
[Black "4ku v4.0"]
[Result "1/2-1/2"]
[FEN "rnbqkbnr/pp1ppppp/8/2p5/4N3/8/PPPPPPPP/R1BQKBNR b KQkq - 1 2"]
[GameDuration "00:36:07"]
[PlyCount "343"]
[SetUp "1"]
[TimeControl "600+5"]

1... e6 {+0.50/25 28s} 2. f4 {-0.87/21 20s} d5 {+0.58/26 25s}
3. Nf2 {-0.73/22 14s} Nc6 {+0.36/25 23s} 4. Nf3 {-0.59/22 17s}
Nf6 {+0.37/27 24s} 5. e3 {-0.72/23 15s} Bd6 {+0.41/24 18s} 6. Bb5 {-0.76/25 18s}
Bd7 {+0.35/26 19s} 7. b3 {-0.50/22 10s} O-O {+0.31/30 49s} 8. Bb2 {-0.90/23 13s}
a6 {+0.51/28 71s} 9. Bd3 {-0.48/24 16s} b5 {+0.34/25 14s} 10. Ne5 {-0.62/24 26s}
Be8 {+0.61/25 30s} 11. O-O {-0.82/24 38s} c4 {+0.63/28 19s}
12. Be2 {-0.92/22 17s} Qc7 {+0.63/29 14s} 13. Nxc6 {-0.60/24 25s}
Bxc6 {+0.84/24 15s} 14. Bxf6 {-0.80/26 23s} gxf6 {+0.50/26 13s}
15. Ng4 {-0.88/21 12s} Be7 {+0.58/26 14s} 16. c3 {-0.85/24 25s}
Kg7 {+0.58/25 19s} 17. Rf3 {-0.75/21 10s} Rg8 {+0.61/24 11s}
18. Rh3 {-0.83/23 22s} Kh8 {+0.53/24 10s} 19. Qf1 {-1.02/22 31s}
Qd8 {+0.51/21 13s} 20. f5 {+0.04/20 16s} Rg5 {+0.56/23 13s}
21. Nh6 {0.00/22 24s} Qf8 {+0.61/23 11s} 22. Rh4 {+0.52/21 13s}
Rd8 {+0.56/24 25s} 23. g3 {+0.70/21 9.6s} Qg7 {+0.44/25 19s}
24. Qh3 {+1.05/24 22s} e5 {+0.52/27 53s} 25. Qg2 {+0.63/23 19s}
Ba8 {+0.54/24 10s} 26. Bf3 {+0.64/23 14s} Ba3 {+0.49/25 7.6s}
27. e4 {+1.71/22 31s} d4 {+0.24/25 8.0s} 28. bxc4 {+1.84/22 21s}
bxc4 {+0.28/28 14s} 29. Qf1 {+2.18/24 9.7s} d3 {+0.60/28 11s}
30. Rb1 {+2.08/26 12s} Bc5+ {+0.35/27 9.3s} 31. Kh1 {+2.78/26 9.3s}
Bc6 {+0.24/27 7.7s} 32. Qh3 {+3.23/24 9.2s} a5 {-0.01/24 6.4s}
33. Kg2 {+3.64/25 6.7s} a4 {-0.86/23 5.8s} 34. Ng4 {+4.83/26 11s}
Be7 {-1.58/27 4.9s} 35. Rb6 {+5.13/25 8.4s} Bd7 {-1.86/29 5.1s}
36. Rh6 {+6.40/27 8.0s} Rxg4 {-1.80/30 5.8s} 37. Bxg4 {+6.38/24 7.4s}
Rc8 {-2.10/27 5.1s} 38. Bd1 {+6.59/25 8.7s} Bd8 {-2.22/29 8.8s}
39. Ra6 {+8.78/28 22s} Bb5 {-3.43/28 16s} 40. Ra7 {+10.21/24 5.2s}
Bc6 {-3.21/33 19s} 41. Rg6 {+11.08/22 6.1s} Qf8 {-3.31/29 3.9s}
42. Qh5 {+12.58/22 8.2s} Bxe4+ {-5.08/27 3.7s} 43. Bf3 {+12.78/24 7.6s}
Bxf3+ {-6.25/30 4.8s} 44. Kxf3 {+13.49/25 7.6s} Rc7 {-7.72/31 20s}
45. Rxc7 {+14.88/24 7.9s} Bxc7 {-7.14/30 12s} 46. Rxf6 {+12.00/22 6.1s}
Kg7 {-7.98/28 9.6s} 47. Qh6+ {+23.57/22 5.8s} Kg8 {-8.44/30 3.7s}
48. Qxf8+ {+24.36/23 7.8s} Kxf8 {-8.36/28 4.1s} 49. Rc6 {+24.58/23 5.0s}
Bd8 {-9.11/30 6.3s} 50. Ke4 {+25.15/24 18s} a3 {-9.25/26 3.6s}
51. Rxc4 {+25.44/23 5.7s} Kg7 {-9.18/26 5.9s} 52. Ra4 {+26.47/22 5.5s}
Be7 {-10.01/24 4.1s} 53. Kxd3 {+27.40/23 4.8s} h5 {-10.09/25 3.0s}
54. Ke4 {+28.67/25 7.4s} Bg5 {-11.06/26 5.3s} 55. Rxa3 {+31.14/21 5.1s}
Bxd2 {-12.39/28 7.2s} 56. Kxe5 {+31.83/21 4.8s} Be1 {-12.17/26 3.4s}
57. c4 {+33.32/21 5.3s} Bf2 {-14.65/28 5.1s} 58. Rb3 {+34.80/21 5.2s}
h4 {-16.19/30 3.4s} 59. f6+ {+40.40/23 4.4s} Kh6 {-22.78/32 4.6s}
60. gxh4 {+44.31/23 5.5s} Bc5 {-25.60/36 6.8s} 61. Rb7 {+51.37/23 5.6s}
Bg1 {-27.09/36 5.1s} 62. Rxf7 {+55.51/24 4.8s} Bf2 {-299.78/38 3.1s}
63. Rf8 {+75.19/20 30s} Kh7 {-299.83/36 7.7s} 64. Ke6 {+199.79/6 0.001s}
Bc5 {-299.86/39 3.6s} 65. Rc8 {+199.85/4 0s} Bb4 {-299.88/36 3.4s}
66. f7 {+199.85/4 0s} Kg7 {-299.88/36 5.2s} 67. Rg8+ {+199.85/4 0s}
Kh6 {-299.90/34 6.1s} 68. f8=Q+ {+199.85/4 0.001s} Bxf8 {-299.92/35 4.0s}
69. Rxf8 {+199.85/4 0s} Kh5 {-299.96/36 4.7s} 70. Rg8 {+199.85/4 0s}
Kxh4 {-299.92/37 6.0s} 71. Rg3 {+199.85/4 0s} Kh5 {-299.94/39 4.5s}
72. Kf6 {+199.85/4 0s} Kh4 {-299.96/40 4.1s} 73. Kf5 {+199.85/4 0s}
Kh5 {-299.98/41 3.7s} 74. Rg8 {+199.85/4 0s} Kh6 {-299.92/39 4.3s}
75. Kf4 {+199.85/4 0s} Kh7 {-299.88/39 3.9s} 76. Rg3 {+199.83/4 0s}
Kh6 {-299.90/42 4.7s} 77. Rg5 {+199.85/4 0.001s} Kh7 {-299.92/44 12s}
78. Ke4 {+199.81/4 0s} Kh6 {-299.92/38 4.3s} 79. Kd5 {+199.81/4 0.001s}
Kxg5 {-299.78/35 4.7s} 80. c5 {+199.79/22 6.4s} Kf6 {-299.84/36 3.7s}
81. c6 {+199.79/4 0s} Ke7 {-299.84/36 3.6s} 82. Ke5 {+199.79/4 0s}
Kd8 {-299.86/37 3.6s} 83. Kd6 {+199.79/4 0.001s} Kc8 {-299.88/37 3.6s}
84. c7 {+199.79/4 0s} Kb7 {-299.90/38 6.9s} 85. Kd7 {+199.79/4 0s}
Ka6 {-299.92/36 3.9s} 86. c8=Q+ {+199.79/4 0.001s} Kb6 {-299.94/35 3.9s}
87. Qc4 {+199.79/4 0.001s} Ka7 {-299.96/40 3.7s} 88. Qc5+ {+199.79/4 0s}
Ka6 {-299.94/36 3.4s} 89. Ke6 {+199.79/4 0s} Kb7 {-299.92/35 3.5s}
90. Kf6 {+199.79/4 0s} Ka8 {-299.93/36 3.4s} 91. Qc8+ {+199.79/4 0s}
Ka7 {-299.90/37 3.5s} 92. Kg5 {+199.79/4 0s} Kb6 {-299.92/33 5.1s}
93. Kf4 {+199.79/4 0s} Kb5 {-299.93/35 4.1s} 94. Ke4 {+199.75/4 0s}
Kb6 {-299.94/34 3.6s} 95. Kf5 {+199.77/4 0s} Ka7 {-299.94/35 4.7s}
96. Ke6 {+199.79/4 0.001s} Kb6 {-299.92/35 4.8s} 97. Qc4 {+199.79/4 0.001s}
Kb7 {-299.93/35 3.6s} 98. Qc5 {+199.79/4 0s} Ka6 {-299.93/38 4.7s}
99. Kf6 {+199.79/4 0s} Kb7 {-299.94/34 5.2s} 100. Kg5 {+199.79/4 0s}
Ka8 {-299.94/37 5.9s} 101. Qc8+ {+199.79/4 0s} Ka7 {-299.91/35 3.8s}
102. Kf5 {+199.77/4 0s} Kb6 {-299.92/34 4.8s} 103. Ke6 {+199.79/4 0.001s}
Kb5 {-299.94/35 3.8s} 104. Qc7 {+199.79/4 0s} Ka6 {-299.92/38 4.6s}
105. Kf6 {+199.79/4 0s} Kb5 {-299.94/33 6.2s} 106. Qf4 {+199.79/4 0s}
Kc5 {-299.94/34 4.5s} 107. Kf7 {+199.79/4 0s} Kd5 {-299.94/35 4.1s}
108. Qc7 {+199.79/4 0s} Ke4 {-299.94/34 4.7s} 109. Qc5 {+199.79/4 0s}
Kf3 {-299.94/32 4.2s} 110. Qe5 {+199.79/4 0s} Kg2 {-299.88/34 5.0s}
111. Qc7 {+199.79/4 0s} Kf2 {-299.88/35 4.8s} 112. Qd6 {+199.79/4 0s}
Ke2 {-299.90/33 4.3s} 113. Kg6 {+199.79/4 0s} Ke3 {-299.88/36 4.5s}
114. Qe5+ {+199.79/4 0.001s} Kd2 {-299.94/35 8.1s} 115. Qc5 {+199.79/4 0s}
Kd3 {-299.94/33 4.8s} 116. Kg7 {+199.79/4 0s} Ke2 {-299.94/34 4.3s}
117. Qc7 {+199.79/4 0s} Kd3 {-299.94/34 5.4s} 118. Kf6 {+199.79/4 0s}
Ke2 {-299.94/31 4.2s} 119. Kf5 {+199.79/4 0s} Kf2 {-299.94/33 5.2s}
120. Kg6 {+199.79/4 0s} Kg1 {-299.94/33 3.7s} 121. Qd6 {+199.79/4 0s}
Kg2 {-299.94/35 4.9s} 122. Qc5 {+199.79/4 0s} Kxh2 {-299.90/34 4.4s}
123. Qf5 {+199.81/4 0.001s} Kg2 {-299.92/34 4.3s} 124. Kh5 {+199.81/4 0.001s}
Kg1 {-299.92/37 4.5s} 125. Qf4 {+199.81/4 0s} Kh1 {-299.92/39 5.4s}
126. Kg5 {+199.75/4 0s} Kg1 {-299.92/41 5.8s} 127. Qc7 {+199.75/4 0s}
Kf2 {-299.92/36 4.5s} 128. Qc5+ {+199.75/4 0.001s} Kf3 {-299.92/36 4.1s}
129. Qc6+ {+199.63/4 0s} Kf2 {-299.92/35 4.8s} 130. Kg6 {+199.75/4 0s}
Kg3 {-299.94/36 5.5s} 131. Kg7 {+199.75/4 0s} Kf2 {-299.94/37 4.5s}
132. Kf6 {+199.77/4 0s} Kg1 {-299.94/38 5.4s} 133. Qc2 {+199.81/4 0s}
Kf1 {-299.94/36 4.0s} 134. Ke6 {+199.79/4 0s} Kg1 {-299.94/38 5.4s}
135. Qd3 {+199.79/4 0.001s} Kf2 {-299.94/37 4.4s} 136. Qd2+ {+199.79/4 0.001s}
Kf3 {-299.94/35 5.4s} 137. Kf5 {+199.81/4 0.001s} Kg3 {-299.95/35 4.0s}
138. Qe3+ {+199.81/4 0s} Kg2 {-299.95/35 4.2s} 139. Qf4 {+199.81/4 0s}
Kh1 {-299.94/37 4.4s} 140. Ke5 {+199.81/4 0s} Kg2 {-299.96/37 6.8s}
141. Ke6 {+199.81/4 0s} Kh3 {-299.96/37 4.3s} 142. Kf6 {+199.81/4 0s}
Kg2 {-299.96/34 4.8s} 143. Kf7 {+199.81/4 0.001s} Kg1 {-299.88/34 5.5s}
144. Kg6 {+199.81/4 0s} Kg2 {-299.92/37 4.3s} 145. Kg7 {+199.75/4 0s}
Kh1 {-299.92/37 3.9s} 146. Kh7 {+199.75/4 0s} Kg2 {-299.92/35 5.2s}
147. Kg6 {+199.81/4 0s} Kh3 {-299.95/37 4.4s} 148. Kg7 {+199.75/4 0.001s}
Kg2 {-299.91/34 5.5s} 149. Qc7 {+199.75/4 0s} Kf3 {-299.92/35 4.0s}
150. Qc5 {+199.75/4 0s} Ke4 {-299.92/33 4.7s} 151. Kf6 {+199.77/4 0s}
Kd3 {-299.92/36 5.3s} 152. Ke6 {+199.77/4 0s} Kd2 {-299.92/35 4.4s}
153. Qc4 {+199.77/4 0s} Ke3 {-299.92/33 4.1s} 154. Kf5 {+199.77/4 0s}
Kd2 {-299.94/35 4.6s} 155. Ke4 {+199.77/4 0s} Ke1 {-299.94/38 4.6s}
156. Qd3 {+199.79/4 0.001s} Kf2 {-299.94/34 4.3s} 157. Qd2+ {+199.79/4 0.001s}
Kg3 {-299.94/38 4.8s} 158. Qe2 {+199.79/4 0s} Kh4 {-299.94/38 5.1s}
159. Kf4 {+199.79/4 0s} Kh3 {-299.96/40 5.9s} 160. Kf3 {+199.79/4 0s}
Kh4 {-299.96/41 6.3s} 161. Qe5 {+199.79/4 0s} Kh3 {-299.98/43 5.3s}
162. Qd6 {+199.79/4 0.001s} Kh4 {-299.98/42 4.1s} 163. Qg3+ {+199.79/4 0.001s}
Kh5 {-299.96/43 5.4s} 164. Ke4 {+199.79/4 0s} Kh6 {-299.94/38 4.6s}
165. Kf5 {+199.79/4 0s} Kh7 {-299.96/42 5.0s} 166. Qe5 {+199.81/4 0s}
Kg8 {-299.94/40 4.2s} 167. Qc7 {+199.81/4 0s} Kf8 {-299.96/44 4.2s}
168. Qc5+ {+199.81/4 0s} Ke8 {-299.96/39 4.1s} 169. Qd6 {+199.81/7 0.002s}
Kf7 {-299.94/37 7.3s} 170. Kf4 {+199.81/4 0s} Kg7 {-299.94/36 4.5s}
171. Ke4 {+199.81/4 0s} Kf7 {-299.94/39 5.0s} 172. Qb8 {+199.81/4 0s}
Kf6 {-299.94/34 4.1s, Draw by fifty moves rule} 1/2-1/2
martinnovaak commented 3 months ago

Thank you for reporting this problem. That is definitely a bug. I think I know what's causing it. I'm testing it right now.

Hopefully I can push a fix tonight.

martinnovaak commented 3 months ago

The bug should be mostly fixed now with this PR. Motor has still problems on low time control with finding mates in KRvK, KBBvK and KBNvK. I will have to make some special evaluation function for these cases. But generally Motor should be able to find mates in clearly won positions.

tissatussa commented 3 months ago

the PR-110 'fix mate' version seems to run fine. btw. i had to correct your Makefile, suddenly you use clang++-18 and i only have v17 .. compiling went well though .. i also added '-mavx2' and -mbmi2' which my notebook supports .. does it matter ?

..generally Motor should be able to find mates in clearly won positions..

yes, now it can mate with a Queen and a few pawns. Upto now i did only one game 10m5s but my impression is that it doesn't "wander around" doing 'nothing' : it hunts the King and uses its pawns to promote.