Test Position

Discussion of anything and everything relating to chess playing software and machines.

Moderators: bob, hgm, Harvey Williamson

Forum rules
This textbox is used to restore diagrams posted with the [d] tag before the upgrade.
peter
Posts: 1778
Joined: Sat Feb 16, 2008 6:38 am
Full name: Peter Martan

Re: Test Position

Post by peter » Fri Sep 11, 2009 7:30 am

Well, Togas there are many
:)
In most of them, history pruning can be switched off, which mostly doesn't lower speed so much. Extremely configurable (therefore the name, I guess) is a version of Cylone 4.4, called Cyclone xTreme, there was no success within a quarter of an hour as for my Quad with default settings, neither turning off nullmove, neither forward pruning off, but as for history pruning off:

5k2/5p2/2b1p1pN/1p2P1P1/5Q1p/1Pb4P/4KP2/1q1B4 b - - 0 1

Analysis by Cyclone xTreme:

1...Le8 2.Sg4 Db2+ 3.Kf1 Da1 4.Se3 Lxe5 5.Db4+ Kg8 6.Dxh4
-/+ (-0.81) Tiefe: 6/17 00:00:00 10kN
...
1...Le8 2.Sg4 b4 3.Se3 Da1 4.Dxh4 Lb5+ 5.Kf3 Lc6+ 6.Ke2 Da6+ 7.Sc4 Lxe5 8.Lc2 Lc3 9.Df4 e5 10.Dh4 Ld5 11.Dh6+ Ke7
-/+ (-1.28) Tiefe: 16/52 00:00:19 68760kN
1...f5 2.exf6 e5 3.Dg4 Lb7 4.Kf1 Dd3+ 5.Kg1 Dd5 6.Lf3 Dxf3 7.Dxf3 Lxf3 8.Kf1 Ld5 9.Ke2 Lxb3 10.Kd3 b4 11.Sg4 Ld5 12.Se3 e4+ 13.Ke2
-+ (-3.35) Tiefe: 16/71 00:02:33 561mN
...
1...f5 2.exf6 e5 3.Dg4 Lb7 4.Sf5 Le4 5.Kf1 Lxf5 6.Df3 e4 7.Dxc3 Dxd1+ 8.Kg2 Df3+ 9.Dxf3 exf3+ 10.Kxf3 b4 11.Kg2 Le6 12.Kf3 Lxb3 13.Ke3 Le6 14.Kd4 Lxh3 15.f4 b3 16.Kc3
-+ (-3.66) Tiefe: 19/72 00:11:22 2558mN

The same did work with Toga II 1.4.25 SE, you can swith off history pruning as well, but it takes up to depth 21 and 35 minutes:

Neue Partie, Blitz:4'+2" Dort
5k2/5p2/2b1p1pN/1p2P1P1/5Q1p/1Pb4P/4KP2/1q1B4 b - - 0 1

Analysis by Toga II 1.4.25SE:

1...Le8 2.Sg4 Db2+ 3.Kf1 Ld2 4.Df6 Lc6 5.Dh8+ Ke7 6.Dxh4
-/+ (-0.98) Tiefe: 6/19 00:00:00 12kN
...
1...Le8 2.Sg4 b4 3.Se3 Da1 4.Dxh4 Lb5+ 5.Kf3 Lc6+ 6.Ke2 Da6+ 7.Sc4 Lxe5 8.Dg4 Lc3 9.Kf1 Da1 10.h4 Db1 11.Kg1 Da2 12.Df4 Ld5 13.Db8+ Ke7 14.Dc7+ Kf8
-+ (-1.50) Tiefe: 20/71 00:08:37 1909mN
1...f5 2.exf6 e5 3.Dg4 Lb7 4.Sf5 Dxf5 5.Dxf5 gxf5 6.Kf1 e4 7.Kg2 Ld5 8.f3 e3 9.Kf1 f4 10.Ke2 Kf7 11.Lc2 Le6 12.Ld3 Lxh3 13.Lxb5 Le6
-+ (-3.46) Tiefe: 20/72 00:35:09 7854mN


Remark, Cyclone does it within 16 plies, that's as well as Deep Fritz 10, which was best solver of this position for me, see my other posting,
Peter.

BBauer
Posts: 658
Joined: Wed Mar 08, 2006 7:58 pm

Re: Test Position

Post by BBauer » Fri Sep 11, 2009 8:06 am

1. ..f5 and zugzwang.
Here we have a position which is not a study but from a real game.
Contrary to common opinion such positions are not rare.
As most strong programs rely heavily on null move pruning they will take a long time to find f5. Perhaps they will never find it. Typical behavior: Enter the move and the score goes up imidiatly.
Compare:
[D]8/p7/qkpN1p2/8/1B1P4/PP3K2/5P2/8 w - -
Enter Ba5 and you have the solution.

kind regards
Bernhard

User avatar
AdminX
Posts: 5133
Joined: Mon Mar 13, 2006 1:34 pm
Location: Acworth, GA
Contact:

Re: Test Position

Post by AdminX » Fri Sep 11, 2009 10:18 am

BBauer wrote:1. ..f5 and zugzwang.
Here we have a position which is not a study but from a real game.
Contrary to common opinion such positions are not rare.
As most strong programs rely heavily on null move pruning they will take a long time to find f5. Perhaps they will never find it. Typical behavior: Enter the move and the score goes up imidiatly.
Compare:
[D]8/p7/qkpN1p2/8/1B1P4/PP3K2/5P2/8 w - -
Enter Ba5 and you have the solution.

kind regards
Bernhard

Analysis by Deep Shredder 11 x64:

1.Bc5+ Kc7 2.Ne8+ Kd7 3.Nxf6+ Ke6 4.Ne4 Qd3+ 5.Kf4 a6 6.Bb6 Kf7 7.a4 Qxb3 8.a5 Kg6 9.f3 Qb2 10.Bc5 Qc1+ 11.Ke5 Qh1 12.Kf4 Qh6+ 13.Kg3 Kf5 14.Nd6+
-+ (-1.81) Depth: 6/12 00:00:00 17kN
-+ (-2.28) Depth: 17/43 00:00:08 24534kN, tb=257

1.Ba5+ Kxa5 2.Nc4+ Kb5 3.Kf4 f5 4.Kg5 f4 5.f3 Qxa3 6.Nxa3+ Kb4 7.Nc4 Kxb3 8.Na5+ Kb4 9.Nxc6+ Kc4 10.Nxa7 Kxd4 11.Kxf4 Kd5 12.Kf5 Kd4 13.f4 Kd5
+- (4.52) Depth: 17/43 00:00:12 31182kN, tb=2060
+- (7.10) Depth: 29/48 00:01:09 254mN, tb=26617
"Good decisions come from experience, and experience comes from bad decisions."
__________________________________________________________________
Ted Summers

User avatar
michiguel
Posts: 6388
Joined: Thu Mar 09, 2006 7:30 pm
Location: Chicago, Illinois, USA
Contact:

Re: Test Position

Post by michiguel » Fri Sep 11, 2009 5:36 pm

BBauer wrote:1. ..f5 and zugzwang.
Here we have a position which is not a study but from a real game.
Contrary to common opinion such positions are not rare.
As most strong programs rely heavily on null move pruning they will take a long time to find f5. Perhaps they will never find it. Typical behavior: Enter the move and the score goes up imidiatly.
Compare:
[D]8/p7/qkpN1p2/8/1B1P4/PP3K2/5P2/8 w - -
Enter Ba5 and you have the solution.

kind regards
Bernhard
Gaviota does relatively well on this one (see below), but it takes ~7 hours to find f5 (16 plies). If f5 is moved, it sees the advantage in 12 plies (~2 minutes). So it takes 3 extra plies to see the variation compared to forcing f5. Very interesting position.

Miguel

Code: Select all

                                   Qxb3 5.Ne4 Qd3
    418949   8       1.9    -3.81  1.Bc5+ Kc7 2.Ne8+ Kd8 3.Nxf6 Qd3+ 4.Kf4
                                   Qxb3 5.Ne4 a5 6.f3
    782061   8:      2.6    -3.81  1.Bc5+ Kc7 2.Ne8+ Kd8 3.Nxf6 Qd3+ 4.Kf4
                                   Qxb3 5.Ne4 a5 6.f3
    961032   9       3.0    -3.81  1.Bc5+ Kc7 2.Ne8+ Kd8 3.Nxf6 Qd3+ 4.Kf4
                                   Qxb3 5.Ne4 a5 6.f3 Kd7
   1811504   9:      4.9    -3.81  1.Bc5+ Kc7 2.Ne8+ Kd8 3.Nxf6 Qd3+ 4.Kf4
                                   Qxb3 5.Ne4 a5 6.f3 Kd7
   2318229  10       6.0    -3.83  1.Bc5+ Kc7 2.Ne8+ Kd8 3.Nxf6 Qd3+ 4.Kf4
                                   Qxb3 5.Ke5 a5 6.f4 Qb8+ 7.Ke4 Qb2
   3800055  10       8.6      :-)  1.Ba5+
   3855034  10       8.7      :-)  1.Ba5+
   3933584  10       8.9      :-)  1.Ba5+
   4190262  10       9.4    +2.21  1.Ba5+ Kxa5 2.Nc4+ Kb5 3.Kf4 f5 4.Kg5
                                   f4 5.f3 Qb7 6.Nd6+ Kb6 7.Nxb7 Kxb7
                                   8.Kxf4
   4318616  10:      9.6    +2.21  1.Ba5+ Kxa5 2.Nc4+ Kb5 3.Kf4 f5 4.Kg5
                                   f4 5.f3 Qb7 6.Nd6+ Kb6 7.Nxb7 Kxb7
                                   8.Kxf4
   6468579  11      13.1    +2.31  1.Ba5+ Kxa5 2.Nc4+ Kb5 3.Kf4 f5 4.Kg5
                                   f4 5.f3 Qb6 6.Nxb6 Kxb6 7.Kxf4 Kc7
                                   8.Ke4 Kd6
   7484268  11:     14.6    +2.31  1.Ba5+ Kxa5 2.Nc4+ Kb5 3.Kf4 f5 4.Kg5
                                   f4 5.f3 Qb6 6.Nxb6 Kxb6 7.Kxf4 Kc7
                                   8.Ke4 Kd6
  14658565  12      25.3    +2.43  1.Ba5+ Kxa5 2.Nc4+ Kb5 3.Kf4 f5 4.Kg5
                                   f4 5.f3 Qb7 6.Nd6+ Kb6 7.Nxb7 Kxb7
                                   8.Kxf4 a5 9.Ke4 Kc8
  18767892  12:     31.7    +2.43  1.Ba5+ Kxa5 2.Nc4+ Kb5 3.Kf4 f5 4.Kg5
                                   f4 5.f3 Qb7 6.Nd6+ Kb6 7.Nxb7 Kxb7
                                   8.Kxf4 a5 9.Ke4 Kc8

peter
Posts: 1778
Joined: Sat Feb 16, 2008 6:38 am
Full name: Peter Martan

Re: Test Position

Post by peter » Fri Sep 11, 2009 6:50 pm

BBauer wrote:1. ..f5 and zugzwang.
Here we have a position which is not a study but from a real game.
Contrary to common opinion such positions are not rare.
As most strong programs rely heavily on null move pruning they will take a long time to find f5. Perhaps they will never find it. Typical behavior: Enter the move and the score goes up imidiatly.
Compare:
[D]8/p7/qkpN1p2/8/1B1P4/PP3K2/5P2/8 w - -
While this example of yours is zugzwang indeed, the first one isn't any as clearly. There are some white moves possible after the first move of black, that there are no real good ones doesn't mean white's position would be better having a nullmove.
Therefore engines, the nullmove can be switched off of, solve your example fast but not the other one.



8/p7/qkpN1p2/8/1B1P4/PP3K2/5P2/8 w - - 0 1

Analysis by Cyclone xTreme with nullmove off:

...
1.Lc5+ Kc7 2.Se8+ Kd7 3.Sxf6+ Ke6 4.Se4 Dd3+ 5.Kf4 Dxb3 6.f3 Db2 7.Ke3 Dc1+ 8.Ke2 Kf5 9.Sd6+ Ke6
-+ (-2.62) Tiefe: 10/27 00:00:00 938kN
1.La5+ Kxa5 2.Sc4+ Kb5 3.Kf4 f5 4.Kg5 f4 5.f3 Db6 6.Sxb6 axb6 7.Kxf4 Ka5 8.Ke4 Kb5 9.a4+ Kb4
+- (2.14) Tiefe: 10/27 00:00:00 1065kN
...
1.La5+ Kxa5 2.Sc4+ Kb5 3.Kf4 f5 4.Kg5 f4 5.f3 Db7 6.Sd6+ Ka6 7.Sxb7 Kxb7 8.Kxf4 Kb8 9.Ke5 Kc7 10.f4 Kd7 11.f5 Ke7 12.b4 Kd7
+- (2.99) Tiefe: 15/34 00:00:09 26920kN
Peter.

User avatar
meschle
Posts: 200
Joined: Tue Apr 01, 2008 9:53 pm

Re: Test Position

Post by meschle » Fri Sep 11, 2009 9:10 pm

I dug out old fritz 8 - interesting result

,M - Fritz 8,
5k2/5p2/2b1p1pN/1p2P1P1/5Q1p/1Pb4P/4KP2/1q1B4 b - - 0 1

Analysis by Fritz 8:

1...Be8 2.Ng4 Bb2 3.Qb4+
µ (-1.22) Depth: 7/19 00:00:00 46kN
1...Be8--
µ (-0.93) Depth: 8/22 00:00:00 120kN
1...Be8 2.Ng4 Bb2 3.Qb4+
µ (-0.93) Depth: 8/22 00:00:00 128kN
1...Be8 2.Ng4 b4 3.Ne3 Bb5+ 4.Kf3 Bc6+ 5.Kg4 Qb2 6.Nc4 Qb1
µ (-0.75) Depth: 9/28 00:00:00 464kN
1...Be8 2.Ng4 b4 3.Ne3 Bc6 4.Qc4 Bh1 5.Kf1 Bd5 6.Qxh4 Bxb3
µ (-0.78) Depth: 10/27 00:00:01 1106kN
1...Be8 2.Ng4 Qb2+ 3.Kf1 Qa1 4.Qf3 b4 5.Kg2 Qc1 6.Be2
µ (-1.00) Depth: 11/32 00:00:03 2683kN
1...Be8 2.Ng4 Qb2+ 3.Kf1 Qa1 4.Ke2 b4 5.Ne3 Qa8 6.f3 Qb8 7.Kf2 Qxe5 8.Qxh4
µ (-0.97) Depth: 12/32 00:00:06 5877kN
1...Be8 2.Ng4 Qb2+ 3.Kf1 Qa1 4.Ke2 b4 5.Ne3 Bd4 6.Qxh4 Bb5+ 7.Kf3 Bc6+ 8.Ke2 Kg8 9.Bc2 Bxe5 10.Qxb4
µ (-1.00) Depth: 13/36 00:00:15 14612kN
1...f5!
µ (-1.03) Depth: 13/40 00:00:24 24621kN
1...f5!
µ (-1.18) Depth: 13/40 00:00:25 25234kN
1...f5!
-+ (-1.50) Depth: 13/40 00:00:26 26821kN
1...f5!
-+ (-1.78) Depth: 14/42 00:00:35 35640kN
1...f5--
-+ (-1.50) Depth: 15/46 00:01:12 76001kN
1...f5 2.exf6 e5
-+ (-1.50) Depth: 15/50 00:01:26 90174kN
1...f5!
-+ (-1.78) Depth: 16/45 00:03:05 195mN


11.09.2009)
Regards Mark

Quad Q6600 3.0 Ghz, Vista 64bit, 4gb Ram

jdart
Posts: 3816
Joined: Fri Mar 10, 2006 4:23 am
Location: http://www.arasanchess.org

Re: Test Position

Post by jdart » Sat Sep 12, 2009 2:31 am

Arasan 11.5, Q9550, 512MB hash:

"Deep Hiarcs 12 - Stockfish 1.4, 2009" bm f5
0 0.00 Bf3+ -3.53 22
0 0.00 Qa2+ +0.93 44
1 0.00 Be8 +0.53 974
2 0.00 Be8 +0.65 1351
3 0.02 Be8 +0.77 5250
4 0.02 Be8 +0.73 11386
5 0.03 Be8 +0.61 21822
6 0.06 Be8 +0.85 60307
7 0.11 Be8 +0.77 119997
8 0.20 Be8 +0.49 251044
9 0.33 Be8 +0.61 506852
10 0.64 Be8 +0.69 1156545
11 1.08 Be8 +0.77 2071054
12 1.97 Be8 +0.69 4092773
13 4.88 Be8 +0.81 10918768
14 9.13 Be8 +0.92 20964248
15 17.41 Be8 +0.92 40636936
16 38.30 Be8 +0.93 90196358
17 89.88 Be8 +0.96 215289392
18 191.19 Be8 +0.97 461568626
18 441.24 Qb2+ +1.00 1089350210
19 604.86 Qb2+ +0.97 1488611898
19 934.63 f5! +1.50 2340404175
2.50M nodes/second.
496965453 regular nodes, 2497597142 quiescence nodes.
733930297 searches of hash table, 178632606 successful (24 percent).
15918348 hash entries inserted, 85086712 entries replaced, 324593995 inserts failed.
null cutoffs: 210252292 (7%)
pruning: 3017437277 moves (futility), 6516317 nodes razored
extensions: 168156140 check, 0 recapture, 3284370 pawn, 16987767 threat, 1643223
8 forced move.
0 tablebase probes, 0 tablebase hits
3481 splits, average thread usage=3.99
result: f5 score: +1.50 ++ solved in 934.63 sec. (2340.40M nodes
)
f5 exf6

solution times:
0 1 2 3 4 5 6 7 8 9

0 | 934.63

correct : 1/1
nodes to solution : 2340.40M
depth to solution : 18.00
time to solution : 934.63 sec.
test complete

User avatar
Eelco de Groot
Posts: 4148
Joined: Sun Mar 12, 2006 1:40 am
Location: Groningen

Re: Test Position

Post by Eelco de Groot » Sun Sep 13, 2009 3:08 am

peter wrote:
While this example of yours is zugzwang indeed, the first one isn't any as clearly. There are some white moves possible after the first move of black, that there are no real good ones doesn't mean white's position would be better having a nullmove.
Therefore engines, the nullmove can be switched off of, solve your example fast but not the other one.
I could not find an obvious Zugzwang in the position from the Stockfish game that could have caused the problems for some programs. I took some positions along the PV after f5, changed the side to move so White could have "passed" but the Black pieces still win easily. The e.p. move exf6 could be a source of bugs but then multiple programs would share this bug :? I think you will just have to look at the PV after 1... f5 to see what is going on. The only thing I saw with a random program, an old Belka, was that if Black does not yet see a winning line he will try a string of checks to get a possible repetition draw. But I do not see quite why that would make it hard to see that 1... f5 is good, but not after actually making the move. Especially if it also concerns programs that do not have large differences between null window searches and PV searches.

This is the output from the two latest builds of Ancalagon, Stockfish already found the move so this should not really be difficult for a Stockfish clone to find. Unless of course your two ply search takes 19 seconds... for a first best move of 2. gxf6 (after 1.. f5), taking 19 seconds for a two ply search, and for a bad move at that, this was not very efficient searching... :)

The two ply output from build 270 was pretty good finally, after reducing some extensions that got much too long here, and then I tried an experiment just to see if the two ply PV could even be improved upon. The new version 271 could not find all the right moves at two ply unfortunately it changed the whole PV again, probably after not finding the crucial 3... Bb7, but it did seem to help a bit in bringing down the score for 1... Be8 a little earlier, just enough for 1... f5 to overtake it one ply earlier 8-)

I just tried a little search growth-boost again - I posted about that on Rybka forum - for the height, or ply, == 5 node in the current PV, because in the first PV at depth two from build 270 it was the fifth move 3... Bb7! instead of 3... Qb2+ that seemed just too hard to find for a two ply search. This is all low level experimenting, nothing could be simpler than just a test whether the node is at height == 5 in the PV, and if you are lucky the growth-boost involves just an extension for a single node fairly high in the tree, but it can pay off :)

Build 270

[D]5k2/5p2/2b1p1pN/1p2P1P1/5Q1p/1Pb4P/4KP2/1q1B4 b - -

Engine: Ancalagon 1.3 Weak Squares 180 Board Control middlegame 50 endgame 50 Build 270 (Athlon 2009 MHz, 128 MB)
by Romstad, Costalba, Kiiski, de Groot

2.00 0:02 +4.01 1...f5 2.exf6 e5 3.Qg4 Qb2+{Almost the right PV already 8-)} 4.Kf1 (1.495.272) 534

2.04 0:03 +4.07 1...Be8 2.Qe3 Qb2+ 3.Kf1 Bxe5 4.Qc5+ Kg7 (1.612.951) 534

2.05 0:03 +7.52 1...Ke7 2.Qxf7+ Kd8 3.Qf6+ Kd7
4.Qf7+ Kc8 5.Qxe6+ Kc7 (1.678.716) 534

3.01 0:03 +2.76 1...Ke7 2.Qxf7+ Kd8 3.Qf8+ Kc7
4.Qd6+ Kb7 5.Qd3 Qb2+ 6.Qc2 Qa1
7.Kf1 Bxe5 (1.741.568) 535

3.02 0:03 +4.15 1...Be8 2.Qe3 Qb2+ 3.Kf1 Bxe5 (1.744.895) 536

4.01 0:03 +4.21 1...Be8 2.Qe3 b4 3.Qd3 Qc1 4.Kf1 Qxg5
5.Ng4 Qf4 (2.020.957) 541

5.01 0:03 +4.21 1...Be8 2.Qe3 b4 3.Qd3 Qc1 4.Kf1 Qxg5
5.Ng4 Qf4 (2.145.462) 544

6.01 0:07 +2.66 1...Be8 2.Ng4 b4 3.Ne3 Bc6 4.Kf1 Qb2
5.Nc4 Qa1 6.Qg4 Qb1 (4.401.650) 580

7.01 0:12 +2.82 1...Be8 2.Ng4 b4 3.Ne3 Bc6 4.Kf1 Bd5
5.Qf6 Bxb3 6.Qd8+ Kg7 7.Qf6+ Kg8
8.Qd8+ Kh7 9.Qd7 Bxd1 10.Nxd1 (7.759.347) 618

8.01 0:16 +2.94 1...Be8 2.Ng4 b4 3.Ne3 Qa1 4.Kf1 Bd2
5.Qxh4 Qxe5 6.Kg2 Bb5 7.Nc4 Bc6+
8.f3 Qxg5+ 9.Qxg5 Bxg5 10.Bc2 (9.993.893) 621

9.01 0:23 +3.13 1...Be8 2.Ng4 b4 3.Ne3 Qa1 4.Kf1 Bd4
5.Qf3 Bxe5 6.Nc4 Bf4 7.Qxf4 Qxd1+
8.Kg2 Bc6+ 9.f3 Qe2+ 10.Kg1 Qxf3 (14.719.846) 635

10.01 0:31 +3.00 1...Be8 2.Ng4 b4 3.Qc4 Qc1 4.Ne3 Qd2+
5.Kf1 Bxe5 6.Be2 Bd6 7.Qc2 Qc3
8.Qxc3 bxc3 9.Ke1 Ke7 (20.644.276) 652

10.07 1:08 +3.64 1...f5 (44.112.358) 647

11.01 1:13 +5.47 1...f5 2.exf6 e5 3.Qg4 Bb7 4.Nf7 Qb2+
5.Kf1 Qd2 6.Qe2 Kxf7 7.Qxd2 Bxd2
8.Be2 Bxg5 9.Bxb5 Kxf6 (47.205.339) 638

12.01 2:01 +5.76 1...f5 2.exf6 e5 3.Qg4 Bb7 4.Kf1 Qd3+
5.Kg1 Qd5 6.Bf3 Qxf3 7.Qxf3 Bxf3
8.Kf1 Bd2 9.Ng4 Bxg4 10.hxg4 Bxg5 (76.878.136) 635

13.01 5:27 +6.60 1...f5 2.exf6 e5 3.Qg4 Bb7 4.Nf7 Qa2+
5.Kf1 Qd2 6.Qe2 Kxf7 7.Qxd2 Bxd2
8.Be2 Bc6 9.Bd3 Bxg5 10.Ke2 Bf4
11.f3 Kxf6 (203.394.110) 621

14.01 15:51 +6.64 1...f5 2.exf6 e5 3.Qg4 Bb7 4.Nf7 Qa2+
5.Kf1 Qd2 6.Qe2 Kxf7 7.Qxd2 Bxd2
8.Be2 Bc6 9.Bd3 Bxg5 10.Ke2 Bf4
11.b4 Kxf6 (590.633.600) 620


best move: f7-f5 time: 24:09.062 min n/s: 634.072 nodes: 918.810.315

Code change in build 271 is just three lines:

Code: Select all

nullwindowValue = value; 

// The null window search can be used for an aspiration window narrowing,
// to make the extended depth less expensive in nodes/time.
// At ply == 5 the null window search result, nullwindowValue,
// is already a bit deeper than elsewhere so of better quality.

// Note: the new DEPTH_ZERO parameter in search_pv is used in another selective search part, 
// which can be switched on by giving the parameter a depth > DEPTH_ZERO 

value = -search_pv(pos, ss, -beta, -alpha, newDepth, ply+1, DEPTH_ZERO, threadID);

if (ply == 5)
{
	deepValue = -search_pv(pos, ss, -beta, -(nullwindowValue - Value(0x15)), newDepth + 2*OnePly, ply+1, DEPTH_ZERO, threadID);
	if (deepValue > nullwindowValue - Value(0x15))
		value = deepValue;
}
Build 271

[D]5k2/5p2/2b1p1pN/1p2P1P1/5Q1p/1Pb4P/4KP2/1q1B4 b - -

Engine: Ancalagon 1.3 Weak Squares 180 Board Control middlegame 50 endgame 50 Build 271 (Athlon 2009 MHz, 128 MB)
by Romstad, Costalba, Kiiski, de Groot

2.00 0:02 +1.41 1...f5 2.exf6 Qb2+ 3.Kf1 e5 4.Qxh4 (1.405.417) 541

2.02 0:02 +3.07 1...Qb2+ 2.Kf1 Be8 (1.407.236) 539

2.04 0:03 +4.25 1...Be8 2.Qf3 Qb2+ 3.Kf1 Bxe5 (1.835.775) 551

2.05 0:04 +7.52 1...Ke7 2.Qxf7+ Kd8 3.Qf6+ Kd7
4.Qf7+ Kc8 5.Qxe6+ Kc7 (2.555.970) 554

3.01 0:05 +1.80 1...Ke7 2.Qxf7+ Kd8 3.Qf8+ Kc7
4.Qe7+ Kb6 5.Qd8+ Kb7 6.Qd3 Qb2+
7.Kf1 Bxe5 8.Nf7 Bd4 9.Qc2 Qxc2
10.Bxc2 (2.892.065) 555

3.02 0:05 +4.25 1...Be8 2.Qf3 Qb2+ 3.Kf1 Bxe5 (2.893.706) 556

4.01 0:06 +3.68 1...Be8 2.Qf3 Qb2+ 3.Kf1 Bxe5 4.Qe2 Qd4
5.Ng4 (3.521.026) 562

5.01 0:07 +3.68 1...Be8 2.Qf3 Qb2+ 3.Kf1 Bxe5 4.Qe2 Qd4
5.Ng4 Bf4 6.Ne3 Bxg5 (3.993.974) 568

6.01 0:08 +3.11 1...Be8 2.Ng4 (4.907.674) 578

7.01 0:12 +2.98 1...Be8 2.Ng4 b4 3.Ne3 Bc6 4.Kf1 Be4
5.Kg1 Bc2 6.Qf6 Bxd1 7.Qd8+ Kg7
8.Qxd1 Qxd1+ 9.Nxd1 Bxe5 (7.291.255) 599

8.01 0:16 +2.37 1...Be8 2.Ng4 b4 3.Ne3 Qa1 4.Kf1 Bd4
5.Qxh4 Bxe3 6.Qxb4+ Kg7 7.fxe3 Qxd1+
8.Kf2 (10.447.361) 615

8.09 0:20 +2.49 1...f5 2.exf6 e5 3.Qg4 Bb7 4.Kf1 Bd4
5.Qe2 Qc1 6.Ng4 Qc6 7.f3 Qc1 (12.946.744) 625

9.01 0:23 +3.90 1...f5 (14.472.757) 622

10.01 0:30 +5.78 1...f5 2.exf6 e5 3.Qg4 Bb7 4.Kf1 Qd3+
5.Kg1 Qd5 6.Bf3 Qxf3 7.Qxf3 Bxf3
8.Ng4 Bd1 9.b4 Bxg4 10.hxg4 Bxb4 (18.089.067) 595

11.01 1:07 +5.25 1...f5 2.exf6 e5 3.Qg4 Bb7 4.Kf1 Qd3+
5.Kg1 Bd4 6.Bf3 Qxf3 7.Qxf3 Bxf3
8.Ng4 Bd5 9.b4 Kf7 10.Kh2 Ke6 (42.062.721) 621

12.01 2:07 +5.54 1...f5 2.exf6 e5 3.Qg4 Bb7 4.Kf1 Qd3+
5.Kg1 Bd4 6.Bf3 Qxf3 7.Qxf3 Bxf3
8.Ng4 Bd5 9.b4 Kf7 10.Ne3 (81.607.144) 641

13.01 4:28 +6.47 1...f5 2.exf6 e5 3.Qg4 Bb7 4.Nf7 Qa2+
5.Kf1 Qd2 6.Qe2 Kxf7 7.Qxd2 Bxd2
8.Be2 Bc6 9.Bg4 Bxg5 10.Ke2 Bd5
11.Kd3 Bxb3 (174.089.558) 647

14.01 24:52 +6.56 1...f5 2.exf6 e5 3.Qg4 Bb7 4.Nf7 Qb2+
5.Kf1 Qd2 6.Qe2 Kxf7 7.Qxd2 Bxd2
8.Be2 Bc6 9.Bg4 Bxg5 10.Ke1 Kxf6 (917.863.060) 615


best move: f7-f5 time: 35:24.328 min n/s: 631.404 nodes: 1.341.300.385

Eelco
Debugging is twice as hard as writing the code in the first
place. Therefore, if you write the code as cleverly as possible, you
are, by definition, not smart enough to debug it.
-- Brian W. Kernighan

peter
Posts: 1778
Joined: Sat Feb 16, 2008 6:38 am
Full name: Peter Martan

Re: Test Position

Post by peter » Sun Sep 13, 2009 9:40 am

Eelco de Groot wrote: I could not find an obvious Zugzwang in the position from the Stockfish game that could have caused the problems for some programs. I took some positions along the PV after f5, changed the side to move so White could have "passed" but the Black pieces still win easily.
Hi Eelco!
That's what I did, changing sides after 1...f5 makes white loose at once, this isn't zugzwang, which doesn't mean there isn't such later in the tree but what I saw about nullmove and other pruning techniques, is that forward and history pruning switched off at some engines brings the solution much more quickly, which isn't found by default so soon.
Besides Toga, this is so with Glaurung 2.2 too:

5k2/5p2/2b1p1pN/1p2P1P1/5Q1p/1Pb4P/4KP2/1q1B4 b - - 0 1

Analysis by Glaurung 2.2 JA:

1...Le8 2.De3 b4 3.Dd3 Db2+ 4.Lc2 Lxe5
-+ (-2.21) Tiefe: 6 00:00:00 21kN
1...Le8 2.De3 b4 3.f4 Lb5+ 4.Kf2 Dxd1 5.Dc5+ Kg7 6.Dxb5 Dxb3
-+ (-2.01) Tiefe: 7 00:00:00 28kN
1...Le8 2.Sg4 Da1 3.Df6 Dc1 4.Dh8+ Ke7 5.Se3 Dd2+ 6.Kf1 Lc6
-+ (-1.76) Tiefe: 8 00:00:00 51kN
1...Le8 2.Sg4 Da1 3.Df6 b4 4.Dh8+ Ke7 5.Df6+ Kd7 6.Df3 Kc7 7.Kf1 Lxe5 8.Sxe5 Dxe5
-+ (-1.86) Tiefe: 9 00:00:00 90kN
1...Le8 2.Sg4 Da1 3.Df6 b4 4.Dh8+ Ke7 5.Df6+ Kd7 6.Df3 Kc7 7.Kf1 Lxe5 8.Sxe5 Dxe5
-+ (-1.86) Tiefe: 10 00:00:00 143kN
1...Le8 2.Sg4 Db2+ 3.Kf1 Da1 4.Se3 Lc6 5.Dxh4 Lxe5 6.Db4+ Kg8 7.f4 Ld4
-+ (-1.74) Tiefe: 11 00:00:01 355kN
1...Le8 2.Sg4 Db2+ 3.Kf1 Da1 4.Se3 Lc6 5.Dxh4 Lxe5 6.Db4+ Kg8 7.Dd2 Lf3 8.Dd8+ Kh7
-+ (-1.76) Tiefe: 12 00:00:01 518kN
1...Le8 2.Sg4 Db2+ 3.Kf1 Da1 4.Se3 Lc6 5.Dxh4 Lxe5 6.Db4+ Kg8 7.Dd2 Lf3 8.Dd8+ Kh7 9.b4
-+ (-1.78) Tiefe: 13 00:00:01 903kN
1...Le8 2.Sg4 Db2+ 3.Kf1 Da1 4.Df3 b4 5.Kg2 Dc1 6.Le2 Dxg5 7.De4 Ld2 8.Db7 Df4
-+ (-1.92) Tiefe: 14 00:00:01 1712kN
1...Le8 2.Sg4 Db2+ 3.Kf1 Da1 4.Df3 b4 5.Dd3 Ld4 6.Kg2 Dc3 7.Lc2 Lc6+ 8.f3 Kg7 9.Lb1 Lxe5 10.Sxe5 Dxe5
-+ (-1.84) Tiefe: 15 00:00:02 3234kN
1...Le8 2.Sg4 Db2+ 3.Kf1 Da1 4.Df3 b4 5.Kg2 Dc1 6.Le2 Dxg5 7.De4 Kg7 8.f4 Df5 9.Dxf5 gxf5 10.Sf6 Lc6+ 11.Kf2
-+ (-1.68) Tiefe: 16 00:00:02 5489kN
1...Le8 2.Sg4 b4 3.Se3 Da1 4.De4 Kg8 5.Sc4 Lb5 6.Db7 Lxc4+ 7.bxc4 Db2+ 8.Kf3 Lxe5 9.De4 Dc3+ 10.Kg2 Kg7 11.Dxh4 b3 12.Dh6+ Kg8
-+ (-1.86) Tiefe: 17 00:00:05 15840kN
1...Le8 2.Sg4 b4 3.Se3 Da1 4.Dxh4 Lb5+ 5.Kf3 Lc6+ 6.Ke2 Da6+ 7.Sc4 Lxe5 8.Dg4 Lc3 9.Df4 Lg2 10.Dd6+ Dxd6 11.Sxd6 Lxh3 12.Kd3 Ke7
-+ (-2.00) Tiefe: 18 00:00:08 25346kN
1...Le8 2.Sg4 b4 3.Se3 Da1 4.Dxh4 Lb5+ 5.Kf3 Lc6+ 6.Ke2 Da6+ 7.Sc4 Lxe5 8.Dg4 Lc3 9.Dg3 Da2+ 10.Kf1 Kg7 11.Db8 Ld4 12.Se3 Dd2
-+ (-1.80) Tiefe: 19 00:00:12 40801kN
1...Le8 2.Sg4 b4 3.Se3 Da1 4.Dxh4 Lb5+ 5.Kf3 Lc6+ 6.Ke2 Da6+ 7.Sc4 Lxe5 8.Dg4 Lc3 9.Dg3 Da2+ 10.Kf1 Ld5 11.Df4 Kg8 12.Se5 Da7 13.Kg1
-+ (-1.80) Tiefe: 20 00:00:19 66933kN
1...Le8 2.Sg4 b4 3.Se3 Da1 4.Dxh4 Lb5+ 5.Kf3 Lc6+ 6.Ke2 Da6+ 7.Sc4 Lxe5 8.Dg4 Lc3 9.Dg3 Da2+ 10.Kf1 Kg7 11.Kg1 Db1 12.Dg4 Dd3 13.Le2 Dd5
-+ (-1.96) Tiefe: 21 00:00:32 114mN
1...Le8 2.Sg4 b4 3.Se3 Da1 4.Dxh4 Lb5+ 5.Kf3 Lc6+ 6.Ke2 Da6+ 7.Sc4 Lxe5 8.Dg4 Lc3 9.Kf1 Db5 10.Df4 Dd5 11.Dd6+ Dxd6 12.Sxd6 Ke7 13.Sc4 Ld4 14.Ke2 Ld5
-+ (-1.86) Tiefe: 22 00:00:56 203mN
1...Le8 2.Sg4 b4 3.Se3 Da1 4.Dxh4 Lb5+ 5.Kf3 Lc6+ 6.Ke2 Da6+ 7.Sc4 Lxe5 8.Dg4 Lb5 9.Kf1 Da1 10.Kg2 Lc7 11.Df3 Dc1 12.h4 Lxc4 13.bxc4 Dxc4 14.h5 gxh5 15.Dxh5
-+ (-1.76) Tiefe: 23 00:01:58 433mN
1...f5 2.exf6 e5 3.Dg4 Lb7 4.Sg8 Db2+ 5.Kf1 Dd2 6.De2 Kxg8 7.Dxd2 Lxd2 8.Lg4 Kf7 9.Ld7 b4 10.Ke2 Lxg5 11.Kd3 Ld5 12.Lb5 Lxf6 13.Lc4 e4+ 14.Kc2 Lxc4 15.bxc4 Ke6
-+ (-6.07) Tiefe: 23 00:13:06 2837mN


And now have a look, what Glaurung does, pruning in main search and in quiescence search is turned off:

5k2/5p2/2b1p1pN/1p2P1P1/5Q1p/1Pb4P/4KP2/1q1B4 b - - 0 1

Analysis by Glaurung 2.2 JA00:

1...Le8 2.De3 b4 3.Dd3 Db2+ 4.Lc2 Lxe5
-+ (-2.21) Tiefe: 6 00:00:00 17kN
1...Le8 2.De3 b4 3.Dd3 Db2+ 4.Lc2 Lxe5 5.Dc4
-+ (-2.15) Tiefe: 7 00:00:00 27kN
1...Le8 2.De3 b4 3.Dd3 Db2+ 4.Lc2 Lxe5 5.Dc4 Dd4 6.Dxd4 Lxd4
-+ (-2.33) Tiefe: 8 00:00:00 51kN
1...Le8 2.Sg4 b4 3.Se3 Da1 4.De4 Kg8 5.Kf1 Lb5+ 6.Kg1 Lxe5 7.Dxh4
-+ (-1.78) Tiefe: 9 00:00:00 174kN
1...Le8 2.Sg4 b4 3.Se3 Da1 4.Kf1 Ld2 5.Dg4 Lb5+ 6.Kg1 Dxe5 7.Dxh4 Lxe3 8.fxe3 Dxe3+ 9.Kg2
-+ (-1.88) Tiefe: 10 00:00:00 274kN
1...Le8 2.Sg4 b4 3.Se3 Da1 4.De4 Kg8 5.Kf1 Ld4 6.Dg4 Lb5+ 7.Kg1 Lxe3 8.fxe3 Dxe5 9.Dxh4 Dxe3+ 10.Kg2
-+ (-1.80) Tiefe: 11 00:00:01 476kN
1...Le8 2.Sg4 b4 3.Se3 Da1 4.De4 Da6+ 5.Sc4 Lc6 6.Dxh4 Lxe5 7.Kf1 Lc3
-+ (-1.82) Tiefe: 12 00:00:01 904kN
1...Le8 2.Sg4 b4 3.Se3 Da1 4.Dxh4 Lb5+ 5.Kf3 Lc6+ 6.Ke2 Da6+ 7.Sc4 Lxe5 8.Lc2 Lc3 9.Dh7
-+ (-1.76) Tiefe: 13 00:00:01 1810kN
1...Le8 2.Sg4 b4 3.Se3 Da1 4.Dxh4 Lb5+ 5.Kf3 Lc6+ 6.Ke2 Da6+ 7.Sc4 Lxe5 8.Lc2 Lc3 9.Dh6+ Ke8 10.f3
-+ (-1.76) Tiefe: 14 00:00:01 2993kN
1...Le8 2.Sg4 Db2+ 3.Kf1 Da1 4.Df3 b4 5.Dd3 Ld4 6.Sf6 Lc6 7.f4 Db2 8.Dc2 Dc3 9.Dxc3 bxc3
-+ (-1.88) Tiefe: 15 00:00:02 7050kN
1...Le8 2.Sg4 Db2+ 3.Kf1 Da1 4.Df3 b4 5.Kg2 Ld2 6.Sf6 Dxe5 7.Sxe8 Dxg5+ 8.Dg4 Dd8 9.Sc7 Dxc7 10.Dxh4 Lf4
-+ (-1.88) Tiefe: 16 00:00:04 10770kN
1...Le8 2.Sg4 Db2+ 3.Kf1 Da1 4.Df3 b4 5.Kg2 Ld2 6.Sf6 Dxe5 7.Sxe8 Dxg5+ 8.Dg4 Dd8 9.Sc7 Dxc7 10.Dxh4 Lf4 11.Lf3
-+ (-1.76) Tiefe: 17 00:00:05 17646kN
1...Le8 2.Sg4 Db2+ 3.Kf1 Da1 4.Df3 b4 5.Kg2 Ld2 6.Sf6 Dxe5 7.Sxe8 Dxg5+ 8.Dg4 Dd8 9.Sc7 Dxc7 10.Dxh4 Lf4 11.Lf3 De5
-+ (-1.74) Tiefe: 18 00:00:10 36798kN
1...Le8 2.Sg4 b4 3.Se3 Da1 4.Dc4 Da5 5.De4 Dc5 6.Sc4 Lb5 7.Lc2 Lxe5 8.Dxh4 Ld4 9.Dg3 Lxc4+ 10.bxc4 Dxc4+ 11.Dd3 Dd5 12.Db3
-+ (-1.92) Tiefe: 19 00:00:23 87418kN
1...Le8 2.Sg4 b4 3.Se3 Da1 4.Dc4 Da5 5.De4 Dc5 6.Sc4 Lb5 7.Lc2 Lxe5 8.Dxh4 Ld4 9.Dg3 Lxc4+ 10.bxc4 Dxc4+ 11.Dd3 Dd5 12.Db3 De5+ 13.Kd1
-+ (-1.92) Tiefe: 20 00:00:32 124mN
1...Le8 2.Sg4 b4 3.Se3 Da1 4.Dc4 Da5 5.De4 Dc5 6.Sc4 Lb5 7.Lc2 Lxe5 8.Dxh4 Lc3 9.Df4 Le5 10.De4 Ld4 11.Da8+ Kg7 12.Dg2 Lxc4+ 13.bxc4 Dxc4+ 14.Kd2
-+ (-1.92) Tiefe: 21 00:00:49 193mN
1...Le8 2.Sg4 b4 3.Se3 Da1 4.Dxh4 Lb5+ 5.Kf3 Lc6+ 6.Ke2 Da6+ 7.Sc4 Lxe5 8.Dg4 Lc3 9.Kf1 Db5 10.Df4 Dd5 11.Dd6+ Dxd6 12.Sxd6 Ke7 13.Sc4 Ld4 14.Ke2 Ld5
-+ (-1.86) Tiefe: 22 00:01:41 406mN
1...f5 2.exf6 e5 3.Dg4 Lb7 4.Sf5 Le4 5.Kf1 Lxf5 6.Df3 Dd3+ 7.Dxd3 Lxd3+ 8.Le2 e4 9.f3 Ld2 10.fxe4 Lxe4 11.Lxb5 Lxg5 12.Ke2 Lf5 13.Ld3 Lxh3 14.Kf3
-+ (-4.82) Tiefe: 22 00:04:34 1073mN
1...f5 2.exf6 e5 3.Dg4 Lb7 4.Sf5 Le4 5.Kf1 Lxf5 6.Df3 Dd3+ 7.Dxd3 Lxd3+ 8.Le2 e4 9.f3 Ld2 10.fxe4 Lxe4 11.Lxb5 Lxg5 12.b4 Lf5 13.Kg2 Le4+ 14.Kf1 Ld2 15.Ke2 Lxb4
-+ (-4.88) Tiefe: 23 00:05:42 1336mN

Ten minutes and one depth earlier, and this is the worst of my MP- trials, I saw it arising even at once, too.
All that on 4x2,5Ghz, 1536 Mb hash.
Thanks a lot for your work and explanation!
All the best for Ancalagon!
Peter.

User avatar
Eelco de Groot
Posts: 4148
Joined: Sun Mar 12, 2006 1:40 am
Location: Groningen

Re: Test Position

Post by Eelco de Groot » Sun Sep 13, 2009 9:00 pm

peter wrote: Ten minutes and one depth earlier, and this is the worst of my MP- trials, I saw it arising even at once, too.
All that on 4x2,5Ghz, 1536 Mb hash.
Thanks a lot for your work and explanation!
All the best for Ancalagon!
Thanks Peter! I don't see the program really as very different from Stockfish or Glaurung yet.

It would be nice if we could improve the program further and Magnus Carlsen could make use of it apart from the obligatory Rybka for his everyday analysis work. Then Apple could be sought as a sponsor for the Magnus brand, and they could make a commercial with the strongest Norvegian chessplayer ever using the strongest Norvegian chessprogram on an Apple iPhone. Picture of Magnus in the train on his way to the next tournament, listening to some songs through the headphones or playing chess with Stockfish on the iPhone, and then getting a call from Kasparov with live video, to tell that he just beat Karpov again. Tord could do a cameo appearance as the train conductor or a violinist on the train, with the sound of the viola blending in with the music Magnus is listening to 8-) The most expensive item in the commercial would maybe be Kasparov's video-call but maybe he would do it for free, if he was in a good mood after the match with Karpov :)

Regards,
Eelco
Debugging is twice as hard as writing the code in the first
place. Therefore, if you write the code as cleverly as possible, you
are, by definition, not smart enough to debug it.
-- Brian W. Kernighan

Post Reply