Designing an analysis friendly Stockfish?

Code, algorithms, languages, construction...
Jeremy Bernstein
Site Admin
Posts: 1226
Joined: Wed Jun 09, 2010 7:49 am
Real Name: Jeremy Bernstein
Location: Berlin, Germany
Contact:

Re: Designing an analysis friendly Stockfish?

Post by Jeremy Bernstein » Wed Feb 09, 2011 12:58 pm

Comparing behavior, I think that the Fruity code achieves more of what Uly was requesting than the MC code. Uly, can you confirm? I am seeing the engine recalculating/adjusting known values when stopping and starting analysis with the PAMC code.

Sarciness
Posts: 13
Joined: Wed Feb 09, 2011 9:10 am

Re: Designing an analysis friendly Stockfish?

Post by Sarciness » Wed Feb 09, 2011 1:02 pm

Thanks, testing Version F against Rybka 3 now. It looks like it might get trashed :(

Jeremy Bernstein
Site Admin
Posts: 1226
Joined: Wed Jun 09, 2010 7:49 am
Real Name: Jeremy Bernstein
Location: Berlin, Germany
Contact:

Re: Designing an analysis friendly Stockfish?

Post by Jeremy Bernstein » Wed Feb 09, 2011 1:03 pm

Sarciness wrote:Thanks, testing Version F against Rybka 3 now. It looks like it might get trashed :(
It should be comparable, according to CEGT. Anyway, the point is to make something for analysis, not for engine matches.

Sarciness
Posts: 13
Joined: Wed Feb 09, 2011 9:10 am

Re: Designing an analysis friendly Stockfish?

Post by Sarciness » Wed Feb 09, 2011 1:22 pm

Jeremy Bernstein wrote:
Sarciness wrote:Thanks, testing Version F against Rybka 3 now. It looks like it might get trashed :(
It should be comparable, according to CEGT. Anyway, the point is to make something for analysis, not for engine matches.
Yes, if it gets close to equal score, I will use it for analysis. If not, it might indicate something is broken in this version.

User avatar
Uly
Posts: 838
Joined: Thu Jun 10, 2010 5:33 am

Re: Designing an analysis friendly Stockfish?

Post by Uly » Wed Feb 09, 2011 2:45 pm

Jeremy Bernstein wrote:Comparing behavior, I think that the Fruity code achieves more of what Uly was requesting than the MC code. Uly, can you confirm?
You're right, fruity's version seems better, though both are great. here's a test:

Stockfish_201_PAMC_GTBd.7z

Root analysis:
16/16	 0:01 	+0.36 	1.Nf3 Nf6 2.e3 d5 3.d4 e6 4.Bd3 Bd6 5.O-O Nc6 6.c4 dxc4 7.Bxc4 O-O 8.Nc3 e5 (945.602) 720
 17/22	 0:01 	+0.28--	1.Nf3 Nf6 2.e3 d5 3.d4 e6 4.Bd3 Bd6 5.O-O c5 6.dxc5 Bxc5 7.Nc3 Nc6 8.e4 d4 9.Na4 Bd6 10.c3 dxc3 11.bxc3 O-O (1.421.153) 716
 17/11	 0:03 	+0.44++	1.e4 e5 2.Nf3 Nf6 3.Nxe5 d6 4.Nf3 Nxe4 5.Bd3 Nc5 6.Be2 (2.458.428) 721
 17/11	 0:04 	+0.52++	1.e4 e5 2.Nf3 Nf6 3.Nxe5 d6 4.Nf3 Nxe4 5.Bd3 Nc5 6.Be2 (3.154.390) 726
 17/22	 0:05 	+0.32 	1.e4 e5 2.Nf3 Nf6 3.Nxe5 d6 4.Nf3 Nxe4 5.Qe2 Qe7 6.Nc3 Nxc3 7.dxc3 Nc6 8.Be3 Be6 9.a4 O-O-O 10.O-O-O f6 11.Qb5 d5 (3.984.887) 722
 18/22	 0:06 	+0.32 	1.e4 e5 2.Nf3 Nf6 3.Nxe5 d6 4.Nf3 Nxe4 5.Qe2 Qe7 6.Nc3 Nxc3 7.dxc3 Nc6 8.Be3 Be6 9.a4 O-O-O 10.O-O-O f6 11.Qb5 d5 (4.991.771) 721
Restarting analysis.
16/22	 0:00 	+0.32 	1.e4 e5 2.Nf3 Nf6 3.Nxe5 d6 4.Nf3 Nxe4 5.Qe2 Qe7 6.Nc3 Nxc3 7.dxc3 Nc6 8.Be3 Be6 9.a4 O-O-O 10.O-O-O f6 11.Qb5 d5 (191.102) 872
 17/22	 0:00 	+0.32 	1.e4 e5 2.Nf3 Nf6 3.Nxe5 d6 4.Nf3 Nxe4 5.Qe2 Qe7 6.Nc3 Nxc3 7.dxc3 Nc6 8.Be3 Be6 9.a4 O-O-O 10.O-O-O f6 11.Qb5 d5 (310.466) 864
 18/22	 0:00 	+0.32 	1.e4 e5 2.Nf3 Nf6 3.Nxe5 d6 4.Nf3 Nxe4 5.Qe2 Qe7 6.Nc3 Nxc3 7.dxc3 Nc6 8.Be3 Be6 9.a4 O-O-O 10.O-O-O f6 11.Qb5 d5 (492.107) 851
Forcing 1.e4
16/21	 0:00 	+0.32 	1...e5 2.Nf3 Nf6 3.Nxe5 d6 4.Nf3 Nxe4 5.Qe2 Qe7 6.Nc3 Nxc3 7.dxc3 Nc6 8.Be3 Be6 9.a4 O-O-O 10.O-O-O f6 11.Qb5 d5 (282.939) 788
 17/21	 0:00 	+0.32 	1...e5 2.Nf3 Nf6 3.Nxe5 d6 4.Nf3 Nxe4 5.Qe2 Qe7 6.Nc3 Nxc3 7.dxc3 Nc6 8.Be3 Be6 9.a4 O-O-O 10.O-O-O f6 11.Qb5 d5 (460.158) 796
 18/21	 0:01 	+0.32 	1...e5 2.Nf3 Nf6 3.Nxe5 d6 4.Nf3 Nxe4 5.Qe2 Qe7 6.Nc3 Nxc3 7.dxc3 Nc6 8.Be3 Be6 9.a4 O-O-O 10.O-O-O f6 11.Qb5 d5 (880.566) 772
Forcing 1.e4 c5 (a move it didn't consider)
16/16	 0:00 	+0.68--	2.Nc3 Nc6 3.Nf3 Nf6 4.Bb5 Nd4 5.e5 Qa5 6.Bc4 d5 7.Bd3 Ng4 8.Nxd5 Be6 9.Nxd4 cxd4 (517.168) 719
 16/18	 0:00 	+0.68 	2.Nc3 Nc6 3.Nf3 Nf6 4.Bb5 Nd4 5.e5 Qa5 6.Bc4 d5 7.Bd3 Ng4 8.O-O Be6 9.Nxd5 Bxd5 10.Nxd4 Nxe5 (686.785) 720
 17/14	 0:01 	+0.56--	2.Nc3 Nc6 3.Nf3 Nf6 4.Bb5 e5 5.Bxc6 dxc6 6.Nxe5 Bd6 7.d4 O-O 8.O-O Re8 (1.229.116) 702
 17/09	 0:02 	+0.80++	2.Nf3 Nc6 3.Bb5 Nf6 4.e5 Ng4 5.Bxc6 dxc6 6.h3 (1.797.054) 697
 17/20	 0:04 	+0.84 	2.Nf3 Nc6 3.Bb5 Nd4 4.Nc3 Nxb5 5.Nxb5 d6 6.O-O Nf6 7.d3 Qb6 8.a4 Bd7 9.e5 Bxb5 10.axb5 dxe5 11.Nxe5 Qxb5 (3.189.102) 691
 18/14	 0:08 	+0.64--	2.Nf3 Nc6 3.Bb5 e5 4.Bxc6 bxc6 5.Nxe5 Qe7 6.d4 Nf6 7.Nc3 cxd4 8.Qxd4 c5 (5.674.013) 686
 18/18	 0:10 	+0.44--	2.Nf3 Nc6 3.Bb5 e5 4.Bxc6 bxc6 5.Nxe5 Qe7 6.d4 d6 7.Nxc6 Qxe4+ 8.Qe2 Qxe2+ 9.Kxe2 Nf6 10.dxc5 Kd7 (7.092.817) 689
 18/25	 0:17 	+0.36 	2.Nf3 Nc6 3.Bb5 e5 4.O-O Nf6 5.c3 Be7 6.Re1 O-O 7.Bxc6 dxc6 8.Nxe5 Nd7 9.Nf3 c4 10.Na3 Bxa3 11.bxa3 Nc5 12.Ne5 Be6 13.Bb2 Nd3 14.Nxd3 (12.197.874) 695
 18/19	 0:19 	+0.56 	2.Nc3 Nc6 3.Bb5 e5 4.d3 Bd6 5.Nf3 Nf6 6.O-O O-O 7.Bg5 a6 8.Bxf6 Qxf6 9.Nd5 Qd8 10.Bc4 b5 11.Bb3 (13.683.579) 695
Taking back 1...c5
10/13	 0:00 	+0.36 	1...e5 2.Nc3 Nc6 3.Nf3 Nf6 4.Bb5 Bd6 5.O-O O-O 6.d4 exd4 7.Nxd4 a6 (62.424) 664
 11/14	 0:00 	+0.32 	1...e5 2.Nc3 Nc6 3.Nf3 Nf6 4.Bb5 Bd6 5.d3 Na5 6.Ba4 c6 7.d4 exd4 8.Qxd4 (81.770) 654
 11/11	 0:00 	+0.28++	1...Nf6 2.e5 Nd5 3.Nf3 Nc6 4.Bc4 Nb6 5.Bb5 f6 6.d4 d5 (90.465) 723
 11/11	 0:00 	+0.24 	1...Nf6 2.e5 Nd5 3.Nf3 Nc6 4.Bc4 Nb6 5.Bb5 f6 6.d4 d5 (95.603) 678
 12/12	 0:00 	+0.40--	1...Nf6 2.e5 Nd5 3.Nf3 Nc6 4.Bc4 Nb6 5.Bb5 f6 6.exf6 exf6 7.O-O (120.853) 702
 12/14	 0:00 	+0.32 	1...e5 2.Nc3 Nc6 3.Nf3 Nf6 4.Bb5 Bd6 5.d3 Na5 6.Ba4 c6 7.d4 exd4 8.Qxd4 (134.679) 720
 13/05	 0:00 	+0.32 	1...e5 2.Nf3 Nf6 3.Nxe5 d6 (215.022) 689
 13/14	 0:00 	+0.28 	1...Nc6 2.Nf3 Nf6 3.Nc3 e5 4.Bb5 Bb4 5.O-O O-O 6.Re1 d6 7.d4 Bxc3 8.bxc3 (243.115) 706
 14/08	 0:00 	+0.36--	1...Nc6 2.Nf3 Nf6 3.e5 Ng4 4.d4 d6 5.h3 (393.386) 699
 14/05	 0:00 	+0.32 	1...e5 2.Nf3 Nf6 3.Nxe5 d6 (404.305) 719
 15/05	 0:00 	+0.32 	1...e5 2.Nf3 Nf6 3.Nxe5 d6 (473.849) 722
 16/05	 0:00 	+0.32 	1...e5 2.Nf3 Nf6 3.Nxe5 d6 (596.134) 719
 17/05	 0:01 	+0.32 	1...e5 2.Nf3 Nf6 3.Nxe5 d6 (829.224) 717
 18/05	 0:01 	+0.32 	1...e5 2.Nf3 Nf6 3.Nxe5 d6 (1.273.887) 721
(Some non 0.32 scores around there, but the behavior is corrected within 1 second)

Forcing 1.d4 (a move it didn't consider)
16/16	 0:01 	+0.28 	1...Nf6 2.Nf3 d5 3.e3 e6 4.Bd3 Nc6 5.O-O Be7 6.Nc3 O-O 7.a3 Bd7 8.Bd2 Bd6 9.e4 (893.390) 714
 17/21	 0:01 	+0.28 	1...Nf6 2.Nf3 d5 3.e3 e6 4.Bd3 Nc6 5.O-O Be7 6.Nc3 O-O 7.a3 Bd7 8.Bd2 Bd6 9.e4 dxe4 10.Nxe4 Nxe4 11.Bxe4 Qf6 (1.401.253) 717
 18/19	 0:03 	+0.20++	1...Nf6 2.Nf3 d5 3.e3 e6 4.Bd3 Be7 5.O-O O-O 6.Nc3 c5 7.dxc5 Nc6 8.Na4 Nb4 9.c3 Nxd3 10.Qxd3 Bd7 (2.194.719) 716
 18/20	 0:04 	+0.20 	1...Nf6 2.Nf3 d5 3.e3 e6 4.c4 Bd6 5.Bd3 dxc4 6.Bxc4 O-O 7.O-O c5 8.Nc3 Nc6 9.Nb5 Be7 10.Qa4 cxd4 11.Nbxd4 (2.984.264) 720
Taking back 1.d4.
8/08	 0:00 	+0.20 	1.e4 e5 2.Nf3 Nc6 3.Bd3 Nf6 4.O-O Bc5 (6.850) 456
  9/10	 0:00 	+0.32 	1.e4 e5 2.Nf3 Nf6 3.Nxe5 d6 4.Nf3 Nxe4 5.Qe2 Qe7 (9.961) 321
 10/12	 0:00 	+0.32 	1.e4 e5 2.Nf3 Nf6 3.Bc4 Nxe4 4.Nxe5 d5 5.Qf3 f6 6.Bb5+ c6 (15.426) 497
 11/16	 0:00 	+0.32 	1.e4 e5 2.Nf3 Nf6 3.Nc3 Nc6 4.Bb5 Bb4 5.d3 O-O 6.O-O Bxc3 7.bxc3 d6 8.Bc4 Be6 (24.544) 522
 12/16	 0:00 	+0.24--	1.e4 e5 2.Nf3 Nf6 3.Nc3 Nc6 4.Bb5 Bb4 5.d3 O-O 6.O-O Bxc3 7.bxc3 d6 8.Bc4 Be6 (46.964) 602
 12/16	 0:00 	+0.28 	1.e4 e5 2.Nf3 Nf6 3.Nc3 Nc6 4.Bb5 Bb4 5.d3 O-O 6.O-O Bxc3 7.bxc3 d6 8.Bc4 Be6 (70.017) 642
 13/16	 0:00 	+0.28 	1.e4 e5 2.Nf3 Nf6 3.Nc3 Nc6 4.Bb5 Bb4 5.d3 O-O 6.O-O Bxc3 7.bxc3 d6 8.Bc4 Be6 (77.042) 706
 14/16	 0:00 	+0.20--	1.e4 e5 2.Nf3 Nf6 3.Nc3 Nc6 4.Bb5 Bb4 5.d3 O-O 6.O-O Bxc3 7.bxc3 d6 8.Bc4 Be6 (139.814) 688
 14/16	 0:00 	+0.20 	1.e4 e5 2.Nf3 Nf6 3.Nc3 Nc6 4.Bb5 Bb4 5.O-O O-O 6.Re1 d6 7.d4 Bxc3 8.bxc3 Bg4 (192.449) 726
 15/15	 0:00 	+0.28++	1.e4 e5 2.Nf3 Nf6 3.Nc3 Nc6 4.Bc4 Bb4 5.O-O O-O 6.d3 d6 7.Bg5 Bg4 8.Nd5 (251.043) 699
 15/10	 0:00 	+0.32 	1.e4 e5 2.Nf3 Nf6 3.Nxe5 d6 4.Nf3 Nxe4 5.Qe2 Qe7 (367.600) 713
 16/10	 0:00 	+0.32 	1.e4 e5 2.Nf3 Nf6 3.Nxe5 d6 4.Nf3 Nxe4 5.Qe2 Qe7 (446.404) 733
 17/10	 0:00 	+0.32 	1.e4 e5 2.Nf3 Nf6 3.Nxe5 d6 4.Nf3 Nxe4 5.Qe2 Qe7 (628.676) 745
 18/10	 0:01 	+0.32 	1.e4 e5 2.Nf3 Nf6 3.Nxe5 d6 4.Nf3 Nxe4 5.Qe2 Qe7 (942.283) 744
(Minimum recalculation going on, behavior corrected within one second)

Forcing entirely unrelated position (1. e4 e5 2. f4 exf4 3. Nf3 g5 4. Nc3 Bg7 5. d4 g4 6. Bxf4 gxf3 7. Qxf3 d6 )
17/11	 0:10 	-0.68++	8.O-O-O Nc6 9.Bb5 a6 10.Bxc6+ bxc6 11.Rhf1 Be6 12.d5 cxd5 13.exd5 (7.101.062) 705
 17/15	 0:12 	-0.60++	8.O-O-O Nc6 9.Bb5 a6 10.Bxc6+ bxc6 11.Qg3 Kf8 12.e5 Bh6 13.Rhe1 Bxf4+ 14.Qxf4 Be6 15.Ne4 (8.760.773) 707
 17/23	 0:13 	-0.76 	8.O-O-O Nc6 9.Qg3 Kf8 10.e5 d5 11.Be2 Nge7 12.Bg5 Qd7 13.Kb1 Nf5 14.Qf2 h6 15.Bf4 f6 16.Rhf1 h5 17.Bf3 fxe5 18.dxe5 Bxe5 19.Rxd5 (9.844.238) 711
 17/09	 0:22 	-0.44++	8.Bb5+ c6 9.Bc4 b5 10.Nxb5 cxb5 11.Bd5 Bxd4 12.O-O-O (16.219.216) 713
 17/24	 0:27 	-0.44 	8.Bb5+ c6 9.Bc4 Qh4+ 10.g3 Bg4 11.Qf2 Qf6 12.h3 b5 13.hxg4 bxc4 14.O-O-O Ne7 15.Qf1 d5 16.exd5 cxd5 17.Rh5 O-O 18.Nxd5 Nxd5 19.Rxd5 Rc8 (20.055.509) 717
 18/22	 0:34 	-0.80--	8.Bb5+ c6 9.Bc4 Qh4+ 10.g3 Bg4 11.Qf2 Qf6 12.h3 Bh5 13.g4 Bg6 14.e5 dxe5 15.dxe5 Qe7 16.O-O-O b5 17.Bb3 Nd7 18.a4 Nc5 (24.539.199) 719
 18/23	 0:36 	-0.76 	8.O-O-O Nc6 9.Qg3 Kf8 10.e5 d5 11.Be2 Nge7 12.Bg5 Qd7 13.Kb1 Nf5 14.Qf2 h6 15.Bf4 f6 16.Rhf1 h5 17.Bf3 fxe5 18.dxe5 Bxe5 19.Rxd5 (25.928.334) 718
Back to root:
13/12	 0:00 	+0.16--	1.Nc3 d5 2.d4 Nf6 3.Bf4 e6 4.Nb5 Bd6 5.Nxd6+ cxd6 6.Nf3 O-O (129.367) 752
 13/11	 0:00 	+0.32++	1.e4 Nc6 2.Nf3 Nf6 3.Nc3 d5 4.exd5 Nxd5 5.Be2 Nxc3 6.bxc3 (206.107) 733
 13/06	 0:00 	+0.32 	1.e4 e5 2.Nf3 Nf6 3.Nxe5 Nxe4 (235.857) 719
 14/06	 0:00 	+0.32 	1.e4 e5 2.Nf3 Nf6 3.Nxe5 Nxe4 (290.610) 743
 15/06	 0:00 	+0.32 	1.e4 e5 2.Nf3 Nf6 3.Nxe5 Nxe4 (411.061) 730
 16/06	 0:00 	+0.32 	1.e4 e5 2.Nf3 Nf6 3.Nxe5 Nxe4 (516.482) 734
 17/06	 0:01 	+0.32 	1.e4 e5 2.Nf3 Nf6 3.Nxe5 Nxe4 (757.918) 735
 18/06	 0:01 	+0.32 	1.e4 e5 2.Nf3 Nf6 3.Nxe5 Nxe4 (1.202.382) 719
(one second lag)

It passed all tests excellently! Stockfish 2.1 is going to have great behavior :)

Now:

Stockfish_201_PA_GTBf.7z

Root analysis:
16/21	 0:04 	+0.60 	1.e4 e5 2.Nf3 Bd6 3.Nc3 Nf6 4.Bc4 Nc6 5.O-O O-O 6.d3 Na5 7.Bb3 Re8 8.Be3 c6 9.d4 Nxb3 10.axb3 exd4 11.Qxd4 (3.184.453) 702
 17/18	 0:05 	+0.32--	1.e4 e5 2.Nf3 Nf6 3.Nxe5 d6 4.Nf3 Nxe4 5.Bd3 d5 6.O-O Be7 7.Nc3 Nxc3 8.dxc3 Nc6 9.Be3 O-O (3.813.858) 703
 17/23	 0:07 	+0.40 	1.e4 e5 2.Nf3 Nf6 3.Nxe5 d6 4.Nf3 Nxe4 5.d4 Be7 6.Bd3 d5 7.Nbd2 Nf6 8.Nb3 O-O 9.O-O Nc6 10.c3 Re8 11.Re1 Bd6 12.Bg5 (5.301.191) 705
 18/23	 0:07 	+0.40 	1.e4 e5 2.Nf3 Nf6 3.Nxe5 d6 4.Nf3 Nxe4 5.d4 Be7 6.Bd3 d5 7.Nbd2 Nf6 8.Nb3 O-O 9.O-O Nc6 10.c3 Re8 11.Re1 Bd6 12.Bg5 (5.525.889) 704
Restarting analysis.
16/23	 0:00 	+0.40 	1.e4 e5 2.Nf3 Nf6 3.Nxe5 d6 4.Nf3 Nxe4 5.d4 Be7 6.Bd3 d5 7.Nbd2 Nf6 8.Nb3 O-O 9.O-O Nc6 10.c3 Re8 11.Re1 Bd6 12.Bg5 (8.835) 285
 17/23	 0:00 	+0.40 	1.e4 e5 2.Nf3 Nf6 3.Nxe5 d6 4.Nf3 Nxe4 5.d4 Be7 6.Bd3 d5 7.Nbd2 Nf6 8.Nb3 O-O 9.O-O Nc6 10.c3 Re8 11.Re1 Bd6 12.Bg5 (11.441) 369
 18/23	 0:00 	+0.40 	1.e4 e5 2.Nf3 Nf6 3.Nxe5 d6 4.Nf3 Nxe4 5.d4 Be7 6.Bd3 d5 7.Nbd2 Nf6 8.Nb3 O-O 9.O-O Nc6 10.c3 Re8 11.Re1 Bd6 12.Bg5 (23.750) 505
(Appears instantly)

Forcing 1.e4
16/22	 0:00 	+0.40 	1...e5 2.Nf3 Nf6 3.Nxe5 d6 4.Nf3 Nxe4 5.d4 Be7 6.Bd3 d5 7.Nbd2 Nf6 8.Nb3 O-O 9.O-O Nc6 10.c3 Re8 11.Re1 Bd6 12.Bg5 (74.759) 685
 17/22	 0:00 	+0.40 	1...e5 2.Nf3 Nf6 3.Nxe5 d6 4.Nf3 Nxe4 5.d4 Be7 6.Bd3 d5 7.Nbd2 Nf6 8.Nb3 O-O 9.O-O Nc6 10.c3 Re8 11.Re1 Bd6 12.Bg5 (113.673) 664
 18/23	 0:01 	+0.32++	1...e5 2.Nf3 Nf6 3.Nxe5 d6 4.Nf3 Nxe4 5.d4 Be7 6.Bd3 d5 7.Nbd2 Nf6 8.Nb3 O-O 9.O-O Nc6 10.c3 Re8 11.Re1 Bd6 12.Bg5 Rxe1+ (1.141.897) 716
 18/14	 0:05 	+0.48--	1...e5 2.Nf3 Nf6 3.d4 exd4 4.e5 Qe7 5.Be2 Nd5 6.Qxd4 Nb4 7.Qd1 N8c6 8.c3 (3.536.902) 707
 18/22	 0:06 	+0.36 	1...e5 2.Nf3 Nf6 3.d4 Nxe4 4.Bd3 d5 5.Nxe5 Nd7 6.O-O Bd6 7.Qe2 O-O 8.Bxe4 dxe4 9.Qxe4 c5 10.Nxd7 Qxd7 11.dxc5 Bxc5 12.Nc3 (4.839.985) 710
Forcing 1.e4 c5
16/17	 0:02 	+0.88 	2.Nf3 Nf6 3.e5 Nd5 4.Nc3 Nxc3 5.dxc3 e6 6.Bb5 Be7 7.O-O O-O 8.Bf4 Nc6 9.Re1 Qa5 10.Qd3 (1.417.380) 682
 17/18	 0:02 	+0.80--	2.Nf3 Nf6 3.e5 Nd5 4.Nc3 Nxc3 5.dxc3 e6 6.Bb5 Be7 7.O-O O-O 8.Bf4 Nc6 9.Re1 Qa5 10.Qd3 f6 (1.873.236) 681
 17/19	 0:04 	+0.76 	2.Nf3 Nf6 3.e5 Nd5 4.Nc3 Nxc3 5.dxc3 e6 6.Bf4 Nc6 7.Qd2 Qa5 8.Bd3 Be7 9.c4 Qa6 10.O-O O-O 11.c3 (2.795.893) 680
 18/20	 0:05 	+0.80 	2.Nf3 Nf6 3.e5 Nd5 4.Nc3 Nxc3 5.dxc3 e6 6.Bf4 Qb6 7.Rb1 Nc6 8.Bc4 Be7 9.O-O O-O 10.Qd3 f6 11.exf6 Bxf6 (3.498.362) 682
Back to root.
16/22	 0:00 	+0.36 	1...e5 2.Nf3 Nf6 3.d4 Nxe4 4.Bd3 d5 5.Nxe5 Nd7 6.O-O Bd6 7.Qe2 O-O 8.Bxe4 dxe4 9.Qxe4 c5 10.Nxd7 Qxd7 11.dxc5 Bxc5 12.Nc3 (19.895) 423
 17/22	 0:00 	+0.36 	1...e5 2.Nf3 Nf6 3.d4 Nxe4 4.Bd3 d5 5.Nxe5 Nd7 6.O-O Bd6 7.Qe2 O-O 8.Bxe4 dxe4 9.Qxe4 c5 10.Nxd7 Qxd7 11.dxc5 Bxc5 12.Nc3 (32.395) 415
 18/22	 0:00 	+0.36 	1...e5 2.Nf3 Nf6 3.d4 Nxe4 4.Bd3 d5 5.Nxe5 Nd7 6.O-O Bd6 7.Qe2 O-O 8.Bxe4 dxe4 9.Qxe4 c5 10.Nxd7 Qxd7 11.dxc5 Bxc5 12.Nc3 (80.422) 574
(Appears instantly)

Forcing 1.d4
16/15	 0:01 	+0.20++	1...Nf6 2.Nf3 e6 3.e3 d5 4.c4 Nc6 5.Bd3 Be7 6.Nc3 O-O 7.cxd5 exd5 8.O-O Nb4 (726.011) 693
 16/18	 0:01 	+0.20 	1...Nf6 2.Nf3 e6 3.e3 d5 4.Bd3 c5 5.O-O c4 6.Be2 Bd6 7.b3 cxb3 8.axb3 Nc6 9.c4 O-O 10.c5 (883.132) 697
 17/19	 0:02 	+0.12 	1...Nf6 2.Nf3 e6 3.e3 Be7 4.Bd3 Nc6 5.O-O O-O 6.Nc3 d5 7.Ne5 Nb4 8.a3 Nxd3 9.Qxd3 Nd7 10.Nf3 c5 (1.680.032) 698
 18/19	 0:03 	+0.12 	1...Nf6 2.Nf3 e6 3.e3 Be7 4.Bd3 d5 5.O-O O-O 6.c4 dxc4 7.Bxc4 c5 8.Nc3 Nc6 9.dxc5 Bxc5 10.Bd2 Bd7 (2.288.335) 697
Back to root.
16/23	 0:00 	+0.36 	1.e4 e5 2.Nf3 Nf6 3.d4 Nxe4 4.Bd3 d5 5.Nxe5 Nd7 6.O-O Bd6 7.Qe2 O-O 8.Bxe4 dxe4 9.Qxe4 c5 10.Nxd7 Qxd7 11.dxc5 Bxc5 12.Nc3 (82.876) 587
 17/23	 0:00 	+0.36 	1.e4 e5 2.Nf3 Nf6 3.d4 Nxe4 4.Bd3 d5 5.Nxe5 Nd7 6.O-O Bd6 7.Qe2 O-O 8.Bxe4 dxe4 9.Qxe4 c5 10.Nxd7 Qxd7 11.dxc5 Bxc5 12.Nc3 (116.796) 621
 18/23	 0:00 	+0.36 	1.e4 e5 2.Nf3 Nf6 3.d4 Nxe4 4.Bd3 d5 5.Nxe5 Nd7 6.O-O Bd6 7.Qe2 O-O 8.Bxe4 dxe4 9.Qxe4 c5 10.Nxd7 Qxd7 11.dxc5 Bxc5 12.Nc3 (172.858) 649
(Appears instantly)

Forcing entirely unrelated position (1. e4 e5 2. f4 exf4 3. Nf3 g5 4. Nc3 Bg7 5. d4 g4 6. Bxf4 gxf3 7. Qxf3 d6)
16/23	 0:14 	-0.36 	8.Bb5+ c6 9.Bc4 Qf6 10.Bb3 Ne7 11.Rd1 Be6 12.Bxd6 Qxf3 13.gxf3 Bxb3 14.axb3 Ng6 15.Rg1 Nd7 16.Kf2 Rg8 17.e5 O-O-O 18.Ne4 Nf4 19.Rg4 (10.559.343) 718
 17/23	 0:18 	-0.36 	8.Bb5+ c6 9.Bc4 Qf6 10.Bb3 Ne7 11.Rd1 Be6 12.Bxd6 Qxf3 13.gxf3 Bxb3 14.axb3 Ng6 15.Rg1 Nd7 16.Kf2 Rg8 17.e5 O-O-O 18.Ne4 Nf4 19.Rg4 (13.044.222) 719
 18/24	 0:20 	-0.44--	8.Bb5+ c6 9.Bc4 Qf6 10.Bb3 Ne7 11.Rd1 Be6 12.Bxd6 Qxf3 13.gxf3 Bxb3 14.axb3 Ng6 15.Rg1 Nd7 16.Kf2 Rg8 17.e5 O-O-O 18.Ne4 Nf4 19.Rg4 Ne6 (15.030.197) 718
 18/17	 0:28 	-0.28++	8.Bb5+ c6 9.Bc4 Qf6 10.Bb3 Ne7 11.Rd1 Be6 12.d5 cxd5 13.exd5 Bf5 14.Nb5 O-O 15.O-O Qxb2 16.Bxd6 (20.532.456) 717
 18/19	 0:30 	-0.52--	8.Bb5+ c6 9.Bc4 Qf6 10.O-O-O Bh6 11.Ne2 Bxf4+ 12.Nxf4 Ne7 13.Bb3 O-O 14.Qg3+ Kh8 15.Rhe1 Qg7 16.Qxg7+ Kxg7 17.Re3 (22.142.662) 719
 18/23	 0:37 	-0.48 	8.Bb5+ c6 9.Bc4 Qf6 10.Rf1 Nh6 11.h3 O-O 12.Qg3 Qg6 13.Qxg6 hxg6 14.Bxd6 Rd8 15.e5 b5 16.Bb3 Nf5 17.Ne4 Bh6 18.a4 Nxd6 19.Nxd6 (26.909.364) 720
Back to root.
16/02	 0:00 	+0.36 	1.e4 e5 (73.608) 669
 17/02	 0:00 	+0.36 	1.e4 e5 (252.585) 673
 18/02	 0:00 	+0.36 	1.e4 e5 (323.694) 667
(Appears instantly)

That seems perfect! It's the same behavior of PAMC_GTBd, only more stable and faster ("within one second" Vs. "instantly").

So, I'd say mission accomplished guys! :)

There's still the mystery of why are the new versions lagging a few elos behind, it's evident that doesn't matter for analysis thanks to all the time saved, but one wonders if there's not some bug somewhere holding it back (that will be moot when Stockfish 2.1 arrives and has PAMC_GTBd's behavior and is stronger than 2.0.1, hopefully).

Oh, and here's gaard's version, that includes only fruity's changes:

http://dl.dropbox.com/u/11904592/stockfish_201_PA_K.zip

Anyway, here's a cross-post from RF:
Uly wrote:My personal priority list for Stockfish looks like this:

1.- Learning. So that it can finally obsolete Rybka 3, I have to keep relying on Rybka 3 Persistent Hash just because all the time it saves not having to write manually the analysis to a third party program that the engine can't see, and I don't think it's the job of a GUI if engines like Shredder have shown that the engine can write its analysis to a file and retrieve it by itself, which is the most efficient thing that can be done.

2.- Stability. That part where Stockfish goes ++ ++ -- -- ++ -- ++ -- -- -- ++ -- -- ++ ++, where the score seems almost unusable as it keep failing low and high for some reason. Why is this anyway? Stockfish is the only engine that does it this bad and I don't see a reason why fixing this would hurt performance (PA helps a lot with this, but it's still present in new positions and plies.)

3.- Granulary. So that moves don't go 0.04 0.08 0.12 0.16... Stockfish move choice seems mostly luck when apparently two moves have a score of 0.04 but Stockfish has a clear preference for one of them. Can't that move be 0.05 or something? The granularity is also weird (another thing that is unique to Stockfish).

It was a shock when the very first code improvements resulted in accidentally fixing the last two problems, the granularity was gone and Stockfish was super-stable, but it also broke some features (where Stockfish would seem to lose its mind) and dropped 150 elo, which seems mysterious.

Sarciness
Posts: 13
Joined: Wed Feb 09, 2011 9:10 am

Re: Designing an analysis friendly Stockfish?

Post by Sarciness » Wed Feb 09, 2011 2:59 pm

Short match finished 6-4 to Rybka 3. Not bad from Stockfish! Can't wait for 2.1!

PGN had some problems. Not sure why!

Jeremy Bernstein
Site Admin
Posts: 1226
Joined: Wed Jun 09, 2010 7:49 am
Real Name: Jeremy Bernstein
Location: Berlin, Germany
Contact:

Re: Designing an analysis friendly Stockfish?

Post by Jeremy Bernstein » Wed Feb 09, 2011 3:29 pm

Thanks Uly. I personally prefer the Fruity version, I think.

The tablebases don't seem to make much of a difference for play, but I find them useful for endgame analysis. I've made a local version which, when the tb returns a mate score, generates the entire main line for the primary PV, which is pretty useful for analysis purposes (just copy it into your move list and walk through it rather than entering the top moves one at a time). Idea copied from Houdini (ideas, not code! ;)). Once I've made sure it doesn't crash under certain conditions (mate in 200, for instance), I'll post that build, too.

I still feel like Stockfish is doing more work than necessary when moving between positions, but maybe that's just a subjective impression.

The next thing to get working would be some sort of persistent hashing, which is much less trivial, but certainly not impossible.

User avatar
Uly
Posts: 838
Joined: Thu Jun 10, 2010 5:33 am

Re: Designing an analysis friendly Stockfish?

Post by Uly » Wed Feb 09, 2011 3:50 pm

Yes, this is what BB+ said about it:
BB+ wrote:Persistent Hash seems more difficult to implement, though if you just want a stopgap version (likely unintelligent with regards to slow disk reads) I don't think it would be too hard.
I hope he elaborates. A learning file well implemented only would need to be read once per position, or in worse cases once per depth, so I don't think slow disk reads would be a problem.

I still haven't checked how Spike 1.4 does learning, but it does have the wanted behavior of starting from a 0 size file that grows as more positions are analyzed.

Its contents look like this:

1056476917 -968304153 52 84
360094764 459597646 76 56
607183598 2025424206 132 68
700192110 -1762893360 143 64

User avatar
Uly
Posts: 838
Joined: Thu Jun 10, 2010 5:33 am

Re: Designing an analysis friendly Stockfish?

Post by Uly » Wed Feb 09, 2011 3:59 pm

Shredder's learning (the gold standard of behavior) file looks like glibberish.

Image

As does Rybka's Persistent Hash file.

Image

(Well, it doesn't hurt to take a peek...)

Jeremy Bernstein
Site Admin
Posts: 1226
Joined: Wed Jun 09, 2010 7:49 am
Real Name: Jeremy Bernstein
Location: Berlin, Germany
Contact:

Re: Designing an analysis friendly Stockfish?

Post by Jeremy Bernstein » Wed Feb 09, 2011 4:05 pm

Uly wrote:Shredder's learning (the gold standard of behavior) file looks like glibberish.

Image

As does Rybka's Persistent Hash file.

Image

(Well, it doesn't hurt to take a peek...)
It's probably more interesting to look at those in a hex editor, if at all. ;)

Post Reply