Progress On Bricabrac

Discussion of chess software programming and technical issues.

Moderators: hgm, chrisw, Rebel

Mike Sherwin
Posts: 925
Joined: Fri Aug 21, 2020 1:25 am
Location: Planet Earth, Sol system
Full name: Michael J Sherwin

Re: Progress On Bricabrac

Post by Mike Sherwin »

Sven wrote: Fri Apr 30, 2021 9:22 am Good news, Mike!

Hard to believe, though, that it is actually a compiler bug ... For me it still looks like there is some undefined behaviour causing the compiler to do "undesired" optimizations, unless you prevent him to do so by switching optimizations off.

A possible example might be the use of = where == was intended.

Code: Select all

int a = complex_calculation(b, c, d);
if (a = 42) ...
This may cause the compiler to assume that b, c and d are "unused", and he might even throw away the function complex_calculation() if noone else uses it, which he might find out during "whole program optimization". Not sure if you would see a warning about that ...
Thank you Sven. I went over the code so many times until I was absolutely sure it was correct. So I started looking over all the compiler settings until I happened to see, whole program optimization. Other optimizations were set to maximum speed. This is the only warning -
Severity Code Description Project File Line Suppression State
Warning C26812 The enum type '<unnamed-enum-OO>' is unscoped. Prefer 'enum class' over 'enum' (Enum.3). Bricabrac D:\source\repos\Bricabrac\Bricabrac.cpp 2512
- and I tested and ruled it out as the source of the bug. The bug was still there even though I changed the enum to all constexpr. As soon as 3-fold is working correctly I'll upload the source and an executable. If you are so inclined maybe your eye will see something I missed if there is something to find. Thanks.
Sven
Posts: 4052
Joined: Thu May 15, 2008 9:57 pm
Location: Berlin, Germany
Full name: Sven Schüle

Re: Progress On Bricabrac

Post by Sven »

I will certainly give it a try once your source code is there - even if it is only for the purpose of proving myself wrong :wink:
Sven Schüle (engine author: Jumbo, KnockOut, Surprise)
Mike Sherwin
Posts: 925
Joined: Fri Aug 21, 2020 1:25 am
Location: Planet Earth, Sol system
Full name: Michael J Sherwin

Re: Progress On Bricabrac

Post by Mike Sherwin »

hgm wrote: Fri Apr 30, 2021 10:21 am My approach to debugging is to have a number of conditional print statements in the code: if(PATH) printf("%d:%d ...", ply, depth, ...);. In a 'release version' PATH is #defined as 0, which makes the optimizer delete them. If I want to debug I redefine PATH in steps, starting with ply == 0 (to get diagnosics from he root), and then zooming in onto the problem through ply==0 || path[0]==MOVE0 && (ply==1 || path[1]==MOVE1 && (ply==2 ...)) to limit the printed info to nodes along the path specified by MOVE0, MOVE1 etc.

In general I use only a single such print satement, right after UnMake(), to print the move (text and intenral hex encoding), score, and best score. If I am debuging a crash I put an identical print statement before MakeMove(), making sure it is crash-proof (printing to stderr or using fflush(stdout)), to detect in which node the crash occurs. After I identified the node that causes the problem implied by the scoring of the branch, I start to add extra conditional prints in the code to see what the problem is.

The thing I hate most is when adding a print statement changes the behavior. This tends to happen when you are inadvertently using an uninitialized local variable, for which the compiler allocated stack memory hat was also used during printf. I even developed a way to do 'transparent printing', which avoids modifying the stack by saving and restoring it, though the following routines:

Code: Select all

int i, saved[10000];
void S() { int stack[10000]; for(i=0; i<10000; i++) saved[i] = stack[i]; }
void R() { int stack[10000]; for(i=0; i<10000; i++) stack[i] = saved[i]; }
(In a separate source file, compiled without optimizations.) And then sandwich any behavior-altering prints between those: if(PATH) S(), printf(...), fflush(stdout), R();. That usually helps to restore the reproducibility of the behavior.

If there is a difference between two versions that should behave the same, I run them both with the printing enabled, (starting in the root), and then follow the move that produced the first deviating score in both versions, until it becomes clear where he difference was generated.

So far this always enabled me to find any bug in a reasonable amount of time, even if it manifested itself only at 24 ply.
Interesting. I kind of have my own way of using printf. When I wrote RomiChess the problem was the opposite. It would run in release mode just fine but would not run in the debugger.
Mike Sherwin
Posts: 925
Joined: Fri Aug 21, 2020 1:25 am
Location: Planet Earth, Sol system
Full name: Michael J Sherwin

Re: Progress On Bricabrac

Post by Mike Sherwin »

A couple of days ago I went on a road trip to Idaho Falls with my neighbor. We went to a gazillion stores and it totally wore me out. So the last couple of days I did more harm than good trying to code. Today however, I seem to have undone the damage and am back on track with Bricabrac. Hey, that almost rhymes. :D

Zobrist keys have been added successfully and a repetition table created. And it seems to be working! 8-) In the following game there were plenty of opportunities for 3-fold repetitions and Bricabrac managed to not play into any.
[pgn][Event "TSCP.at"]
[Site "DESKTOP-HFVHK2B"]
[Date "2021.05.02"]
[Round "1"]
[White "Bricabrac"]
[Black "Tscp181"]
[Result "1-0"]
[BlackElo "2200"]
[ECO "A70"]
[Opening "Benoni"]
[Time "13:57:39"]
[Variation "Classical, 8.Bd3"]
[WhiteElo "2000"]
[TimeControl "0+2"]
[Termination "normal"]
[PlyCount "281"]
[WhiteType "human"]
[BlackType "human"]

1. d4 Nf6 2. c4 c5 3. d5 e6 4. Nc3 exd5 5. cxd5 d6 6. e4 g6 7. Nf3 Bg7 8.
Bd3 {(f1d3 b8d7 c1f4 d8e7 e1g1 d7e5 d3c2) +1.02/7 2} Bg4 {(c8g4 e1g1 e8g8
c1f4 f8e8 a1c1 f6e4 c3e4 g4f3 d1f3 g7b2) -0.88/6 1} 9. Bf4 {(c1f4 d8b6 a1b1
h8f8 e1g1 b8d7 b1c1) +1.04/7 2} Qb6 {(d8b6 d3b5 f6d7 a1b1 f7f5 b5d3 g7c3
b2c3 g4f3 d1f3) -0.57/5 1} 10. Qc1 {(a1b1 b8d7 e1g1 d7e5 d3b5 f6d7 b5e2)
+1.04/7 2} Bxf3 {(g4f3 g2f3 f6h5 f4e3 b8d7 e1g1 g7c3 c1c3) -0.35/6 1} 11.
gxf3 {(g2f3 b8d7 e1g1 a8d8 c1c2 h8f8 a1d1 d7e5) -0.01/8 2} Nh5 {(f6h5 f4d2
b8d7 f3f4 e8c8 e1g1) -0.27/6 2} 12. Bh6 {(f4h6 g7d4 e1g1 b8d7 h6e3 a8d8
e3d4 c5d4) +0.27/8 2} Bxh6 {(g7h6 c1h6 b6b2 a1c1 b8d7 e1g1) +1.35/6 1} 13.
Qxh6 {(c1h6 b6b2 a1c1 b8d7 e1g1 b2a3 f3f4 a8d8 h2h3) +0.68/9 2} Qxb2 {(b6b2
a1c1 b8d7 c3b5 b2e5 e1g1) +1.40/6 2} 14. Rc1 {(a1c1 b8d7 e1g1 a8d8 f1e1
b2a3 d3f1 d7e5 f1g2) +0.51/9 2} Nd7 {(b8d7 e1g1 h5f6 c1c2 b2a3 f3f4)
+1.39/6 1} 15. O-O {(e1g1 a7a6 f1d1 d7e5 d3e2 c5c4 h2h3 b2b6) +0.37/8 2}
Qa3 {(h5f6 c3b5 e8e7 c1c2 b2e5) +1.39/5 1} 16. f4 {(f1e1 a8d8 e1d1 d7e5
d3b5 e8e7 g1g2 h5f6) +0.35/8 2} O-O-O {(h5f6 h6g7 h8g8 g7h6 e8c8) +1.45/5
1} 17. h3 {(h2h3 h8e8 f1d1 a7a6 d3f1 c8b8 f1g2 h5f6) +0.72/8 2} Nhf6 {(d8g8
c3b5 a3a6 a2a4 h5f6) +1.55/5 1} 18. Be2 {(f1e1 h8e8 e1d1 a7a6 h6g7 e8f8
g7h6 c8b8) +0.63/8 2} Rhe8 {(h8e8 e2d3 a3b4 c1c2 c5c4 f1b1) +1.75/6 2} 19.
Nb5 {(c3b5 a3a6 b5c3 a6b6 e2f3 c8b8 c1d1 c5c4) +0.55/8 2} Qa6 {(a3a6 f2f3
e8e7 e2c4 d8e8 b5d4) +1.68/6 1} 20. Nc3 {(b5c3 a6b6 e2f3 c8b8 f1e1 c5c4
c1d1 d7c5) +0.45/8 2} Qb6 {(a6b6 e2d3 b6b4 c1c2 c5c4 f1b1) +1.75/6 1} 21.
Bf3 {(e2f3 c8b8 f1e1 c5c4 a2a3 a7a6 c1d1 d7c5) +0.45/8 2} c4 {(c5c4 h6g7
e8e7 c1b1 b6c7 f1c1) +1.75/6 1} 22. Qg7 {(h6g7 e8f8 f3e2 b6a6 e2f3 c8b8
g7h6 d7c5) +0.45/8 2} Re7 {(e8e7 c1b1 b6c7 f1c1 d8e8 a2a4) +1.83/6 1} 23.
a4 {(a2a4 c8b8 f1e1 a7a6 f3g2 b6c7 c1d1 a6a5) +0.49/8 2} Qb3 {(b6b3 e4e5
d6e5 f4e5 f6e8 g7h7 d7e5) +1.87/6 1} 24. Rfd1 {(f1d1 c8b8 g7h6 b3b6 c1b1
b6c7 c3b5 c7b6) +0.65/8 2} h5 {(h7h5 a4a5 d8g8 g7h6 g8e8) +1.98/5 2} 25.
Bg2 {(f3g2 b3b6 f4f5 g6f5 e4f5 d8g8 g7h6 g8g3) +0.85/8 2} Rg8 {(d8g8 g7h6
g8e8 h6g5 b3a3 g2f3) +2.03/6 1} 26. Qh6 {(g7h6 g8d8 f4f5 g6f5 e4f5 b3b4
g2f3 d7e5) +1.21/8 2} Rge8 {(g8e8 h6g7 h5h4 e4e5 d6e5 f4e5 e7e5 g7f7)
+2.02/5 1} 27. Nb5 {(c3b5 f6e4 g2e4 e7e4 b5d6 c8b8 d6e8 e4e8) +2.17/8 2}
Nxe4 {(f6e4 g2e4 c8b8 b5d6 e7e4 d6e8 e4e8) -0.10/6 1} 28. Bxe4 {(g2e4 e7e4
b5d6 c8b8 d6e4 e8e4 h6h8 b8c7) +2.41/8 2} Kb8 {(c8b8 b5d6 e7e4 f4f5 b3h3
d6e8 e4e8 f5g6) -0.35/6 1} 29. Bg2 {(e4g2 b3b4 g2f1 d7b6 f4f5 b6a4 f1c4
e7e1) +2.69/8 2} Qb4 {(b3b4 f4f5 d7e5 f2f4 e5d3 b5d6 b4d6 c1c4) +0.09/6 1}
30. Rb1 {(c1b1 b4c5 b5d4 d7b6 f4f5 b6d5 f5g6 d5c3) +2.63/8 2} Qc5 {(b4c5
f4f5 d7e5 g2e4 a7a6 b5d4) +0.36/6 1} 31. Nd4 {(b5d4 d7b6 f4f5 b6d5 f5g6
d5b4 h6h7 e8f8) +2.89/8 2} Kc8 {(b8c8 f4f5 d7e5 f5f6 e7d7 g2e4) +0.48/6 1}
32. f5 {(f4f5 d7e5 f5g6 e5g6 d4e6 c5a5 g2f3 a5c3) +3.44/8 2} Ne5 {(d7e5
d4b5 e5d3 f5g6 f7g6 h6g6 c5f2) +0.50/6 1} 33. fxg6 {(b1c1 c5a3 f5g6 f7g6
d4e6 e7f7 f2f4 a3e3) +3.25/8 2} fxg6 {(f7g6 g2e4 e5g4 e4f5 g6f5 h3g4 h5g4
d4f5) +0.45/6 2} 34. Ne6 {(d4e6 c5a3 b1a1 a3b3 a1c1 c8b8 e6f4 e8g8) +3.65/8
2} Qa3 {(c5a3 h6e3 a3e3 f2e3 c4c3 e3e4) +0.40/6 1} 35. Ra1 {(b1c1 c8b8 e6f4
e8g8 g2e4 g6g5 f4h5 a3h3) +3.46/8 2} Qb3 {(a3b3 d1c1 e5d3 c1b1 b3c2 h6g6
c2f2) +0.45/6 1} 36. Rab1 {(a1b1 b3a4 f2f4 e5d3 h6g6 a4c2 d1f1 h5h4)
+3.58/8 2} Qc2 {(b3c2 b1c1 c2a4 f2f4 e5f7 h6g6) +0.03/6 2} 37. Rbc1 {(b1c1
c2b3 e6f4 e8g8 a4a5 e7f7 f4e6 e5f3) +3.76/8 2} Qb3 {(c2b3 c1b1) 0.00/6 1}
38. Nf4 {(e6f4 e8g8 g2e4 e5g4 h3g4 e7e4 f4g6 h5g4) +3.76/8 2} Rg8 {(e8g8
a4a5 c4c3 g2e4 e5f7 h6h7) +0.47/6 1} 39. a5 {(a4a5 e7f7 f4e6 c8b8 a5a6 e5f3
g2f3 b3f3) +3.53/8 2} Qb4 {(b3b4 h6g5 g8g7 f4d3 e5d3 d1d3) +0.39/5 1} 40.
Ra1 {(f4e6 b4a5 f2f4 a5b6 g1h1 b6e3 h6g5 e5c6) +3.57/8 2} c3 {(c4c3 d1c1
e7e8 h6g5 e8f8 f4e6) +0.62/6 1} 41. Ne6 {(f4e6 g8e8 d1d4 b4b3 f2f4 b3b2
a1d1 c3c2) +3.61/8 2} Qc4 {(b4c4 d1c1 e7e8 h6e3 e5d3 c1c2) +0.62/6 1} 42.
Rac1 {(a1c1 c8b8 d1d4 c4a2 f2f4 e5f7 h6h7 g8e8) +3.88/8 2} Kb8 {(c8b8 f2f4
e5d7 h6g5 e7e8 d1e1) +0.28/6 1} 43. Rd4 {(d1d4 c4e2 d4f4 e5d3 f4f8 e7e8
f8g8 e8g8) +3.67/8 2} Qe2 {(c4e2 h6e3 e2e3 f2e3 g8c8 e3e4) +0.17/6 2} 44.
Re4 {(d4e4 e2b2 e4d4 e5f7 h6e3 g8c8 g2e4 f7e5) +3.28/8 2} Qb2 {(e2b2 e6d4
g8e8 h6e3 e5f3 d4f3 e7e4 e3c3 b2c3 c1c3) +0.40/6 1} 45. Rd1 {(c1d1 g8e8
h3h4 e5g4 h6f4 b2a3 f4g3 c3c2) +2.93/8 2} c2 {(c3c2 d1f1 g6g5 e4e1 e5d3
e1a1 c2c1q a1c1 d3c1 e6g5) +2.16/6 1} 46. Rf1 {(d1f1 g8c8 h6c1 b2c3 a5a6
b7a6 e4e3 e5d3) +1.48/8 2} g5 {(g6g5 e4e1 e5d3 e1a1 c2c1q a1c1 d3c1 e6g5)
+2.16/6 1} 47. Ree1 {(e4e1 e5d3 e1a1 c2c1q a1c1 d3c1 e6g5 c1d3) +1.31/8 2}
Nd3 {(e5d3 e1a1 c2c1q a1c1 d3c1 e6g5) +2.16/6 1} 48. Ra1 {(e1a1 c2c1q a1c1
d3c1 e6g5 c1e2 g1h1 b2e5) +0.85/8 2} c1=Q {(c2c1q a1c1 d3c1 e6g5 c1e2 g1h1
b2a3) +2.40/6 1} 49. Raxc1 {(a1c1 d3c1 e6g5 c1e2 g1h1 b2a3 g5e6 a3a5)
+0.72/8 2} Nxc1 {(d3c1 e6d4 b2a3 d4f5 c1e2 g1h1 e7d7 h6h5) +2.27/6 1} 50.
Nd4 {(e6d4 e7d7 d4e6 c1e2 g1h1 b2h8 h6h8 g8h8 e6g5) +0.23/9 2} Rd7 {(e7d7
h6h5 d7c7 h5g4 c1b3 g4e6) +2.23/6 1} 51. Ne6 {(d4e6 c1e2 g1h1 b2d2 h3h4
e2f4 h4g5 f4g2 h1g2) +0.20/9 2} Ne2+ {(c1e2 g1h1 b2b5 h6h5 e2c3 e6g5 c3d5)
+2.55/6 1} 52. Kh1 {(g1h1 b2e5 h6h5 e2f4 h5g4 d7f7 h3h4 f4g2 g4g2 g8h8)
-0.30/10 2} g4 {(g5g4 h6h5 g4h3 g2h3 g8h8 h5g4) +2.50/6 1} 53. Qxh5 {(h6h5
b2f6 a5a6 e2f4 e6f4 f6f4 a6b7 d7b7) +0.01/8 2} Qc2 {(b2c2 e6g5 c2f5 h3h4
e2f4 h5h6 f4g2 h1g2 f5d5) +3.37/6 1} 54. Qh6 {(h5h6 g4h3 g2f3 g8c8 h6h3
d7h7 f3h5 h7e7) +0.16/8 2} gxh3 {(g4h3 g2h3 c2d3 e6g5 d3d5 f2f3 d7g7)
+3.83/6 1} 55. Bf3 {(g2f3 d7f7 h6e3 e2c3 f1c1 c2c1 e3c1 f7f3) -0.40/8 2}
Nc3 {(e2c3 h6h3 d7h7 f3h5 c2e4 f2f3 e4d5) +3.83/6 1} 56. Qe3 {(h6e3 c2b3
f1e1 g8e8 e3d3 d7e7 d3f5 a7a6) -0.40/8 2} Rc8 {(g8c8 e6d4 c2a4 f3g4 c3d5
e3h3) +3.77/6 1} 57. a6 {(a5a6 c2f5 a6b7 b8b7 e6d4 f5e5 d4c6 e5e3) -0.77/8
2} bxa6 {(b7a6 e6d4 c2b2 d4c6 b8a8 e3h6 b2b5 h6h3 c3d5 f3d5 b5d5) +4.31/6
1} 58. Nd4 {(e6d4 c2b2 e3e6 d7c7 e6d6 b2b6 d4c6 b8b7) -0.29/8 2} Qb2 {(c2b2
e3e6 d7h7 e6d6 c8c7 d4e6 b2b5 e6c7 b5f1) +3.31/6 1} 59. Nc6+ {(d4c6 b8a8
e3e6 b2b7 f3g4 d7c7 g4h3 c3d5) -0.29/8 2} Ka8 {(b8a8 f3g4 c3d5 e3d3 b2g7
d3a6 c8e8 g4d7 g7d7) +3.07/6 1} 60. Qe6 {(e3e6 b2b5 f1e1 b5d3 e6d7 d3f3
h1g1 h3h2) -0.25/8 2} Rdc7 {(d7c7 e6h3 a6a5 h3e6 c8h8 h1g1 b2a3) +3.20/6 1}
61. Qxd6 {(e6d6 b2d2 d6f6 c3d5 c6e7 c7e7 f6e7 c8c2) -0.31/8 2} Qd2 {(b2d2
c6e5 a6a5 f1a1 a5a4 h1g1) +3.56/6 2} 62. Ne5 {(c6e5 c3e2 d6a6 c7c2 f3e4
c2c1 f1c1 c8c1) +0.10/8 2} Qd4 {(d2d4 f3g4 d4e4 f2f3 e4d5 d6d5 c3d5 g4c8
c7c8) +2.87/6 1} 63. Qxa6 {(d6a6 d4e5 d5d6 a8b8 d6c7 e5c7 a6h6 c8d8 h6h3)
+1.00/9 2} Qxe5 {(c3e4 d5d6 c7c2 d6d7 c8b8 f1e1) +1.90/6 1} 64. d6+ {(d5d6
a8b8 d6c7 e5c7 a6h6 c7d7 h1g1 a7a6 f1e1) +1.07/9 2} Kb8 {(a8b8 d6c7 c8c7
f3g4 h3h2 f2f4 e5g7 g4e6) +1.78/6 1} 65. dxc7+ {(d6c7 e5c7 a6h6 c8d8 h6h3
d8d3 h3h5 d3d2 h5e8) +1.09/9 2} Rxc7 {(c8c7 f1g1 c7g7 f3g4 e5e4 f2f3 e4e2
a6e2 c3e2) +1.71/6 2} 66. Rg1 {(a6g6 h3h2 g6g8 c7c8 g8b3 c3b5 f1d1 c8c3
b3f7) +1.10/9 2} Qe8 {(e5e8 a6h6 e8d7 g1g8 c7c8 g8g4 c3d1 h6h3 d1f2)
+1.08/6 1} 67. Qa3 {(a6h6 c7c8 h6h7 e8b5 g1e1 c8d8 e1e7 b5f1) +1.09/8 2}
Nb5 {(c3b5 a3a4 c7c3 g1g3 e8d7 h1g1) +1.72/6 1} 68. Rb1 {(g1b1 c7f7 a3d6
b8c8 b1c1 b5c7 f3g4 c8b8 g4h3) +1.61/9 2} Rb7 {(c7b7 a3c5 b7b6 c5f5 b5d4
b1b6 a7b6 f5h3) +0.37/6 1} 69. Qb3 {(a3c5 b7b6 f3d5 e8d7 c5f8 d7c8 f8c8
b8c8 b1d1) +1.58/9 2} Rb6 {(b7b6 b3d5 e8e7 b1b5 b6b5 d5b5 b8c7 h1h2)
-1.01/7 1} 70. Qd5 {(b3d5 e8e7 d5g8 b8c7 b1c1 c7d7 f3g4 d7d6 g4h3) +2.75/9
2} Qe7 {(e8e7 d5a8 b8c7 b1c1 c7d7 a8c8 d7d6 c1d1 d6e5 c8h3) -0.01/6 2} 71.
Rd1 {(b1g1 b8c8 g1g8 c8c7 d5c4 c7d7 c4c8 d7d6 c8h3) +2.84/9 2} h2 {(h3h2
d5a8 b8c7 h1h2 e7g5 h2h1 a7a6) -0.05/6 1} 72. Qg8+ {(d5g8 b8c7 d1c1 c7d7
g8c8 d7d6 c1d1 d6e5 h1h2) +2.88/9 2} Kc7 {(b8c7 d1c1 c7d7 g8c8 d7d6 c1d1
d6e5 d1e1 e5d6 e1e7 d6e7 h1h2) -3.60/6 1} 73. Rc1+ {(d1c1 c7d7 g8c8 d7d6
c1d1 b5d4 d1d4 d6e5 d4d7) +5.44/9 2} Kd7 {(c7d7 g8c8 d7d6 c1d1 d6e5 d1e1
e5d6 e1e7 d6e7 h1h2) -3.60/5 1} 74. Qc8+ {(g8c8 d7d6 c1d1 d6e5 d1e1 e5d6
e1e7 d6e7 h1h2) +6.76/9 2} Kd6 {(d7d6 c1d1 d6e5 d1e1 e5d6 e1e7 d6e7 c8c5
e7e6 h1h2) -3.50/6 1} 75. Rd1+ {(c1d1 d6e5 d1e1 e5d6 e1e7 d6e7 h1h2 b5d4
f3d5) +6.50/9 2} Ke5 {(d6e5 d1d5 e5f6 c8f5 f6g7 d5d7 e7d7 f5d7 g7f6 h1h2)
-3.60/6 1} 76. Re1+ {(d1e1 e5d6 e1e7 d6e7 f3d5 b6f6 c8b7 e7f8) +6.23/8 2}
Kd6 {(e5d6 e1e7 d6e7 c8c5 e7f6 h1h2 b6b8 c5c6 f6e5 h2g3) -3.60/7 1} 77.
Rd1+ {(e1d1 d6e5 d1e1 e5d6 e1e7 d6e7 h1h2 b5d4 f3d5) +6.50/9 2} Ke5 {(d6e5)
0.00/8 1} 78. Re1+ {(d1e1 e5d6 e1e7 d6e7 f3d5 b6f6 c8b7 e7f8) +6.23/8 2}
Kd6 {(e5d6) 0.00/9 1} 79. Rxe7 {(e1e7 d6e7 c8f5 b5d4 f5e4 d4e6 e4h7 e7d6
h1h2 b6b2) +6.32/10 2} Kxe7 {(d6e7 c8c5 e7f6 h1h2 b6b8 f3c6 b8h8 h2g3 h8g8)
-3.80/7 1} 80. Bd5 {(f3d5 e7d6 d5f7 b5d4 c8d8 d6e5 d8e8 e5f4 h1h2) +6.71/9
2} Kd6 {(e7d6 d5c4 a7a5 f2f4 a5a4 c8f8 d6d7 h1h2) -3.43/7 1} 81. Bg2 {(d5g2
d6e7 c8g8 b6f6 g8g7 e7e6 g2d5 e6f5 h1h2 b5d4) +6.38/10 2} Ke5 {(d6e5 c8c5
e5f4 c5e3 f4f5 g2h3 f5f6 f2f4 b5d6 h1h2) -3.86/6 1} 82. Qh8+ {(c8h8 e5f5
h1h2 b6g6 g2d5 g6g5 d5f7 f5g4 h2g1) +6.80/9 2} Kf4 {(e5f5 h8h3 f5e5 h1h2
e5f6 h3h4 f6e5 f2f4) -3.81/5 1} 83. Kxh2 {(h1h2 b5d6 h8h6 f4e5 h6h8 e5f5
h8h7 f5g4 g2d5) +6.89/9 2} Kf5 {(f4f5 h8h5 f5f4 h5f7 f4g4 f2f3 g4h4 f7e7
h4h5 f3f4) -4.11/6 1} 84. Kg1 {(h2g1 f5g4 h8e5 b5d6 e5g7 g4f5 g7h7 f5g4
g2d5) +7.05/9 2} Kg6 {(f5g6 f2f4 b5d6 h8g8 g6f6 g8f8 f6e6 g1f2) -4.06/6 1}
85. Be4+ {(g2e4 g6f7 e4d5 f7g6 h8g8 g6h6 g8h8 h6g6 h8e8) +7.17/9 2} Kf7
{(g6f7 f2f4 a7a6 g1f2 a6a5 f4f5) -4.22/5 1} 86. Qh4 {(h8h7 f7e8 e4d5 b6f6
h7h5 e8d7 h5h8 f6f4 h8h6) +7.04/9 2} Ke8 {(f7e8 g1g2 e8d7 h4g4 d7d6 g4g3
d6c5 f2f4) -4.11/6 1} 87. Kh2 {(h4h8 e8e7 h8h7 e7f8 h7h8 f8e7 e4g2 b6e6
g2d5) +7.03/9 2} a6 {(a7a6 f2f4 b5d6 e4g6 e8d7 h4g4 d7e7 f4f5) -3.98/6 1}
88. Qh8+ {(h4h8 e8d7 e4f5 d7c6 h8c8 c6d5 c8g8 d5c6 h2g1) +6.86/9 2} Ke7
{(e8e7 f2f4 a6a5 h8g7 e7d6 g7e5 d6d7 f4f5) -3.92/5 1} 89. Qg7+ {(h8g7 e7e8
e4d5 b6d6 g7g8 e8d7 h2g1 d7c7 g8f7) +6.91/9 2} Kd6 {(e7d6 f2f4 a6a5 g7a1
b6a6 f4f5) -3.97/5 1} 90. Qf8+ {(g7f8 d6d7 e4f5 d7c6 f8c8 c6d5 c8g8 d5c6
h2g1) +6.86/9 2} Kd7 {(d6d7 f2f4 b5d6 f8g7 d7d8 g7d4 d8c7 f4f5 d6e4 d4e4)
-4.13/6 1} 91. Qf7+ {(f8f7 d7c8 f7f8 c8d7 e4d5 b5c3 f8g7 d7d6 g7h6) +6.88/9
2} Kd8 {(d7d8 f2f4 b5d6 f7f6 d8d7 f6d4 b6b8 f4f5) -4.08/6 1} 92. Qf8+
{(f7f8 d8d7 e4f5 d7c6 f8c8 c6d5 c8g8 d5c6 h2g1) +6.86/9 2} Kd7 {(d8d7)
0.00/10 1} 93. Bf5+ {(e4f5 d7c7 f8c8 c7d6 c8d8 d6c5 d8c8 b6c6 c8e8) +6.82/9
2} Kc6 {(d7c6 f2f4 b5d6 f8a8 c6c5 f5d3 b6b4 f4f5) -3.93/6 1} 94. Qc8+
{(f8c8 c6d5 c8d8 d5c5 d8e7 b6d6 e7e5 d6d5 e5f6) +6.64/9 2} Kd5 {(c6d5 f2f4
b5d4 c8g8 d5c5 g8f8 c5d5 h2g3) -3.75/5 1} 95. Bg6 {(f5g6 b5d4 g6f7 d5e4
c8e8 e4f5 e8d7 f5e4 d7e8) +6.67/9 2} Nd6 {(b5d6 c8a8 d6b7 f2f4 a6a5 a8g8
b6e6 f4f5) -3.62/6 1} 96. Qc3 {(c8c3 b6b8 c3f6 b8b4 g6d3 b4d4 d3a6 d5c5
a6e2 d4d2) +6.39/10 2} Rc6 {(b6c6 c3a5 d5d4 f2f4 d6c4 a5a1 d4d5 f4f5)
-3.78/6 1} 97. Qa3 {(c3a3 d5d4 a3f3 c6c4 f3e3 d4d5 e3h6 d6e4 g6f7) +6.58/9
2} Kd4 {(d5d4 f2f4 d6c4 a3a1 d4c5 a1g1 c5d5 f4f5) -3.78/6 1} 98. Bh5 {(h2g1
d6c4 a3a1 d4c5 g6f7 c6d6 a1c1 d6d4 c1h6) +6.61/9 2} Nc4 {(d6c4 a3a1 d4c5
f2f4 c6h6 a1g1 c5b4 g1g5 h6e6) -3.65/7 1} 99. Qa1+ {(a3a1 d4c5 h5f7 c5b4
a1h8 b4b3 h2g1 a6a5 h8e8 c6f6) +6.39/10 2} Kc5 {(d4c5 f2f4 a6a5 h5f7 c5b4
a1e1 b4b5 f4f5) -3.77/6 2} 100. Bf7 {(h5f7 c6h6 h2g1 h6d6 a1c1 d6d4 c1g5
c5b6 g5h6) +6.48/9 2} Nd6 {(c4d6 a1e5 c5b4 f7d5 c6b6 f2f4 d6c4 e5d4)
-3.85/7 1} 101. Qe5+ {(a1e5 c5b4 f7d5 c6b6 h2g1 b4a4 e5f4 a4b5 f4h6)
+6.86/9 2} Kb4 {(c5b4 f7d5 c6b6 f2f4 a6a5 e5d4 b4b5 h2g3) -3.84/6 1} 102.
Bd5 {(f7d5 c6b6 h2g1 b4b5 e5e6 a6a5 e6d7 b5c5 d7e6) +6.85/9 2} Rb6 {(c6b6
f2f4 a6a5 f4f5 a5a4 e5d4 b4b5 f5f6) -3.89/7 2} 103. Qe1+ {(e5e1 b4c5 e1e3
c5b5 h2g1 a6a5 e3e2 b5a4 e2e6) +6.75/9 2} Kb5 {(b4b5 f2f4 a6a5 d5e6 d6b7
e1e5 b7c5 f4f5) -3.82/6 1} 104. Kg1 {(h2g1 a6a5 e1e2 b5b4 e2d2 b4b5 d2e2
b5a4 e2e6) +6.75/9 2} a5 {(a6a5 d5e6 b5a6 e1f1 a6b7 f2f4 a5a4 f4f5) -3.81/7
1} 105. Qe2+ {(e1e2 b5a4 e2c2 a4b5 c2e2 b5a4 e2c2 a4b5 c2h7) +6.84/9 2} Kb4
{(b5b4 d5e6 b4c5 e2e3 c5b5 e6d7 b5a6 e3d3 a6b7 f2f4) -3.74/6 1} 106. Qd2+
{(e2d2 b4b5 d2d3 b5c5 d3e3 c5b5 e3e2 b5a4 e2e6) +6.75/9 2} Kb5 {(b4b5 d5e6
b5a6 d2d3 a6b7 f2f4 a5a4 f4f5) -3.81/6 1} 107. Qd3+ {(d2d3 b5c5 d3e3 c5b5
e3e2 b5a4 e2c2 a4b5 c2h7) +6.84/9 2} Kc5 {(b5c5 d5b3 b6b5 f2f4 b5b6 d3e3
c5b5 g1f2) -3.74/6 1} 108. Qd1 {(d3e3 c5b5 e3d3 b5c5 d3e3 c5b5 e3e2 b5a4
e2e6) +6.75/9 2} a4 {(a5a4 d5e6 d6b7 d1d5 c5b4 f2f4 b6b5 d5e4) -3.43/7 1}
109. Be6 {(d5e6 c5b5 d1a1 d6c4 a1b1 b5c5 b1f5 c5b4 f5f7) +6.69/9 2} Nb5
{(d6b5 d1d5 c5b4 d5e4 b4c5 e4e3 c5c6 e6d5 c6c7 f2f4) -3.58/6 1} 110. Qd5+
{(d1d5 c5b4 d5e4 b4c5 e4c4 c5d6 e6f5 a4a3 c4f7 b5d4) +6.55/10 2} Kb4 {(c5b4
d5e4 b4c5 e4e3 c5c6 e6d5 c6d5 e3b6 b5d4 f2f4) -5.23/6 1} 111. Qd2+ {(d5d2
b4c5 d2e3 c5c6 e6d5 c6d5 e3b6 b5d6 b6d8) +7.62/9 2} Kc5 {(b4c5 d2e3 c5c6
e6d5 c6d5 e3b6 b5c3 b6a5 d5d4 f2f4) -5.28/6 1} 112. Qe3+ {(d2e3 c5c6 e6d5
c6d5 e3b6 b5d4 b6a5 d5c4 a5a4 c4c3) +7.43/10 2} Kc6 {(c5c6 e6d5 c6d5 e3b6
d5c4 b6c6 c4b4 c6e4 b4b3 f2f4) -5.63/6 1} 113. Bd5+ {(e6d5 c6d5 e3b6 b5d4
b6a5 d5e6 a5b6 e6d5 b6h6) +7.64/9 2} Kxd5 {(c6d5 e3b6 d5c4 b6c6 c4b4 c6e4
b4b3 e4d3 b3b4 f2f4) -5.53/6 1} 114. Qxb6 {(e3b6 d5c4 b6e6 c4c3 e6e3 c3c4
e3e2 c4b4 e2e8 b5d4) +7.47/10 2} Kc4 {(d5c4 f2f4 a4a3 f4f5 b5d4 b6a5 d4b5
f5f6) -5.68/8 2} 115. Qe6+ {(b6e6 c4b4 e6e4 b4b3 e4b1 b3c4 b1a2 c4b4 a2b2
b4c4 b2f6) +7.85/11 2} Kb4 {(c4b4 f2f4 b5d4 e6d6 b4c4 g1f2 d4f5 d6a3)
-5.58/6 1} 116. Qe4+ {(e6e7 b4b3 e7f7 b3c3 f7f3 c3c4 f3c6 c4b4 c6f6 b4b3)
+7.49/10 2} Kb3 {(b4b3 f2f4 a4a3 f4f5 a3a2 e4d5 b3a3 d5c5) -5.54/6 1} 117.
Qb1+ {(e4b1 b3c4 b1a2 c4b4 a2b2 b4c4 b2e2 c4b4 e2e8 b5d4) +7.47/10 2} Kc4
{(b3c4 b1a2 c4b4 f2f4 a4a3 a2d5 b5c3 d5d4 b4b3 f4f5) -5.60/7 1} 118. Qa2+
{(b1a2 c4b4 a2b2 b4a5 b2e2 a5b6 e2e5 b6a6 e5e2 a4a3 e2e8) +7.82/11 2} Kb4
{(c4b4 f2f4 a4a3 a2d5 b5c3 d5d4 b4b3 f4f5) -5.60/6 1} 119. Qb1+ {(a2b1 b4c4
b1a2 c4b4 a2b2 b4c4 b2e2 c4b4 e2b2 b4c4 b2f6) +7.85/11 2} Kc4 {(b4c4)
0.00/11 1} 120. Qa2+ {(b1a2 c4b4 a2b2 b4a5 b2e2 a5b6 e2e5 b6a6 e5e2 a4a3
e2e8) +7.82/11 2} Kb4 {(c4b4) 0.00/12 1} 121. Qb2+ {(a2b2 b4a5 b2d2 a5a6
d2c2 a4a3 c2c6 a6a5 c6a8 a5b6 a8e8) +7.82/11 2} Kc4 {(b4c4 f2f4 a4a3 b2e2
c4b4 f4f5 b5d4 e2e7 b4c4 f5f6) -5.58/7 1} 122. Qe2+ {(b2e2 c4b4 e2b2 b4c4
b2e2 c4c5 e2e5 c5c4 e5e6 c4c3 e6e8) +7.74/11 2} Kb4 {(c4b4 f2f4 a4a3 f4f5
b5d4 e2e7 b4c4 f5f6) -5.58/6 1} 123. Qe7+ {(e2e7 b4b3 e7f7 b3c3 f7f3 c3c4
f3c6 c4b4 c6f6 b4b3) +7.49/10 2} Kb3 {(b4b3 f2f4 a4a3 f4f5 a3a2 e7f7 b3a3
f7f8) -5.54/6 1} 124. Qf7+ {(e7e6 b3c3 e6c8 c3b3 c8g8 b3c3 g8c8 c3b4 c8e8
b5d4) +7.47/10 2} Kb4 {(b3b4 f2f4 a4a3 f7d5 b5c3 d5d4 b4b3 f4f5) -5.60/6 1}
125. Qe7+ {(f7f4 b4b3 f4f7 b3c3 f7f3 c3c4 f3c6 c4b4 c6f6 b4b3) +7.49/10 2}
Kb3 {(b4b3) 0.00/10 1} 126. Qg5 {(e7e6 b3c3 e6c8 c3b3 c8g8 b3c3 g8c8 c3b4
c8e8 b5d4) +7.47/10 2} Nc3 {(b5c3 g5g8 b3b4 f2f4 a4a3 g8f8 b4b3 f8f7 b3c2
f7g6 c2d2 f4f5) -5.50/8 1} 127. Qg8+ {(g5g8 b3c2 g8h7 c2b2 h7e7 b2b1 e7f6
b1b2 f6h6 b2b1) +7.11/10 2} Kb4 {(b3b4 f2f4 a4a3 g8f8 b4b3 f8f7 b3c2 f7h7
c2d2 f4f5) -5.50/6 1} 128. Qb8+ {(g8b8 b4c4 b8g8 c4b5 g8e8 b5c4 e8g8 c4b4
g8f7 b4b5) +7.42/10 2} Kc4 {(b4c4 f2f4 a4a3 b8c7 c4b4 c7d6 b4b3 d6e6 b3b4
f4f5) -5.50/6 1} 129. Kg2 {(b8g8 c4d3 g8f7 d3d2 f7f6 d2c2 f6g6 c2b2 g6f6
b2b3) +7.16/10 2} a3 {(a4a3 b8g8 c4b4 g8f8 b4b3 f8f7 b3b2 f2f4 a3a2 f7b7)
-5.36/7 1} 130. f4 {(b8g8 c4d3 g8g6 d3c4 g6g8 c4b4 g8f8 b4a4 f8e8 a4b3)
+6.96/10 2} a2 {(a3a2 b8a8 c4d3 f4f5 d3d4 f5f6 d4e5) -5.42/7 1} 131. Qb2
{(b8b2 c4d4 f4f5 d4d3 f5f6 c3d1 b2a2 d1e3 g2g1 d3c3) +7.18/10 2} Kd3 {(c4d3
f4f5 c3e4 b2a2 d3d4 a2a1 d4c4 f5f6 c4d5) -7.42/8 1} 132. f5 {(f4f5 c3d5
b2a2 d5e3 g2g1 d3e4 a2e6 e4f4 f5f6 f4f3) +7.78/10 2} Ne4 {(c3e4 b2a2 e4c3
a2a6 d3d4 f5f6 c3d5 f6f7 d5e3) -7.70/8 1} 133. Qxa2 {(b2a2 e4c3 a2b3 d3d2
f5f6 c3e2 f6f7 e2f4 g2g1 f4g6) +8.93/10 2} Nc3 {(e4c3 a2a6 d3d4 f5f6 c3d5
f6f7 d5b4 a6b5) -7.75/7 1} 134. Qa6+ {(a2a6 d3c2 f5f6 c3d1 g2g1 d1e3 a6e2
c2c1 f6f7 c1b1) +15.21/10 2} Ke4 {(d3e4 f5f6 c3d5 f6f7 d5f4 g2g3 f4e6 a6e6)
-10.85/6 1} 135. f6 {(f5f6 c3d1 f6f7 d1e3 g2g1 e4f4 a6f6 f4g4 f6g6 g4f3)
+15.84/10 2} Ke3 {(e4e3 f6f7 c3e2 f7f8q e2d4 f8e7 e3d2 g2f2) -15.60/7 1}
136. f7 {(f6f7 c3e2 f7f8q e2f4 g2h1 f4d5 a6h6 e3d3 f8e8 d5c3) +16.68/10 2}
Nd5 {(c3d5 f7f8q d5f4 g2g3 f4e2 g3g4 e3d4 a6e2 d4d5) -18.80/7 1} 137. f8=Q
{(f7f8q e3d4 a6d6 d4c4 f8f7 c4c3 d6d5 c3c2 d5e6 c2b1) +19.14/10 2} Nf4+
{(d5f4 g2f1 f4d5 f8f2 e3e4 a6e2 d5e3 e2e3 e4d5 f2d2 d5c6 f1e2) -19.21/6 1}
138. Kf1 {(g2f1 e3f3 a6a4 f3g3 a4f4 g3h3 f8h6 c2b1 h3g2) +M4/10 2} Nd3
{(f4d3 f8e7 e3d4 e7d6 d4c3 a6d3 c3b2 d6a3) -M4/6 1} 139. Qc4 {(a6c4 e3d2
f8d8 d2d1 d8d3 e3f4 d3g3) +M3/9 2} Kd2 {(e3d2 f8d8 d2e3 d8d3) -M2/5} 140.
Qd8 {(f8d8 d2d1 d8d3 d2d1) +M2/9 2} Ke3 {(d2e3 d8d3) -M1/3} 141. Qdxd3#
{(d8d3 e3f4) +M1/9 2} 1-0
[/pgn]
Keeping in the spirit of originality Bricabrac keeps two full 64 bit hash signatures. Given that on todays hardware with multithreading it is possible to search many tens of billions of positions at long time controls the added accuracy may be a good thing. It however did slow the node rate more than anticipated.
r n b q k b n r
p p p p p p p p
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
P P P P P P P P
R N B Q K B N R

Hash Key = 7f1909a61f366a6b
Hash Sig = 18ad3ae65ae07f66
Reps = 1
Enter Command(w):
st 30
r n b q k b n r
p p p p p p p p
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
P P P P P P P P
R N B Q K B N R

Hash Key = 7f1909a61f366a6b
Hash Sig = 18ad3ae65ae07f66
Reps = 1
Enter Command(w):
go

Begin Depth 1
1 36 0 40 g1f3

Begin Depth 2
2 0 0 466 g1f3 g8f6

Begin Depth 3
3 35 0 2808 g1f3 g8f6 d2d4

Begin Depth 4
4 0 0 20688 g1f3 g8f6 d2d4 d7d5

Begin Depth 5
5 33 1 109321 g1f3 g8f6 d2d4 d7d5 b1c3

Begin Depth 6
6 0 3 257005 g1f3 g8f6 d2d4 d7d5 b1c3 b8c6

Begin Depth 7
7 28 11 958266 g1f3 g8f6 d2d4 d7d5 b1c3 b8c6 c1e3

Begin Depth 8
8 8 28 2541359 b1c3 g8f6 e2e4 b8c6 g1f3 e7e5 d2d4 f8d6

Begin Depth 9
9 29 96 8671981 e2e4 b8c6 g1f3 g8f6 b1c3 d7d5 e4d5 f6d5 d2d4

Begin Depth 10
10 13 372 34357285 e2e4 e7e5 g1f3 b8c6 f1d3 g8f6 e1g1 d7d5 b1c3 c8e6

Begin Depth 11
11 31 1593 144464906 e2e4 b8c6 d2d4 e7e6 b1c3 d7d5 e4e5 f8b4 g1e2 g8e7 c1e3

Begin Depth 12
e2e4 17
g1f3 5
d2d4 5
b1c3 5
e2e3 0
c2c4 15
g2g3 13
a2a3 7
d2d3 2
c2c3 1
h2h3 1
a2a4 -1
b2b3 -10
b1a3 -11
h2h4 -12
g1h3 -20
f2f4 -24
b2b4 -26
f2f3 -38
g2g4 -48

Move Played: E2E4 Score: 31
r n b q k b n r
p p p p p p p p
. . . . . . . .
. . . . . . . .
. . . . P . . .
. . . . . . . .
P P P P . P P P
R N B Q K B N R

Hash Key = 62163da122f544ce
Hash Sig = 5b3660c064b0ed8
Reps = 1
ep square = 20
Enter Command(b):

If one looks at the move list e2e4 is scored +17 and yet as played it is scored at +31. That is because the last iteration is not being thrown out if a move searched in an incomplete iteration - margin is > than the move of the previous iteration. In this case it is the same move. I have no idea if this is a good or bad idea. I have read that incomplete iterations are simply thrown away.

There may still be a problem though. Bricabrac is not castling with the black pieces. And is losing games because of it. It used to castle with the black pieces but not currently. So who knows what I did to break that.

Next will be to replace the PESTO evaluation. They were handy for early development and debugging but now it is time to replace them.
Sven
Posts: 4052
Joined: Thu May 15, 2008 9:57 pm
Location: Berlin, Germany
Full name: Sven Schüle

Re: Progress On Bricabrac

Post by Sven »

Mike Sherwin wrote: Sun May 02, 2021 11:00 pm If one looks at the move list e2e4 is scored +17 and yet as played it is scored at +31. That is because the last iteration is not being thrown out if a move searched in an incomplete iteration - margin is > than the move of the previous iteration. In this case it is the same move. I have no idea if this is a good or bad idea. I have read that incomplete iterations are simply thrown away.
There is no need to always throw away incomplete iterations. Of course you do that automatically if the current best move of the new iteration is the same as the best move kf the previous iteration at the moment of timeout, since there is no essential new information coming from the new iteration. But once you have completed the search of at least two root moves and your search changes its mind to prefer a different move, you have two choices other than ignoring that:
1) accept the new best move, terminate search and play it (because you already know that the old best move is no longer best with the current search depth!),
2) allocate more time (if possible) and try to complete the current iteration.

Option 1) should be obvious, and is really trivial to implement (in the ID loop, maintain only one "best move", always update it with the move returned by searching the root node, and let that root search always return the best move found so far even if not all root moves were searched).. Playing the old best move despite knowing it is no longer best can sometimes be disastrous.

Option 2) looks attractive especially if the old best move now gets a significantly worse score so that you may assume some trouble.

It may even be feasible to estimate how likely it is that you will be able to complete searching at least the first two root moves, and possibly decide not to start the new iteration at all because it will most probably not be able to reach the point where changing mind is even possible.
There may still be a problem though. Bricabrac is not castling with the black pieces. And is losing games because of it. It used to castle with the black pieces but not currently. So who knows what I did to break that.
You introduced a new compiler bug 😜
Sven Schüle (engine author: Jumbo, KnockOut, Surprise)
Mike Sherwin
Posts: 925
Joined: Fri Aug 21, 2020 1:25 am
Location: Planet Earth, Sol system
Full name: Michael J Sherwin

Re: Progress On Bricabrac

Post by Mike Sherwin »

Sven wrote: Mon May 03, 2021 8:02 am
Mike Sherwin wrote: Sun May 02, 2021 11:00 pm If one looks at the move list e2e4 is scored +17 and yet as played it is scored at +31. That is because the last iteration is not being thrown out if a move searched in an incomplete iteration - margin is > than the move of the previous iteration. In this case it is the same move. I have no idea if this is a good or bad idea. I have read that incomplete iterations are simply thrown away.
There is no need to always throw away incomplete iterations. Of course you do that automatically if the current best move of the new iteration is the same as the best move kf the previous iteration at the moment of timeout, since there is no essential new information coming from the new iteration. But once you have completed the search of at least two root moves and your search changes its mind to prefer a different move, you have two choices other than ignoring that:
1) accept the new best move, terminate search and play it (because you already know that the old best move is no longer best with the current search depth!),
2) allocate more time (if possible) and try to complete the current iteration.

Option 1) should be obvious, and is really trivial to implement (in the ID loop, maintain only one "best move", always update it with the move returned by searching the root node, and let that root search always return the best move found so far even if not all root moves were searched).. Playing the old best move despite knowing it is no longer best can sometimes be disastrous.

Option 2) looks attractive especially if the old best move now gets a significantly worse score so that you may assume some trouble.

It may even be feasible to estimate how likely it is that you will be able to complete searching at least the first two root moves, and possibly decide not to start the new iteration at all because it will most probably not be able to reach the point where changing mind is even possible.
There may still be a problem though. Bricabrac is not castling with the black pieces. And is losing games because of it. It used to castle with the black pieces but not currently. So who knows what I did to break that.
You introduced a new compiler bug[/color] 😜
Thanks for the explanation. And it is not my fault if the compiler cannot keep up with my coding ideas! :mrgreen:
Mike Sherwin
Posts: 925
Joined: Fri Aug 21, 2020 1:25 am
Location: Planet Earth, Sol system
Full name: Michael J Sherwin

Re: Progress On Bricabrac

Post by Mike Sherwin »

The very early beginning of an evaluator that starts each search with zero knowledge of chess other than material that learns to evaluate during the search. And its very first game! :D
[pgn][Event "Computer chess game"]
[Site "DESKTOP-HFVHK2B"]
[Date "2021.05.04"]
[Round "?"]
[White "Bricabrac"]
[Black "Bricabrac"]
[Result "0-1"]
[BlackElo "2200"]
[ECO "A00"]
[Opening "Saragossa Opening"]
[Time "10:18:23"]
[WhiteElo "2200"]
[TimeControl "0+30"]
[Termination "normal"]
[PlyCount "84"]
[WhiteType "program"]
[BlackType "program"]

1. c3 {(c2c3 a7a6 d2d3 e7e6 c1e3 d8h4 e1d2 f8d6 g2g3) +0.15/9 29} Nc6
{(b8c6 d1c2 a7a5 b2b3 c6a7 a2a3 b7b5 d2d3) -0.05/8 29} 2. b3 {(b2b3 c6b8
d2d4 g8h6 c1g5 h6f5 a2a3 f5d6) +0.08/8 29} d5 {(d7d5 e2e3 g8f6 a2a4 c8f5
d2d3 e8d7 a4a5) -0.05/8 29} 3. Bb2 {(c1b2 e8d7 d2d4 d7e6 f2f3 e6f5 e2e3
f5g5) +0.10/8 29} Nf6 {(g8f6 d2d3 e8d7 e2e3 d7d6 b2a3 d6d7 f2f3) -0.03/8
29} 4. h3 {(h2h3 e8d7 d2d4 e7e5 d4e5 c6e5 f2f4 e5c6) +0.08/8 29} h6 {(h7h6
d2d3 e8d7 e2e4 d7d6 b2a3 d6d7 e4d5) -0.04/8 29} 5. e3 {(e2e3 e8d7 d1f3 d7e6
d2d4 h6h5 b2a3 h5h4) +0.12/8 29} Kd7 {(e8d7 a2a3 c6a5 d2d3 d7d6 g2g3 h6h5
f2f3) -0.06/8 29} 6. d4 {(d2d4 e7e5 d1f3 e5d4 e3d4 d7e7 e1d2 e7d7) +0.10/8
29} g5 {(g7g5 g1f3 d7e6 a2a4 f8g7 a4a5 e6d7 f3e5) -0.05/8 29} 7. a3 {(a2a3
h6h5 f2f3 a7a6 g2g4 e7e5 b1d2 h5g4) +0.10/8 29} Ne4 {(f6e4 g2g4 e7e6 d1f3
d8e7 f1d3 e4d6 g1e2) -0.08/8 29} 8. c4 {(c3c4 e4f6 c4c5 f6e4 d1h5 f7f5 f2f3
e4f6) +0.12/8 29} Nf6 {(e4f6 b1d2 d7d6 d1f3 d6e6 g2g3 d5c4 d2c4) 0.00/8 29}
9. cxd5 {(c4d5 f6d5 e3e4 d5f6 g2g4 d7e8 e4e5 f6d5) +0.08/8 29} Nxd5 {(f6d5
d1f3 d7e8 b1c3 e7e6 c3d5 e6d5 g2g3) -0.05/8 29} 10. e4 {(e3e4 d5f6 d4d5
c6b8 e4e5 g5g4 e5f6 g4h3) +1.79/8 29} e6 {(e7e6 e4d5 e6d5 d1g4 d7d6 g4g3
d6e6 f2f3) -1.79/8 29} 11. exd5 {(e4d5 e6d5 d1g4 d7d6 g4g3 d6d7 g3g4 d7d6)
+1.81/8 29} exd5 {(e6d5 d1f3 d7e6 e1d2 c6a5 f3e3 e6d6 d2c1) -1.82/8 29} 12.
f3 {(f2f3 h6h5 e1f2 d7e6 g2g4 h5g4 f3g4 e6f6) +1.88/8 29} Qf6 {(d8f6 g1e2
f8g7 a3a4 h8e8 e1d2 e8e6 b1a3) -1.80/8 29} 13. Ne2 {(g1e2 c6a5 a3a4 f6b6
b1d2 h6h5 g2g3 d7c6) +1.84/8 29} Qe6 {(f6e6 d1d3 f7f5 b1c3 c6e7 c3d1 e6f7
d1e3) -1.83/8 29} 14. Qd3 {(d1d3 c6e7 e1d2 h6h5 d2c1 e6c6 b1c3 a7a5)
+1.91/8 29} Ne7 {(c6e7 b1c3 e7f5 e1d2 h6h5 d2c1 f5e3 d3b5) -1.85/8 30} 15.
Kd1 {(e1d1 e7f5 b2c1 f5d6 d3e3 e6e3 c1e3 d6b5) +1.90/8 29} Nf5 {(e7f5 b2c1
f5d6 g2g4 b7b6 f3f4 d6e4) -1.87/7 29} 16. Bc1 {(b2c1 e6f6 g2g4 f5h4 e2g1
h6h5 d3b5 c7c6) +1.91/8 29} b6 {(b7b6 g2g4 f5h4 f3f4 g5f4 e2f4 e6c6 f4g2)
-1.89/8 29} 17. Nbc3 {(b1c3 c7c6 c3a4 f5d6 d3e3 e6e3 c1e3 d6b5) +1.90/8 29}
c6 {(c7c6 g2g4 f5d6 a1a2 d6e8 f3f4 g5f4) -1.88/7 29} 18. g4 {(g2g4 f5h4
e2g3 e6f6 g3f5 h6h5 c3e2) +1.91/7 30} Nh4 {(f5h4 a1a2 f7f5 e2g3 d7d6 g4f5
h4f5 g3f5) -1.86/8 29} 19. Ra2 {(a1a2 f7f5 g4f5 e6f6 a3a4 f6f5 d3f5)
+1.86/7 29} Bb7 {(c8b7 c1b2 h6h5 h1h2 h5g4 f3g4 a7a5) -1.85/7 30} 20. f4
{(f3f4 g5f4 e2f4 e6d6 f4g2 h4g2 f1g2) +1.86/7 29} Be7 {(f8e7 f4f5 e6d6 c1d2
h6h5 h1g1 h5g4) -1.81/7 29} 21. f5 {(f4f5 e6d6 e2g1 c6c5 c3b5 d6c6 g1f3)
+1.92/7 29} Qd6 {(e6d6 a2d2 e7f6 d3g3 d6g3 e2g3 a7a5) -1.88/7 29} 22. a4
{(a3a4 d6b4 a2b2 c6c5 c3a2 b4a3 b2d2) +1.91/7 29} Bf6 {(e7f6 c1d2 c6c5 c3b5
d6c6 b5a3 c5d4) -1.88/7 30} 23. Ba3 {(c1a3 d6b8 c3b1 a7a6 e2g3 b6b5 g3h5)
+1.94/7 29} Qc7 {(d6c7 a2a1 a7a5 a1c1 b7a6 c3b5 a8a7) -1.88/7 29} 24. Rg1
{(h1g1 h6h5 a2c2 c7h2 a3c1 h5g4 g1g4) +1.89/7 29} a5 {(a7a5 d3g3 c7g3 g1g3
h6h5 a3c1 h5g4) -1.87/7 29} 25. Ng3 {(e2g3 b7a6 d3e3 a6f1 g3f1 h6h5 a2c2)
+1.91/7 29} Qf4 {(c7f4 c3e2 f4f3 a2d2 b7a6 d3f3 h4f3) -1.89/7 29} 26. Nce2
{(c3e2 f4f3 a2d2 b6b5 g3h5 f3d3 d2d3) +1.88/7 30} Qf3 {(f4f3 d1c2 b7a6 d3d2
f6g7 a3b2 a8f8 g3h1) -1.87/8 29} 27. Kc2 {(d1c2 f3d3 c2d3 b6b5 a3c5 b5a4
a2a4 d7c7) +1.86/8 29} Ba6 {(b7a6 d3d2 a8c8 d2c3 f3c3 c2c3 h4f3) -1.90/7
29} 28. Qd1 {(d3d1 h8e8 a3c1 f3f2 c2b1 c6c5 c1b2) +1.77/7 29} c5 {(c6c5
d4c5 b6c5 a3b2 d5d4 g3h5 d4d3) -1.79/7 29} 29. dxc5 {(d4c5 b6c5 a3c1 c5c4
b3c4 a6c4 a2a3) +1.76/7 29} bxc5 {(b6c5 a3c1 c5c4 a2a3 c4b3 a3b3 a8c8)
-1.85/7 29} 30. Bc1 {(a3c1 c5c4 b3c4 a8c8 c2b1 a6c4 a2a3) +1.82/7 29} c4
{(c5c4 b3c4 a8c8 a2a3 c8c4 c2b1 c4b4) -1.79/7 29} 31. bxc4 {(b3c4 h8c8 a2a3
a6c4 c2d2 f3f2 a3e3) +1.80/7 29} Bxc4 {(a6c4 a2a3 h8c8 c2d2 f3f2 g3h5 f6d4)
-1.81/7 29} 32. Ra3 {(a2a3 a8c8 c2d2 f3f2 g3h5 f6e7 a3a1) +1.73/7 29} Rhc8
{(h8c8 c2d2 f3f2 g3h5 f6e5 g1g3 e5g3 h5g3) -0.14/8 29} 33. Kd2 {(c2d2 f3f2
g3h5 f6e7 g1g3 e7b4 g3c3 b4c3) +0.06/8 29} Qf2 {(f3f2 g3h5 f6e5 a3e3 h4f3
e3f3 f2f3 h5g3) +0.23/8 29} 34. Re3 {(a3e3 h4f3 e3f3 f2f3 f1g2 f3d3 d2e1
d3d1) -0.19/8 29} Re8 {(c8e8 e3a3 h4f3 a3f3 f2f3 g3h5 f3e3 d2c2) +0.31/8
29} 35. Rd3 {(e3d3 h4f3 d3f3 f2f3 g3h5 f3d3 d2e1 d3d1) -0.37/8 30} Nf3+
{(h4f3 d3f3 f2f3 d1c2 f6d4 f1g2 f3f2 c2d1) +1.86/8 29} 36. Rxf3 {(d3f3 f2f3
d1c2 a8c8 d2e1 c4e2 c2c8 e8c8 g3e2) -3.98/9 29} Qxf3 {(f2f3 d1c2 a8c8 d2e1
c4e2 c2c8 d7c8 g3e2) +3.94/8 29} 37. Qc2 {(d1c2 a8c8 d2e1 c4e2 c2c8 e8c8
g3e2 c8c2) -3.98/8 29} Rac8 {(a8c8 d2e1 f6d4 g1g2 c4e2 c2c8 d7c8 g3e2)
+4.99/8 29} 38. Ke1 {(d2e1 c4e2 c2c8 e8c8 g3e2 f3e4 c1a3 e4a4) -4.98/8 29}
Bxe2 {(c4e2 c2c8 e8c8 c1g5 e2f1 g5f6 f1h3 g4g5) +7.95/8 29} 39. Qxc8+
{(c2c8 e8c8 c1g5 e2f1 g5f6 f1h3 g4g5) -8.03/7 29} Rxc8 {(e8c8 c1d2 e2f1
g3f1 f6d4 f1e3 d4e3 d2e3 f3e3 e1f1) +11.19/10 29} 40. Bd2 {(c1d2 e2f1 g3f1
f6d4 f1e3 d4e3 d2e3 f3e3) -10.19/8 29} Bxf1 {(e2f1 g3f1 c8b8 d2a5 b8b1 e1d2
f3f2 d2d3 f2g1) +11.20/9 29} 41. Nxf1 {(g3f1 f6d4 f1e3 d4e3 d2e3 f3e3 e1f1
e3h3) -11.28/8 29} Rb8 {(c8b8 d2b4 b8b4 e1d2 f3f2 d2c1 f2g1 c1d2) +18.41/8
29} 42. Bb4 {(d2b4 b8b4 e1d2 f3f2 d2c1 b4b1 c1b1 f2b2) -M4/9 29} Rxb4
{(b8b4 e1d2 f3f2 d2c1 b4b1 c1b1 f2b2) +M4/9 29 White resigns} 0-1
[/pgn]
Pio
Posts: 335
Joined: Sat Feb 25, 2012 10:42 pm
Location: Stockholm

Re: Progress On Bricabrac

Post by Pio »

Mike Sherwin wrote: Tue May 04, 2021 7:10 pm The very early beginning of an evaluator that starts each search with zero knowledge of chess other than material that learns to evaluate during the search. And its very first game! :D
[pgn][Event "Computer chess game"]
[Site "DESKTOP-HFVHK2B"]
[Date "2021.05.04"]
[Round "?"]
[White "Bricabrac"]
[Black "Bricabrac"]
[Result "0-1"]
[BlackElo "2200"]
[ECO "A00"]
[Opening "Saragossa Opening"]
[Time "10:18:23"]
[WhiteElo "2200"]
[TimeControl "0+30"]
[Termination "normal"]
[PlyCount "84"]
[WhiteType "program"]
[BlackType "program"]

1. c3 {(c2c3 a7a6 d2d3 e7e6 c1e3 d8h4 e1d2 f8d6 g2g3) +0.15/9 29} Nc6
{(b8c6 d1c2 a7a5 b2b3 c6a7 a2a3 b7b5 d2d3) -0.05/8 29} 2. b3 {(b2b3 c6b8
d2d4 g8h6 c1g5 h6f5 a2a3 f5d6) +0.08/8 29} d5 {(d7d5 e2e3 g8f6 a2a4 c8f5
d2d3 e8d7 a4a5) -0.05/8 29} 3. Bb2 {(c1b2 e8d7 d2d4 d7e6 f2f3 e6f5 e2e3
f5g5) +0.10/8 29} Nf6 {(g8f6 d2d3 e8d7 e2e3 d7d6 b2a3 d6d7 f2f3) -0.03/8
29} 4. h3 {(h2h3 e8d7 d2d4 e7e5 d4e5 c6e5 f2f4 e5c6) +0.08/8 29} h6 {(h7h6
d2d3 e8d7 e2e4 d7d6 b2a3 d6d7 e4d5) -0.04/8 29} 5. e3 {(e2e3 e8d7 d1f3 d7e6
d2d4 h6h5 b2a3 h5h4) +0.12/8 29} Kd7 {(e8d7 a2a3 c6a5 d2d3 d7d6 g2g3 h6h5
f2f3) -0.06/8 29} 6. d4 {(d2d4 e7e5 d1f3 e5d4 e3d4 d7e7 e1d2 e7d7) +0.10/8
29} g5 {(g7g5 g1f3 d7e6 a2a4 f8g7 a4a5 e6d7 f3e5) -0.05/8 29} 7. a3 {(a2a3
h6h5 f2f3 a7a6 g2g4 e7e5 b1d2 h5g4) +0.10/8 29} Ne4 {(f6e4 g2g4 e7e6 d1f3
d8e7 f1d3 e4d6 g1e2) -0.08/8 29} 8. c4 {(c3c4 e4f6 c4c5 f6e4 d1h5 f7f5 f2f3
e4f6) +0.12/8 29} Nf6 {(e4f6 b1d2 d7d6 d1f3 d6e6 g2g3 d5c4 d2c4) 0.00/8 29}
9. cxd5 {(c4d5 f6d5 e3e4 d5f6 g2g4 d7e8 e4e5 f6d5) +0.08/8 29} Nxd5 {(f6d5
d1f3 d7e8 b1c3 e7e6 c3d5 e6d5 g2g3) -0.05/8 29} 10. e4 {(e3e4 d5f6 d4d5
c6b8 e4e5 g5g4 e5f6 g4h3) +1.79/8 29} e6 {(e7e6 e4d5 e6d5 d1g4 d7d6 g4g3
d6e6 f2f3) -1.79/8 29} 11. exd5 {(e4d5 e6d5 d1g4 d7d6 g4g3 d6d7 g3g4 d7d6)
+1.81/8 29} exd5 {(e6d5 d1f3 d7e6 e1d2 c6a5 f3e3 e6d6 d2c1) -1.82/8 29} 12.
f3 {(f2f3 h6h5 e1f2 d7e6 g2g4 h5g4 f3g4 e6f6) +1.88/8 29} Qf6 {(d8f6 g1e2
f8g7 a3a4 h8e8 e1d2 e8e6 b1a3) -1.80/8 29} 13. Ne2 {(g1e2 c6a5 a3a4 f6b6
b1d2 h6h5 g2g3 d7c6) +1.84/8 29} Qe6 {(f6e6 d1d3 f7f5 b1c3 c6e7 c3d1 e6f7
d1e3) -1.83/8 29} 14. Qd3 {(d1d3 c6e7 e1d2 h6h5 d2c1 e6c6 b1c3 a7a5)
+1.91/8 29} Ne7 {(c6e7 b1c3 e7f5 e1d2 h6h5 d2c1 f5e3 d3b5) -1.85/8 30} 15.
Kd1 {(e1d1 e7f5 b2c1 f5d6 d3e3 e6e3 c1e3 d6b5) +1.90/8 29} Nf5 {(e7f5 b2c1
f5d6 g2g4 b7b6 f3f4 d6e4) -1.87/7 29} 16. Bc1 {(b2c1 e6f6 g2g4 f5h4 e2g1
h6h5 d3b5 c7c6) +1.91/8 29} b6 {(b7b6 g2g4 f5h4 f3f4 g5f4 e2f4 e6c6 f4g2)
-1.89/8 29} 17. Nbc3 {(b1c3 c7c6 c3a4 f5d6 d3e3 e6e3 c1e3 d6b5) +1.90/8 29}
c6 {(c7c6 g2g4 f5d6 a1a2 d6e8 f3f4 g5f4) -1.88/7 29} 18. g4 {(g2g4 f5h4
e2g3 e6f6 g3f5 h6h5 c3e2) +1.91/7 30} Nh4 {(f5h4 a1a2 f7f5 e2g3 d7d6 g4f5
h4f5 g3f5) -1.86/8 29} 19. Ra2 {(a1a2 f7f5 g4f5 e6f6 a3a4 f6f5 d3f5)
+1.86/7 29} Bb7 {(c8b7 c1b2 h6h5 h1h2 h5g4 f3g4 a7a5) -1.85/7 30} 20. f4
{(f3f4 g5f4 e2f4 e6d6 f4g2 h4g2 f1g2) +1.86/7 29} Be7 {(f8e7 f4f5 e6d6 c1d2
h6h5 h1g1 h5g4) -1.81/7 29} 21. f5 {(f4f5 e6d6 e2g1 c6c5 c3b5 d6c6 g1f3)
+1.92/7 29} Qd6 {(e6d6 a2d2 e7f6 d3g3 d6g3 e2g3 a7a5) -1.88/7 29} 22. a4
{(a3a4 d6b4 a2b2 c6c5 c3a2 b4a3 b2d2) +1.91/7 29} Bf6 {(e7f6 c1d2 c6c5 c3b5
d6c6 b5a3 c5d4) -1.88/7 30} 23. Ba3 {(c1a3 d6b8 c3b1 a7a6 e2g3 b6b5 g3h5)
+1.94/7 29} Qc7 {(d6c7 a2a1 a7a5 a1c1 b7a6 c3b5 a8a7) -1.88/7 29} 24. Rg1
{(h1g1 h6h5 a2c2 c7h2 a3c1 h5g4 g1g4) +1.89/7 29} a5 {(a7a5 d3g3 c7g3 g1g3
h6h5 a3c1 h5g4) -1.87/7 29} 25. Ng3 {(e2g3 b7a6 d3e3 a6f1 g3f1 h6h5 a2c2)
+1.91/7 29} Qf4 {(c7f4 c3e2 f4f3 a2d2 b7a6 d3f3 h4f3) -1.89/7 29} 26. Nce2
{(c3e2 f4f3 a2d2 b6b5 g3h5 f3d3 d2d3) +1.88/7 30} Qf3 {(f4f3 d1c2 b7a6 d3d2
f6g7 a3b2 a8f8 g3h1) -1.87/8 29} 27. Kc2 {(d1c2 f3d3 c2d3 b6b5 a3c5 b5a4
a2a4 d7c7) +1.86/8 29} Ba6 {(b7a6 d3d2 a8c8 d2c3 f3c3 c2c3 h4f3) -1.90/7
29} 28. Qd1 {(d3d1 h8e8 a3c1 f3f2 c2b1 c6c5 c1b2) +1.77/7 29} c5 {(c6c5
d4c5 b6c5 a3b2 d5d4 g3h5 d4d3) -1.79/7 29} 29. dxc5 {(d4c5 b6c5 a3c1 c5c4
b3c4 a6c4 a2a3) +1.76/7 29} bxc5 {(b6c5 a3c1 c5c4 a2a3 c4b3 a3b3 a8c8)
-1.85/7 29} 30. Bc1 {(a3c1 c5c4 b3c4 a8c8 c2b1 a6c4 a2a3) +1.82/7 29} c4
{(c5c4 b3c4 a8c8 a2a3 c8c4 c2b1 c4b4) -1.79/7 29} 31. bxc4 {(b3c4 h8c8 a2a3
a6c4 c2d2 f3f2 a3e3) +1.80/7 29} Bxc4 {(a6c4 a2a3 h8c8 c2d2 f3f2 g3h5 f6d4)
-1.81/7 29} 32. Ra3 {(a2a3 a8c8 c2d2 f3f2 g3h5 f6e7 a3a1) +1.73/7 29} Rhc8
{(h8c8 c2d2 f3f2 g3h5 f6e5 g1g3 e5g3 h5g3) -0.14/8 29} 33. Kd2 {(c2d2 f3f2
g3h5 f6e7 g1g3 e7b4 g3c3 b4c3) +0.06/8 29} Qf2 {(f3f2 g3h5 f6e5 a3e3 h4f3
e3f3 f2f3 h5g3) +0.23/8 29} 34. Re3 {(a3e3 h4f3 e3f3 f2f3 f1g2 f3d3 d2e1
d3d1) -0.19/8 29} Re8 {(c8e8 e3a3 h4f3 a3f3 f2f3 g3h5 f3e3 d2c2) +0.31/8
29} 35. Rd3 {(e3d3 h4f3 d3f3 f2f3 g3h5 f3d3 d2e1 d3d1) -0.37/8 30} Nf3+
{(h4f3 d3f3 f2f3 d1c2 f6d4 f1g2 f3f2 c2d1) +1.86/8 29} 36. Rxf3 {(d3f3 f2f3
d1c2 a8c8 d2e1 c4e2 c2c8 e8c8 g3e2) -3.98/9 29} Qxf3 {(f2f3 d1c2 a8c8 d2e1
c4e2 c2c8 d7c8 g3e2) +3.94/8 29} 37. Qc2 {(d1c2 a8c8 d2e1 c4e2 c2c8 e8c8
g3e2 c8c2) -3.98/8 29} Rac8 {(a8c8 d2e1 f6d4 g1g2 c4e2 c2c8 d7c8 g3e2)
+4.99/8 29} 38. Ke1 {(d2e1 c4e2 c2c8 e8c8 g3e2 f3e4 c1a3 e4a4) -4.98/8 29}
Bxe2 {(c4e2 c2c8 e8c8 c1g5 e2f1 g5f6 f1h3 g4g5) +7.95/8 29} 39. Qxc8+
{(c2c8 e8c8 c1g5 e2f1 g5f6 f1h3 g4g5) -8.03/7 29} Rxc8 {(e8c8 c1d2 e2f1
g3f1 f6d4 f1e3 d4e3 d2e3 f3e3 e1f1) +11.19/10 29} 40. Bd2 {(c1d2 e2f1 g3f1
f6d4 f1e3 d4e3 d2e3 f3e3) -10.19/8 29} Bxf1 {(e2f1 g3f1 c8b8 d2a5 b8b1 e1d2
f3f2 d2d3 f2g1) +11.20/9 29} 41. Nxf1 {(g3f1 f6d4 f1e3 d4e3 d2e3 f3e3 e1f1
e3h3) -11.28/8 29} Rb8 {(c8b8 d2b4 b8b4 e1d2 f3f2 d2c1 f2g1 c1d2) +18.41/8
29} 42. Bb4 {(d2b4 b8b4 e1d2 f3f2 d2c1 b4b1 c1b1 f2b2) -M4/9 29} Rxb4
{(b8b4 e1d2 f3f2 d2c1 b4b1 c1b1 f2b2) +M4/9 29 White resigns} 0-1
[/pgn]
Yes, king e8 to d7 was a real novelty 😁
Mike Sherwin
Posts: 925
Joined: Fri Aug 21, 2020 1:25 am
Location: Planet Earth, Sol system
Full name: Michael J Sherwin

Re: Progress On Bricabrac

Post by Mike Sherwin »

Pio wrote: Tue May 04, 2021 7:36 pm
Mike Sherwin wrote: Tue May 04, 2021 7:10 pm The very early beginning of an evaluator that starts each search with zero knowledge of chess other than material that learns to evaluate during the search. And its very first game! :D
[pgn][Event "Computer chess game"]
[Site "DESKTOP-HFVHK2B"]
[Date "2021.05.04"]
[Round "?"]
[White "Bricabrac"]
[Black "Bricabrac"]
[Result "0-1"]
[BlackElo "2200"]
[ECO "A00"]
[Opening "Saragossa Opening"]
[Time "10:18:23"]
[WhiteElo "2200"]
[TimeControl "0+30"]
[Termination "normal"]
[PlyCount "84"]
[WhiteType "program"]
[BlackType "program"]

1. c3 {(c2c3 a7a6 d2d3 e7e6 c1e3 d8h4 e1d2 f8d6 g2g3) +0.15/9 29} Nc6
{(b8c6 d1c2 a7a5 b2b3 c6a7 a2a3 b7b5 d2d3) -0.05/8 29} 2. b3 {(b2b3 c6b8
d2d4 g8h6 c1g5 h6f5 a2a3 f5d6) +0.08/8 29} d5 {(d7d5 e2e3 g8f6 a2a4 c8f5
d2d3 e8d7 a4a5) -0.05/8 29} 3. Bb2 {(c1b2 e8d7 d2d4 d7e6 f2f3 e6f5 e2e3
f5g5) +0.10/8 29} Nf6 {(g8f6 d2d3 e8d7 e2e3 d7d6 b2a3 d6d7 f2f3) -0.03/8
29} 4. h3 {(h2h3 e8d7 d2d4 e7e5 d4e5 c6e5 f2f4 e5c6) +0.08/8 29} h6 {(h7h6
d2d3 e8d7 e2e4 d7d6 b2a3 d6d7 e4d5) -0.04/8 29} 5. e3 {(e2e3 e8d7 d1f3 d7e6
d2d4 h6h5 b2a3 h5h4) +0.12/8 29} Kd7 {(e8d7 a2a3 c6a5 d2d3 d7d6 g2g3 h6h5
f2f3) -0.06/8 29} 6. d4 {(d2d4 e7e5 d1f3 e5d4 e3d4 d7e7 e1d2 e7d7) +0.10/8
29} g5 {(g7g5 g1f3 d7e6 a2a4 f8g7 a4a5 e6d7 f3e5) -0.05/8 29} 7. a3 {(a2a3
h6h5 f2f3 a7a6 g2g4 e7e5 b1d2 h5g4) +0.10/8 29} Ne4 {(f6e4 g2g4 e7e6 d1f3
d8e7 f1d3 e4d6 g1e2) -0.08/8 29} 8. c4 {(c3c4 e4f6 c4c5 f6e4 d1h5 f7f5 f2f3
e4f6) +0.12/8 29} Nf6 {(e4f6 b1d2 d7d6 d1f3 d6e6 g2g3 d5c4 d2c4) 0.00/8 29}
9. cxd5 {(c4d5 f6d5 e3e4 d5f6 g2g4 d7e8 e4e5 f6d5) +0.08/8 29} Nxd5 {(f6d5
d1f3 d7e8 b1c3 e7e6 c3d5 e6d5 g2g3) -0.05/8 29} 10. e4 {(e3e4 d5f6 d4d5
c6b8 e4e5 g5g4 e5f6 g4h3) +1.79/8 29} e6 {(e7e6 e4d5 e6d5 d1g4 d7d6 g4g3
d6e6 f2f3) -1.79/8 29} 11. exd5 {(e4d5 e6d5 d1g4 d7d6 g4g3 d6d7 g3g4 d7d6)
+1.81/8 29} exd5 {(e6d5 d1f3 d7e6 e1d2 c6a5 f3e3 e6d6 d2c1) -1.82/8 29} 12.
f3 {(f2f3 h6h5 e1f2 d7e6 g2g4 h5g4 f3g4 e6f6) +1.88/8 29} Qf6 {(d8f6 g1e2
f8g7 a3a4 h8e8 e1d2 e8e6 b1a3) -1.80/8 29} 13. Ne2 {(g1e2 c6a5 a3a4 f6b6
b1d2 h6h5 g2g3 d7c6) +1.84/8 29} Qe6 {(f6e6 d1d3 f7f5 b1c3 c6e7 c3d1 e6f7
d1e3) -1.83/8 29} 14. Qd3 {(d1d3 c6e7 e1d2 h6h5 d2c1 e6c6 b1c3 a7a5)
+1.91/8 29} Ne7 {(c6e7 b1c3 e7f5 e1d2 h6h5 d2c1 f5e3 d3b5) -1.85/8 30} 15.
Kd1 {(e1d1 e7f5 b2c1 f5d6 d3e3 e6e3 c1e3 d6b5) +1.90/8 29} Nf5 {(e7f5 b2c1
f5d6 g2g4 b7b6 f3f4 d6e4) -1.87/7 29} 16. Bc1 {(b2c1 e6f6 g2g4 f5h4 e2g1
h6h5 d3b5 c7c6) +1.91/8 29} b6 {(b7b6 g2g4 f5h4 f3f4 g5f4 e2f4 e6c6 f4g2)
-1.89/8 29} 17. Nbc3 {(b1c3 c7c6 c3a4 f5d6 d3e3 e6e3 c1e3 d6b5) +1.90/8 29}
c6 {(c7c6 g2g4 f5d6 a1a2 d6e8 f3f4 g5f4) -1.88/7 29} 18. g4 {(g2g4 f5h4
e2g3 e6f6 g3f5 h6h5 c3e2) +1.91/7 30} Nh4 {(f5h4 a1a2 f7f5 e2g3 d7d6 g4f5
h4f5 g3f5) -1.86/8 29} 19. Ra2 {(a1a2 f7f5 g4f5 e6f6 a3a4 f6f5 d3f5)
+1.86/7 29} Bb7 {(c8b7 c1b2 h6h5 h1h2 h5g4 f3g4 a7a5) -1.85/7 30} 20. f4
{(f3f4 g5f4 e2f4 e6d6 f4g2 h4g2 f1g2) +1.86/7 29} Be7 {(f8e7 f4f5 e6d6 c1d2
h6h5 h1g1 h5g4) -1.81/7 29} 21. f5 {(f4f5 e6d6 e2g1 c6c5 c3b5 d6c6 g1f3)
+1.92/7 29} Qd6 {(e6d6 a2d2 e7f6 d3g3 d6g3 e2g3 a7a5) -1.88/7 29} 22. a4
{(a3a4 d6b4 a2b2 c6c5 c3a2 b4a3 b2d2) +1.91/7 29} Bf6 {(e7f6 c1d2 c6c5 c3b5
d6c6 b5a3 c5d4) -1.88/7 30} 23. Ba3 {(c1a3 d6b8 c3b1 a7a6 e2g3 b6b5 g3h5)
+1.94/7 29} Qc7 {(d6c7 a2a1 a7a5 a1c1 b7a6 c3b5 a8a7) -1.88/7 29} 24. Rg1
{(h1g1 h6h5 a2c2 c7h2 a3c1 h5g4 g1g4) +1.89/7 29} a5 {(a7a5 d3g3 c7g3 g1g3
h6h5 a3c1 h5g4) -1.87/7 29} 25. Ng3 {(e2g3 b7a6 d3e3 a6f1 g3f1 h6h5 a2c2)
+1.91/7 29} Qf4 {(c7f4 c3e2 f4f3 a2d2 b7a6 d3f3 h4f3) -1.89/7 29} 26. Nce2
{(c3e2 f4f3 a2d2 b6b5 g3h5 f3d3 d2d3) +1.88/7 30} Qf3 {(f4f3 d1c2 b7a6 d3d2
f6g7 a3b2 a8f8 g3h1) -1.87/8 29} 27. Kc2 {(d1c2 f3d3 c2d3 b6b5 a3c5 b5a4
a2a4 d7c7) +1.86/8 29} Ba6 {(b7a6 d3d2 a8c8 d2c3 f3c3 c2c3 h4f3) -1.90/7
29} 28. Qd1 {(d3d1 h8e8 a3c1 f3f2 c2b1 c6c5 c1b2) +1.77/7 29} c5 {(c6c5
d4c5 b6c5 a3b2 d5d4 g3h5 d4d3) -1.79/7 29} 29. dxc5 {(d4c5 b6c5 a3c1 c5c4
b3c4 a6c4 a2a3) +1.76/7 29} bxc5 {(b6c5 a3c1 c5c4 a2a3 c4b3 a3b3 a8c8)
-1.85/7 29} 30. Bc1 {(a3c1 c5c4 b3c4 a8c8 c2b1 a6c4 a2a3) +1.82/7 29} c4
{(c5c4 b3c4 a8c8 a2a3 c8c4 c2b1 c4b4) -1.79/7 29} 31. bxc4 {(b3c4 h8c8 a2a3
a6c4 c2d2 f3f2 a3e3) +1.80/7 29} Bxc4 {(a6c4 a2a3 h8c8 c2d2 f3f2 g3h5 f6d4)
-1.81/7 29} 32. Ra3 {(a2a3 a8c8 c2d2 f3f2 g3h5 f6e7 a3a1) +1.73/7 29} Rhc8
{(h8c8 c2d2 f3f2 g3h5 f6e5 g1g3 e5g3 h5g3) -0.14/8 29} 33. Kd2 {(c2d2 f3f2
g3h5 f6e7 g1g3 e7b4 g3c3 b4c3) +0.06/8 29} Qf2 {(f3f2 g3h5 f6e5 a3e3 h4f3
e3f3 f2f3 h5g3) +0.23/8 29} 34. Re3 {(a3e3 h4f3 e3f3 f2f3 f1g2 f3d3 d2e1
d3d1) -0.19/8 29} Re8 {(c8e8 e3a3 h4f3 a3f3 f2f3 g3h5 f3e3 d2c2) +0.31/8
29} 35. Rd3 {(e3d3 h4f3 d3f3 f2f3 g3h5 f3d3 d2e1 d3d1) -0.37/8 30} Nf3+
{(h4f3 d3f3 f2f3 d1c2 f6d4 f1g2 f3f2 c2d1) +1.86/8 29} 36. Rxf3 {(d3f3 f2f3
d1c2 a8c8 d2e1 c4e2 c2c8 e8c8 g3e2) -3.98/9 29} Qxf3 {(f2f3 d1c2 a8c8 d2e1
c4e2 c2c8 d7c8 g3e2) +3.94/8 29} 37. Qc2 {(d1c2 a8c8 d2e1 c4e2 c2c8 e8c8
g3e2 c8c2) -3.98/8 29} Rac8 {(a8c8 d2e1 f6d4 g1g2 c4e2 c2c8 d7c8 g3e2)
+4.99/8 29} 38. Ke1 {(d2e1 c4e2 c2c8 e8c8 g3e2 f3e4 c1a3 e4a4) -4.98/8 29}
Bxe2 {(c4e2 c2c8 e8c8 c1g5 e2f1 g5f6 f1h3 g4g5) +7.95/8 29} 39. Qxc8+
{(c2c8 e8c8 c1g5 e2f1 g5f6 f1h3 g4g5) -8.03/7 29} Rxc8 {(e8c8 c1d2 e2f1
g3f1 f6d4 f1e3 d4e3 d2e3 f3e3 e1f1) +11.19/10 29} 40. Bd2 {(c1d2 e2f1 g3f1
f6d4 f1e3 d4e3 d2e3 f3e3) -10.19/8 29} Bxf1 {(e2f1 g3f1 c8b8 d2a5 b8b1 e1d2
f3f2 d2d3 f2g1) +11.20/9 29} 41. Nxf1 {(g3f1 f6d4 f1e3 d4e3 d2e3 f3e3 e1f1
e3h3) -11.28/8 29} Rb8 {(c8b8 d2b4 b8b4 e1d2 f3f2 d2c1 f2g1 c1d2) +18.41/8
29} 42. Bb4 {(d2b4 b8b4 e1d2 f3f2 d2c1 b4b1 c1b1 f2b2) -M4/9 29} Rxb4
{(b8b4 e1d2 f3f2 d2c1 b4b1 c1b1 f2b2) +M4/9 29 White resigns} 0-1
[/pgn]
Yes, king e8 to d7 was a real novelty 😁
It's just a baby less than a day old! :wink:
Mike Sherwin
Posts: 925
Joined: Fri Aug 21, 2020 1:25 am
Location: Planet Earth, Sol system
Full name: Michael J Sherwin

Re: Progress On Bricabrac

Post by Mike Sherwin »

And baby Bric eval won its second game ever played, against TSCP. And this was something that I did not expect. And was probably a lot lucky!
[pgn][Event "Bric000"]
[Site "DESKTOP-HFVHK2B"]
[Date "2021.05.04"]
[Round "1"]
[White "Bricabrac"]
[Black "Tscp181"]
[Result "1-0"]
[BlackElo "2200"]
[ECO "A70"]
[Opening "Benoni"]
[Time "12:33:17"]
[Variation "Classical, 7...Bg7"]
[WhiteElo "2200"]
[TimeControl "0+10"]
[Termination "normal"]
[PlyCount "169"]
[WhiteType "program"]
[BlackType "program"]

1. d4 Nf6 2. c4 c5 3. d5 e6 4. Nc3 exd5 5. cxd5 d6 6. e4 g6 7. Nf3 Bg7 8.
a3 {(a2a3 e8g8 h2h3 g8h8 g2g4 h7h6 g4g5) +0.03/7 9} O-O {(f6g4 c3b5 a7a6
h2h3 g4e5 b5c3) -0.57/6 9} 9. h3 {(h2h3 d8e8 d1e2 b7b5 e2c2 b5b4 f1b5)
+0.03/7 9} Re8 {(d8e8 f1b5 c8d7 b5d3 c5c4 d3c2) -0.22/6 9} 10. Nd2 {(f3d2
f6e4 c3e4 f7f5 f2f3 f5e4 f3e4) +0.01/7 9} Nfd7 {(c8f5 d1c2 g7h6 f1d3 h6d2
c1d2 b8d7) -0.03/6 10} 11. Ne2 {(c3e2 f7f5 f2f3 f5e4 f3e4 h7h5 g2g3)
+0.01/7 9} Nb6 {(d7b6 a3a4 b8a6 a4a5 b6d7 d2c4 d7e5) +0.13/7 9} 12. g3
{(g2g3 f7f5 f2f3 f5e4 d2e4 e8e5 e2c3) +0.03/7 9} Bd7 {(c8d7 a1a2 f7f5 f2f3
f5e4 f3e4 b8a6) +0.34/7 10} 13. Ra2 {(a1a2 g7h6 f2f3 f7f5 e2c3 f5e4 d2e4)
+0.03/7 9} Na6 {(b8a6 f2f3 a6c7 b2b3 g7e5 f1g2) +0.15/6 9} 14. b3 {(b2b3
c5c4 f2f3 f7f5 b3c4 d7a4 d2b3) +0.06/7 9} c4 {(c5c4 c1b2 a6c5 d2c4 g7b2
a2b2 c5e4) +0.42/6 9} 15. f3 {(f2f3 f7f5 e4f5 c4b3 d2b3 g6f5 e1f2) +0.09/7
9} cxb3 {(c4b3 d2b3 f7f5 f1g2 f5e4 f3e4 a8c8) +0.23/7 9} 16. Nxb3 {(d2b3
f7f5 e4f5 g6f5 c1b2 a6c5 b2g7) +0.06/7 9} Ba4 {(d7a4 c1e3 b6c4 e3d4 a6c5
e2c1) +0.09/6 9} 17. Qd3 {(d1d3 f7f5 f1g2 f5e4 f3e4 a6c5 b3c5) +0.03/7 9}
Nc5 {(a6c5 b3c5 d6c5 c1f4 c5c4 d3d2) +0.30/6 9} 18. Nxc5 {(b3c5 d6c5 c1b2
c5c4 d3b1 f7f5 b2g7) +0.01/7 9} dxc5 {(d6c5 c1e3 c5c4 d3d2 a4b3 e3b6 d8b6)
+0.42/7 9} 19. Bb2 {(c1b2 g7b2 a2b2 f7f5 f1g2 f5e4 f3e4) -0.01/7 9} c4
{(c5c4 d3b1 a4b3 a2a1 g7b2 b1b2 b6d5 e4d5 d8d5) +0.61/7 9} 20. Qb1 {(d3b1
a4b3 a2a1 g7b2 b1b2 f7f5 f1g2) +0.01/7 9} Bb3 {(a4b3 a2a1 g7b2 b1b2 b6d5
e4d5 d8d5) +0.61/7 9} 21. Ra1 {(a2a1 g7b2 b1b2 f7f5 f1g2 f5e4 f3e4) -0.09/7
9} f6 {(f7f6 f1g2 b6d5 e4d5 d8d5 b2c3 a8d8) +0.62/7 9} 22. Bc3 {(b2c3 f6f5
c3g7 g8g7 e1d2 f5e4 f3e4) -0.02/7 9} Nxd5 {(b6d5 e4d5 d8d5 f1g2 a8d8 a3a4)
+0.61/6 9} 23. exd5 {(e4d5 d8d5 e1f2 d5g5 f2g2 g8f7 g2f2) +0.69/7 9} Qxd5
{(d8d5 e1f2 d5c5 e2d4 a8d8 b1b2 d8d5) +0.92/6 9} 24. Kf2 {(e1f2 d5c5 f2g2
f6f5 c3g7 g8g7 g2h2) +0.67/7 9} Qc5+ {(d5c5 f2g2 a8d8 b1b2 c5b6 a1e1 d8d7)
+0.87/6 9} 25. Kg2 {(f2g2 c5d5 b1c1 b3a4 c3e1 a4b3 e2c3 d5d7) +0.83/8 9}
Re3 {(e8e3 f3f4 a8d8 b1b2 c5b6 a1e1) +0.88/6 9} 26. Qc1 {(b1c1 a8d8 c3b4
c5e5 e2g1 g8h8 b4a5) +0.78/7 9} Rd8 {(a8d8 e2f4 d8e8 c1b2 c5c6 f1e2)
+0.77/6 9} 27. Rh2 {(h1h2 g7h6 c1b2 d8d3 c3f6 e3f3 f6h8) +0.80/7 9} Ree8
{(d8d3 c3b4 c5e5 e2f4 d3d4 a1b1) +0.92/6 9} 28. Qb2 {(c1b2 e8e3 e2d4 b3a4
d4c2 e3e6 c2e1) +0.85/7 9} Qb6 {(c5b6 g2h1 d8d3 e2d4 d3e3 f1e2) +0.40/6 9}
29. Nc1 {(e2c1 g8f7 c1b3 b6b3 b2b3 c4b3 c3e1) +1.21/7 9} Re3 {(e8e3 c1b3
b6b3 b2b3 c4b3 f1c4 g8h8 a1c1) +0.33/7 9} 30. Nxb3 {(c1b3 b6b3 b2b3 c4b3
f1c4 g8f8 c3e1) +1.22/7 9} Qxb3 {(b6b3 b2b3 c4b3 f1c4 g8h8 a1c1 d8c8 c3d4)
+0.28/7 9} 31. Qxb3 {(b2b3 c4b3 f1c4 g8f8 c3b4 f8e8 b4e1) +1.24/7 9} cxb3
{(c4b3 f1c4 g8h8 a1c1 f6f5 c3g7 h8g7 g2f2 b3b2 c1b1) +0.02/8 9} 32. Bc4+
{(f1c4 g8h8 c3b4 f6f5 a1f1 b3b2 g2f2 g7d4) +1.23/8 9} Kh8 {(g8h8 a1c1 d8c8
g2f2 e3e7 c4b3 e7c7 b3e6 c7c3 e6c8 c3c1 c8b7) -0.25/7 9} 33. Bb4 {(c3b4
f6f5 a1g1 b3b2 g1f1 g7d4 b4a5 b7b6) +1.16/8 10} b2 {(b3b2 a1b1 d8c8 g2f2
e3e8 c4d3 f6f5) +0.66/7 9} 34. Rb1 {(a1b1 f6f5 g2f2 g7d4 f2g2 h8g7 b4a5)
+1.20/7 9} f5 {(f6f5 h2h1 d8c8 c4d5 c8c2 g2g1 g7d4 d5b7 e3f3) +0.67/7 9}
35. Rhh1 {(h2h1 d8c8 c4d5 c8c2 g2f1 g7e5 b4e1) +1.20/7 9} Rc8 {(d8c8 h1d1
g7e5 f3f4 e5f4 g3f4 c8c4 b1b2 c4f4) +0.59/7 9} 36. Rhd1 {(h1d1 f5f4 c4d5
c8c2 g2f1 f4g3 d5b7) +1.14/7 9} Bf6 {(g7f6 g2f2 e3e8 c4b3 b7b6 d1d7 a7a6)
+0.44/7 9} 37. Kf2 {(g2f2 e3e8 c4b3 f6g7 a3a4 c8d8 b4a3) +1.22/7 9} Ree8
{(e3e8 c4b3 b7b6 d1d2 a7a5 b3f7 a5b4 f7e8 b4a3) +0.27/7 9} 38. Bb3 {(c4b3
e8d8 d1d8 c8d8 f2e3 f6d4 e3f4) +1.19/7 9} g5 {(g6g5 b4d6 e8d8 f3f4 g5f4
d6f4 d8e8) +0.24/7 9} 39. Rd6 {(d1d6 c8c1 b3a2 c1c2 b4d2 f6e7 a2b3) +1.19/7
9} Be5 {(f6e5 d6d1 h7h5 d1d2 f5f4 g3f4 g5f4 d2b2 e5b2 b1b2) +0.16/7 10} 40.
Rd7 {(d6d7 c8c1 b3a2 c1c2 d7d2 e5d4 f2g2) +1.18/7 9} Rc1 {(c8c1 b3a2 c1c2
d7d2 e5d4 f2f1 c2d2 b4d2 h7h6) +0.41/7 9} 41. Ba2 {(b3a2 c1c2 d7d2 e5d4
f2f1 c2c1 f1g2) +1.17/7 9} Rc2+ {(c1c2 d7d2 e5d4 f2f1 c2c1 f1g2 d4e5 d2b2
e5b2 b1b2) +0.25/6 9} 42. Rd2 {(d7d2 c2d2 b4d2 f5f4 f2f1 e8f8 a2d5 f8f5)
+1.18/8 9} Bd4+ {(e5d4 f2f1 c2c1 d2d1 c1b1 a2b1 d4e5 b1f5 e5g3 d1d7)
+0.26/8 10} 43. Kf1 {(f2f1 c2c1 d2d1 d4e5 b4e1 f5f4 a2f7 e8a8 f7d5) +1.23/9
9} Rc1+ {(c2c1 d2d1 e8e3 a2d5 c1b1 d1b1 b7b5 h3h4 a7a5) +0.25/8 9} 44. Rd1
{(d2d1 e8e3 a2d5 c1d1 b1d1 g5g4 d5b7 g4h3 b4f8) +1.17/9 9} Re3 {(e8e3 a2d5
c1b1 d1b1 b7b5 h3h4 a7a5) +0.25/7 9} 45. Bd5 {(a2d5 c1d1 b1d1 g5g4 b4d6
g4h3 d5b7 h8g7) +1.21/8 9} Rxd1+ {(c1d1 b1d1 h8g7 f1g2 b7b5 f3f4 a7a5 b4d6
g5f4 g3f4) +0.39/7 9} 46. Rxd1 {(b1d1 a7a5 b4d6 d4c3 d5a2 e3f3 f1g2 g5g4
a2b1) +0.28/9 9} b5 {(b7b5 f1g2 h8g7 d5a2 e3e2 g2f1 e2f2 f1e1 d4e3) +0.41/7
10} 47. Kg2 {(f1g2 e3e2 g2f1 e2h2 d5a2 h2h1 f1e2 h1d1) +1.23/8 9} a5 {(e3e2
g2f1 e2f2 f1e1 f2g2 d5a2 d4f2 e1f1 g2g1 f1e2 g1d1 e2d1 f2g3) +1.53/7 9} 48.
Bf8 {(b4f8 e3e2 g2f1 e2d2 d1b1 d2h2 g3g4) +1.15/7 9} Re2+ {(e3e2 g2f1 e2f2
f1e1 f2c2 d5a2 d4f2 e1f1 f2g3 a2b1 c2f2) +1.88/8 9} 49. Kf1 {(g2f1 e2f2
f1e1 f2h2 d5a2 d4f2 e1f1 h2h1 f1e2 h1d1) +0.18/10 9} Rf2+ {(e2f2 f1e1 f2g2
d5a2 d4c3 e1f1 g2g3 d1d5 g3f3 f1g2 g5g4 d5b5 f3h3 b5f5) +2.31/8 9} 50. Ke1
{(f1e1 f2h2 d5a2 d4f2 e1f1 h2h1 f1e2 h1d1 e2d1 f2g3) +0.18/10 9} Rg2 {(f2g2
d5a2 d4c3 e1f1 g2g3 d1d5 g3f3 f1g2 g5g4 d5b5 f3h3 b5f5) +2.31/8 9} 51. Ba2
{(d5a2 d4c3 e1f1 g2g3 d1d5 g3f3 f1g2 g5g4 d5b5) +0.15/9 9} Bf2+ {(d4f2 e1f1
g2g1 f1e2 g1d1 e2d1 f2g3 f8e7 g3f4 d1e2) +1.58/8 9} 52. Kf1 {(e1f1 g2g1
f1e2 g1g2 f8h6 f2g3 e2e3 f5f4 e3d4 g3f2) +0.28/10 9} Rg1+ {(g2g1 f1e2 g1d1
e2d1 f2g3 f8e7 g3e5 e7g5 b5b4 a3b4 a5b4) +0.58/9 9} 53. Ke2 {(f1e2 g1g2
e2d3 f2g3 d1d2 g2d2 d3d2 g3f4 d2c2 f4e5 a2b1) +0.31/11 9} Rxd1 {(g1d1 e2d1
f2g3 f8h6 g3f4 d1c2 f4c1 a2e6 b5b4 a3b4 a5b4 e6f5) +0.63/9 9} 54. Kxd1
{(e2d1 f2g3 a2b1 h8g8 f8h6 g5g4 f3g4 f5g4 h3g4) +1.34/9 9} Bxg3 {(f2g3 a2b1
h8g8 f8c5 g3e5 b1f5 g8g7 d1e2 h7h5) +0.67/9 10} 55. Bb1 {(a2b1 h8g8 f8e7
g5g4 f3g4 f5g4 h3g4 h7h6 d1c2) +1.20/9 9} g4 {(g5g4 f3g4 f5g4 h3g4 h8g8
f8c5 g3e5 b1e4 g8g7) +0.26/9 9} 56. fxg4 {(f3g4 h8g8 f8c5 f5g4 h3g4 g3e5
d1e1 g8g7 c5e3 g7g8) +1.25/10 9} fxg4 {(f5g4 h3g4 h8g8 f8c5 g3e5 b1d3 e5c3
d1c2 b5b4 a3b4 a5b4 c5b4 b2b1q c2b1 c3b4) -0.09/10 9} 57. hxg4 {(h3g4 h8g8
f8c5 g3e5 b1d3 g8g7 d1c2 b5b4 a3b4 a5b4) +2.09/10 9} Kg8 {(h8g8 f8c5 g3e5
b1d3 e5c3 d1c2 b5b4 a3b4 a5b4 c5b4 b2b1q c2b1 c3b4) -0.09/8 9} 58. Bc5
{(f8c5 g3e5 b1d3 g8g7 c5b6 b5b4 a3a4 g7h6 b6a5 b4b3) +2.08/10 9} Be5 {(g3e5
b1d3 h7h6 d1c2 g8g7 d3b5 g7f6 c5b6 f6g5 b6a5 g5g4) -0.60/9 10} 59. Bd3
{(b1d3 e5f6 d1c2 b5b4 a3b4 a5b4 c5b4 h7h6 c2b1) +2.13/9 9} h6 {(h7h6 d1c2
g8g7 d3b5 g7f6 c5b6 f6g5 b6a5 g5g4) -0.60/8 9} 60. Kc2 {(d1c2 b5b4 a3b4
a5b4 c5b4 e5d4 b4a3 h6h5 g4h5) +3.15/9 9} Kf7 {(g8f7 d3b5 f7f6 c5e3 f6e6
e3d2 e6d5 a3a4 h6h5 g4h5) -1.81/9 9} 61. Bxb5 {(d3b5 f7f6 c5e3 f6g6 e3d2
e5c7 c2b2 h6h5 b5d3) +3.19/9 9} Kf6 {(f7f6 c5e3 f6e6 e3h6 e6d5 g4g5 d5c5
b5d3) -1.88/8 9} 62. Be3 {(c5e3 f6g6 e3d2 b2b1n b5d3 g6f7 c2b1 e5d6 b1b2)
+3.21/9 9} Kg7 {(f6g7 a3a4 g7f6 e3h6 e5c3 h6f4 f6e6 g4g5) -2.04/8 10} 63.
Bd2 {(e3d2 e5d4 c2b1 d4e5 b5a4 g7f6 d2h6 f6g6 h6d2) +3.29/9 9} a4 {(g7g6
b5d3 g6g7 c2b3 a5a4 b3a4 e5f6 a4b5 f6g5 d2c3) -2.44/8 9} 64. Bxa4 {(b5a4
e5d4 c2b1 d4e5 b1a2 g7g6 a4e8 g6g7 e8a4) +3.33/9 9} Kg6 {(e5d4 a4c6 d4e5
a3a4 e5d4 a4a5 g7g6 a5a6) -2.72/8 9} 65. Bd7 {(a4d7 g6h7 d2b4 e5f6 a3a4
h6h5 g4h5 h7h6 b4a3) +4.15/9 10} Kf6 {(g6f6 d2b4 e5d4 a3a4 f6e5 b4a3 b2b1r
c2b1 e5d5) -3.75/9 9} 66. Bxh6 {(d2h6 f6g6 h6d2 e5d4 c2b1 d4e5 b1a2 g6g7
d2a5) +4.35/9 9} Ke7 {(f6e7 d7f5 e7f6 h6e3 f6e7 e3c5 e7f6 a3a4 f6g5 a4a5)
-3.87/9 9} 67. Bf5 {(d7f5 e7d6 f5e4 d6c5 c2b3 c5b5 b3a2 b5a4 e4b1) +4.38/9
9} Bd4 {(e7f6 h6e3 f6f7 a3a4 f7f6 a4a5 f6e7 g4g5) -4.09/8 10} 68. Bd2
{(h6d2 e7d8 c2b3 d8c7 d2c3 d4c3 b3c3 c7b7 c3b2) +5.34/9 9} Kd6 {(e7d6 c2b3
d4e5 d2c3 e5c3 b3c3 d6d5 c3b2) -5.30/8 9} 69. Kb3 {(c2b3 d6c6 f5b1 c6b5
d2c3 d4c3 b3c3 b5a4 c3b2) +5.35/9 9} Kc5 {(d6c5 d2c3 d4c3 b3c3 c5d5 a3a4
b2b1q f5b1 d5e5) -5.56/9 9} 70. Bc3 {(d2c3 d4c3 b3c3 c5d5 c3c2 d5e5 c2b2
e5f4 b2b1) +5.30/9 9} Bxc3 {(d4c3 b3c3 c5d5 c3b2 d5d4 a3a4 d4c4 g4g5 c4b4
f5d7) -5.88/10 9} 71. Kxc3 {(b3c3 c5d5 c3b2 d5d4 f5b1 d4e3 b1f5 e3f4 b2b1
f4g5) +5.27/10 9} Kd6 {(c5d6 c3b2 d6e5 b2c3 e5d5 a3a4 d5e5 a4a5 e5d5 a5a6
d5e5 a6a7) -6.34/12 9} 72. Kd4 {(c3d4 d6c6 f5b1 c6d7 b1f5 d7e7 d4c3 e7f6
c3b2 f6g5 b2b1) +5.26/11 9} Ke7 {(d6e7 g4g5 e7f7 d4c3 f7f8 c3b2 f8f7 a3a4
f7e7 g5g6 e7d6) -6.05/11 9} 73. Ke5 {(d4e5 e7f7 f5b1 f7g7 g4g5 g7f7 e5d4
f7e7 d4c3 e7d6 c3b2) +5.29/11 9} b1=Q {(e7e8 e5f6 b2b1q f5b1 e8d7 g4g5 d7c6
f6e5 c6c5 g5g6) -6.09/10 9} 74. Bxb1 {(f5b1 e7d7 g4g5 d7e7 e5d4 e7e6 d4c3
e6d7 g5g6) +5.34/9 10} Kd8 {(e7d8 g4g5 d8d7 g5g6 d7e7 b1a2 e7f8 e5f6 f8e8
g6g7 e8d7 g7g8q) -13.11/11 9} 75. Ba2 {(b1a2 d8c7 g4g5 c7b7 a2b3 b7a7 g5g6
a7b7 g6g7 b7a7) +13.27/10 9} Ke8 {(d8e8 g4g5 e8f8 e5f6 f8e8 g5g6 e8d7 g6g7
d7d6 a3a4 d6c5 g7g8q) -13.22/11 9} 76. Kf6 {(e5f6 e8d8 g4g5 d8c8 a2f7 c8d7
g5g6 d7d8 g6g7 d8d7) +13.36/10 9} Kd7 {(e8d7 g4g5 d7c6 g5g6 c6b5 a2b3 b5c5
f6e5 c5c6 g6g7 c6c5 g7g8q) -13.31/11 9} 77. g5 {(g4g5 d7c7 g5g6 c7d7 g6g7
d7c7 g7g8q c7c6 g8b3 c6d7) +13.33/10 9} Kc6 {(d7c6 g5g6 c6c5 f6e5 c5b6 g6g7
b6a5 a2b3 a5b6 a3a4 b6c5 g7g8q) -13.52/11 9} 78. g6 {(g5g6 c6c5 g6g7 c5b5
g7g8q b5c6 g8c4 c6b6 c4d5 b6a6) +13.40/10 9} Kb5 {(c6b5 g6g7 b5c5 g7g8q
c5d4 a3a4 d4e4 a2d5 e4d3 f6e5 d3e3) -13.62/10 9} 79. g7 {(g6g7 b5a5 a2b3
a5b5 g7g8q b5b6 g8c4 b6a7 c4b5 a7a8) +13.42/10 9} Kc5 {(b5c5 f6e5 c5b5
g7g8q b5a5 g8d5 a5a4 d5c4 a4a5 c4b4 a5a6 a3a4) -13.72/9 9} 80. Ke5 {(f6e5
c5c6 a2c4 c6c5 g7g8q c5b6 g8d5 b6a7 d5a5 a7b8) +13.44/10 9} Kb6 {(c5b6
g7g8q b6c7 a3a4 c7d7 g8e6 d7d8 a4a5 d8c7 a5a6) -14.04/9 9} 81. Kd5 {(e5d5
b6b5 g7g8q b5b6 g8b8 b6a6 d5c4 a6a5 b8b5 b6a7) +M5/10 10} Kc7 {(b6c7 g7g8q
c7b7 g8f7 b7a6 d5c6 a6a5 f7a7) -M4/8 0} 82. g8=Q {(g7g8q c7b7 g8f7 b7b6
a2c4 b6a5 f7a7) +M4/10 9} Kb7 {(c7b7 g8f7 b7a6 d5c6 a6a5 f7a7) -M3/6 0} 83.
Qg7+ {(g8g7 b7b8 d5c6 b8a8 g7b7 d7c7) +M3/9 9} Kb6 {(b7b6 a2c4 b6a5 g7a7)
-M2/4 0} 84. Bc4 {(a2c4 b6a5 g7a7 b5a6) +M2/9 10} Ka5 {(b6a5 g7a7) -M1/3 0}
85. Qa7# {(g7a7 a5b6) +M1/9 9} 1-0
[/pgn]