Test Position 1.Rxe5!

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

Moderator: Ras

yanquis1972
Posts: 1766
Joined: Wed Jun 03, 2009 12:14 am

Re: Test Position 1.Rxe5!

Post by yanquis1972 »

wow - depth 11! i'm guessing rainbow serpent is a 'dynamic' alteration of stockfish?

here's default stockfish 1.6.3 after 25 mins octal analysis, tho ill let it run a bit longer. if there is something wrong with fxg7, it has yet to find it, which suggests DJ may have somewhat stumbled into the solution as i suspected.

[+1.33] d=22 1.fxg7 Qd6 2.c3 Nf5 3.Bh3 Nxg7 4.Bxd7 Qxd7 5.Bxe5 h6 6.Bxg7 Kxg7 7.Qh5 d4 8.Re5 dxc3 9.bxc3 b4 10.axb4 cxb4 11.cxb4 a3 12.Ne4 a2 13.Rf5 Bxe4 14.dxe4 Rc4 15.Qg4 Kh8 (0:23:04) 12929173kN
[+1.45] d=21 1.fxg7 Qd6 2.c3 Nf5 3.Bh3 Nxg7 4.Bxd7 Qxd7 5.Bxe5 h6 6.Qf3 Rc6 7.Qxf7 Qxf7 8.Nxf7 Nf5 9.Nh8 h5 10.Rac1 Rh6 11.d4 c4 12.Kg2 Rf8 13.Re2 Bc6 14.Rce1 Rxh8 15.Bxh8 Kxh8 (0:16:53) 9455429kN
[+1.45] d=20 1.fxg7 f6 2.Nxh7 Kxh7 3.Qh5 Kxg7 4.Bh6 Kh8 5.c3 Nc2 6.Qf7 Nf8 7.Qxf6 Kg8 8.Rxe5 Nh7 9.Qf4 Nxa1 10.Re8 (0:03:53) 2121464kN
[+1.01] d=19 1.fxg7 Qd6 2.Bh3 f6 3.Nf3 Ne6 4.Bh6 Nxg7 5.Nh2 Bc6 6.Bxg7 Kxg7 7.Qh5 Kh8 8.Bf5 Qe7 9.Ng4 Rg8 10.f3 d4 11.Kg2 Qg7 12.Rac1 Rae8 13.c3 dxc3 14.bxc3 (0:01:04) 574514kN
[+0.92] d=18 1.fxg7 Qd6 2.Bh3 f6 3.Nf3 Ne6 4.Bh6 Nxg7 5.d4 Re8 6.dxe5 Nxe5 7.Nxe5 fxe5 8.Bxg7 Kxg7 9.Qg4 Kh8 10.Qd7 Qe7 11.Qxb5 e4 12.Rad1 Rf8 13.Be6 Qxe6 14.Qxb7 Qf5 15.Qxd5 Qxf2 16.Kh1 (0:00:38) 347223kN
[+1.21] d=17 1.fxg7 Qd6 2.Bh3 f6 3.Nf3 Ne6 4.Bh6 Nxg7 5.d4 Re8 6.dxe5 Nxe5 7.Nxe5 Rxe5 8.Qg4 Qe7 9.Rxe5 fxe5 10.Qd7 Qxd7 11.Bxd7 Ra6 12.Bd2 Rb6 (0:00:31) 285689kN
[+0.88] d=16 1.fxg7 Qd6 2.Bd2 Qf6 3.Nxh7 Kxh7 4.Qh5 Kxg7 5.Qg4 Kf8 6.Qxd7 Bc6 (0:00:10) 85724kN
[+1.13] d=15 1.fxg7 Qd6 2.Bd2 f6 3.Nf3 Kxg7 4.Nxd4 cxd4 5.Bh3 Rc7 6.Bf5 Kh8 7.Qh5 Nc5 8.Qh6 Kg8 9.Rad1 Re8 (0:00:07) 56404kN
[+1.21] d=14 1.fxg7 f6 2.Nxh7 Qd6 3.Qg4 exf4 4.Qxd7 Qxd7 5.Nxf6 Kf7 6.Nxd7 Nxc2 7.Nb6 Nxa1 8.Rxa1 fxg3 9.Nxa8 Rxa8 10.Rc1 (0:00:04) 29299kN
[+1.13] d=13 1.fxg7 exf4 2.Re7 Qd6 3.Qh5 Qg6 4.Qxg6 fxg6 5.Rxd7 Bc6 6.Bxd5 Bxd5 7.Rxd5 Nxc2 8.Rc1 Nd4 9.Rcxc5 Rxc5 10.Rxc5 h6 11.Ne4 Rd8 12.Kg2 Ne6 13.Rxb5 Rxd3 (0:00:02) 13240kN
[+0.80] d=12 1.fxg7 exf4 2.Re7 Qd6 3.Qh5 Qg6 4.Qxg6 fxg6 5.Rxd7 Bc6 6.Bxd5 Bxd5 7.Rxd5 fxg3 8.fxg3 Nxc2 9.Rf1 Nd4 10.Ne4 Rc7 11.Nxc5 (0:00:02) 7533kN
[+0.68] d=11 1.fxg7 f6 2.Nxh7 Kxh7 3.Qh5 Kxg7 4.Bh6 Kh7 5.Bh3 Ra6 6.Be3 Kg8 7.Qg4 Kf8 8.Qxd7 Nf3 9.Kf1 Nxe1 10.Bh6 Kg8 11.Rxe1 Qxd7 12.Bxd7 (0:00:01) 3198kN
[+0.36] d=10 1.fxg7 f6 2.Nxh7 Kxh7 3.Qh5 Kxg7 4.Bh6 Kh7 5.Bh3 Ra6 6.Be3 Kg8 7.Qg4 Kf8 8.Bxd4 cxd4 9.Qxd7 Qxd7 10.Bxd7 Rxc2 11.Bxb5 (0:00:01) 2060kN
[+0.36] d=9 1.fxg7 f6 2.Nxh7 Kxh7 3.Qh5 Kxg7 4.Bh6 Kh7 5.Bd2 Kg7 6.Bh3 Rh8 7.Qg4 Kf7 (0:00:01) 900kN
[+0.04] d=8 1.fxg7 exf4 2.Re7 f3 3.Bh3 f5 4.Qe1 Qd6 5.Qe3 Ra6 6.Nf7 Ne2 7.Kh2 (0:00:00) 185kN
[-0.48] d=7 1.fxg7 exf4 2.Re7 (0:00:00) 32kN
[-1.41] d=7 1.Be3 Nxf6 2.Bxd4 cxd4 3.Bh3 Rd8 4.Bf5 (0:00:00) 16kN
[-1.29] d=6 1.Be3 Nxf6 2.Bh3 Nd7 3.Qh5 (0:00:00) 10kN
[-1.49] d=5 1.Be3 Nxf6 2.f4 Re8 3.Bxd4 exd4 (0:00:00) 5kN
[-1.49] d=4 1.Be3 Nxf6 2.Bxd4 cxd4 (0:00:00) 3kN
Terry McCracken
Posts: 16465
Joined: Wed Aug 01, 2007 4:16 am
Location: Canada

Re: Test Position 1.Rxe5!

Post by Terry McCracken »

acase wrote:
yes, i am constantly amazed when such positions pop-up in OTB games. thanks andrew for bringing it to our attention.

Actually John, I should mention that this was a Correspondence game.
Those Eagle-eyed Correspondence players come up with some of the sharpest tactics I have ever seen.

Corr., that says a lot. Depending on the player you could add another 400 elo or more compared to OTB play.

I've little doubt though when Kasparov was at his peak and even now would spot Rxe5 within almost an instant and within minutes work through the whole line with every important variation covered imo.

I saw the first few moves quickly then I had to look longer to see if it were truly winning. Infact I was lazy and let the machine find out the deeper moves so I only get half credit at best. I could easily have missed it of course but then I knew it was there.

Still, nice combination.
Terry McCracken
yanquis1972
Posts: 1766
Joined: Wed Jun 03, 2009 12:14 am

Re: Test Position 1.Rxe5!

Post by yanquis1972 »

topalov is the one who comes immediately to my mind among current players who would almost probably play this; it smells of him quite a bit. anyone else?
User avatar
Eelco de Groot
Posts: 4663
Joined: Sun Mar 12, 2006 2:40 am
Full name:   Eelco de Groot

Re: Test Position 1.Rxe5!

Post by Eelco de Groot »

yanquis1972 wrote:wow - depth 11! i'm guessing rainbow serpent is a 'dynamic' alteration of stockfish?
Hi John,

Yes, correct, sometimes Rainbow Serpent can have some souped up values compared to even Stockfish, but not all that often, because Stockfish also can have large values for some positional characteristics and that I'm trying to correct for, at least that is the idea. Basically I consider the passed pawn values in Stockfish as sometimes just a bit too large, but on the other hand King Safety scoring in Rainbow Serpent can still totally "out-value" this, and that would be the main difference. It is not yet clear if there is some balance with this King Safety in Rainbow Serpent, I just changed the mobility scoring to be like in Ancalagon again, so that changes the whole balance again anyway. I just try not to topple the engine over so much that I can't ever correct it. :)

Also the 11 plies is a bit deceptive, because that is also back to Ancalagon counting at the moment and 11 plies is really 14.5 plies deep, 16 plies would be 16 + 1 + 16/4 = 21 plies. The nodecounts and times are still correct... The reason is that sometimes I would like to go deeper with the null window searches; when the move ordering can be assumed to be pretty good already, why not look deeper for the first few good moves after the PV? A caveman idea! That would be pretty obvious to everybody thinking about it, but the problem is with iterative deepening, for that it is best just to add a single whole ply each time to every rootmove, two plies is sometimes okay but probably not in succession. And adding half plies, or 1½ plies, for every other iteration, but not for all moves? Just not so good....

And especially if the hash is full or at least new entries start to replace old ones, then the deeper null window searches become progressively expensive. These are the less obvious downsides from the very obvious Neanderthal engineer improvement idea, to just look deeper with them cheap null windows :)

Morale: Too many Null-Windows make for a very dark cave! The search becomes too hollow! You need window-sills!

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
yanquis1972
Posts: 1766
Joined: Wed Jun 03, 2009 12:14 am

Re: Test Position 1.Rxe5!

Post by yanquis1972 »

hmm, all i got from that after you started explaining is it "i've pulled a rybka!" :D (of course i know --well assume--it has nothing to do w/ rybka)

btw, here's a snap of my IDeA tree --

Image

i think Rxe5 is definitively the best move, & all engines that fail to see or prefer it are hogwash & should be dumped into the nearest recycling bin. :)
jdart
Posts: 4404
Joined: Fri Mar 10, 2006 5:23 am
Location: http://www.arasanchess.org

Re: Test Position 1.Rxe5!

Post by jdart »

overnight analysis with Rybka 3:

New game
r1r3k1/1bqn1ppp/5P2/1pppp1N1/p2n1B1P/P2P2P1/1PP2PB1/R2QR1K1 w - - 0 1

Analysis by Rybka 3 32-bit:

1. +- (1.74): 1.Rxe5 Nxf6 2.Re8+ Nxe8 3.Bxc7 Rxc7 4.Nf3 Ne6 5.Qd2 h6 6.d4 Nd6 7.dxc5 Rxc5 8.Re1 Ne4 9.Qd3 Re8 10.c3 Rcc8 11.Qxb5 N6c5
2. +/- (1.08): 1.fxg7 Qd6 2.Bh3 f6 3.Nf3 Re8 4.Nxd4 cxd4 5.Bh6 Re7 6.Qf3 Nc5 7.Rac1 Rc7 8.Kh2 Rd8 9.b4

3. +/= (0.35): 1.c3 Nf5 2.fxg7 Nxg7 3.Bd2 f6 4.Nf3 Kh8 5.h5 Rg8 6.d4 Ne6 7.Be3 Rae8 8.Bf1 Bc6 9.Qc2

4. = (0.09): 1.Bxe5 Nxe5 2.Qh5 h6 3.Rxe5 gxf6 4.Qxh6 fxe5 5.Qh7+ Kf8 6.Re1 Ra6 7.c3 f6 8.Qh8+ Ke7 9.Qg7+ Kd8 10.Qf8+ Kd7 11.Bh3+ f5 12.Qf7+ Kc6 13.Qf6+ Qd6 14.Qxd6+ Kxd6 15.cxd4 cxd4 16.Bxf5

(Dart, 05.03.2010)
acase
Posts: 994
Joined: Wed Mar 15, 2006 1:14 am
Location: Columbus, Ohio USA
Full name: Andrew R Case

Re: Test Position 1.Rxe5!

Post by acase »

Here is a little over 3 hours of Rybka 3 analysis on my quad:

New game
r1r3k1/1bqn1ppp/5P2/1pppp1N1/p2n1B1P/P2P2P1/1PP2PB1/R2QR1K1 w - - 0 1

Analysis by Rybka 3:

1.fxg7
=/+ (-0.26 !) Depth: 6 00:00:00 8kN
1.fxg7 f6 2.Nxh7
= (-0.13) Depth: 6 00:00:00 11kN
1.fxg7 f6 2.Nxh7 Kxh7 3.Qh5+ Kxg7
= (0.00) Depth: 7 00:00:00 18kN
1.fxg7 f6 2.Nxh7 Kxh7 3.Qh5+ Kxg7 4.Bh6+ Kh8 5.Bg5+ Kg8 6.Qg6+ Kh8
= (0.00) Depth: 8 00:00:00 52kN
1.fxg7 f6 2.Nxh7 Kxh7 3.Qh5+ Kxg7 4.Bh6+ Kh8 5.Bg5+ Kg8 6.Qg6+ Kh8
= (0.00) Depth: 9 00:00:00 94kN
1.fxg7 f6 2.Nxh7 Kxh7 3.Qh5+ Kg8 4.Bh3 Qc6 5.Rac1 Rd8
= (0.00) Depth: 10 00:00:01 298kN
1.fxg7 f6 2.Nxh7 Kxh7 3.Qh5+ Kg8 4.Bh3 Qc6 5.Be3 Rd8 6.Bxd4
= (0.13) Depth: 11 00:00:02 537kN
1.fxg7 exf4 2.Re7 f3
= (0.21) Depth: 12 00:00:06 1318kN
1.fxg7 exf4 2.Re7 f3 3.Bh3 Bc6 4.Nxf7 Kxg7 5.Ne5+ Kh8 6.Nxc6 Qxc6 7.Rxd7 Rc7 8.Rxc7 Qxc7 9.c3 Ne2+ 10.Kh1 Qg7 11.Qd2 d4
= (0.12) Depth: 13 00:00:09 2152kN
1.fxg7
+/= (0.32 !) Depth: 14 00:00:18 4149kN
1.fxg7
+/= (0.52 !) Depth: 14 00:00:28 6027kN
1.fxg7 Qd6 2.Bd2 f6 3.Nf3 Nxf3+ 4.Qxf3 Kxg7 5.c3 Kh8 6.d4 Qe6 7.Qe2 c4 8.dxe5 fxe5 9.Bf4
+/= (0.57) Depth: 14 00:00:58 12318kN
1.fxg7 Qd6 2.Bd2 f6 3.Nf3 Nxf3+ 4.Qxf3 Kxg7 5.c3 Kh8 6.d4 Qe6 7.Qe2 c4 8.dxe5 fxe5 9.Bf4
+/= (0.57) Depth: 15 00:01:11 14973kN
1.fxg7 Qd6 2.Bd2 f6 3.Nf3 Nxf3+ 4.Qxf3 Kxg7 5.Bh3 Rc7 6.Qh5 Kh8 7.Bf5 Nb6 8.f4 Rg8 9.fxe5 fxe5 10.Kh2 Rf8[]
+/= (0.60) Depth: 16 00:01:46 22370kN
1.fxg7
+/- (0.80 !) Depth: 17 00:03:35 44735kN
1.fxg7
+/- (1.00 !) Depth: 17 00:05:31 67457kN
1.fxg7 Qd6 2.c3 Nf5 3.Bh3 Nxg7 4.Bxd7 Qxd7 5.Bxe5 h6 6.Qf3 Ra6 7.Qxf7+ Qxf7 8.Nxf7 Nf5 9.Nh8 h5 10.d4 Ba8 11.dxc5 Rh6 12.f4 Ng7 13.Bxg7 Kxg7 14.Re7+ Kxh8 15.Rae1 Bc6 16.Kf2
+/- (0.95) Depth: 17 00:06:10 76473kN
1.fxg7 Qd6 2.c3 Nf5 3.Bh3 Nxg7 4.Bxd7 Qxd7 5.Bxe5[] h6 6.Bxg7 Kxg7 7.Qh5 Rf8 8.Re5 Rae8 9.Nf3 f6
+/- (1.00) Depth: 18 00:10:31 134mN
1.fxg7 Qd6 2.c3 Nf5 3.Bh3 Nxg7 4.Bxd7 Qxd7 5.Bxe5[] h6 6.Bxg7 Kxg7 7.Qh5 Rf8 8.Re5 Rae8 9.Nf3 f6
+/- (1.00) Depth: 19 00:16:13 208mN
1.fxg7 Qd6 2.c3 Nf5 3.Bh3 Nxg7 4.Bxd7 Qxd7 5.Bxe5[] h6 6.Bxg7 Kxg7 7.Qh5 Re8 8.Nf3 d4 9.Ne5 Qe6 10.cxd4 cxd4 11.f4 Re7 12.Kh2 Rc8 13.Re2 Kg8 14.Rae1 Rce8 15.f5 Qf6 16.Qg4+
+/- (0.96) Depth: 20 00:30:06 402mN
1.Rxe5
+/- (1.20 !) Depth: 20 00:36:52 508mN
1.Rxe5
+/- (1.40 !) Depth: 20 00:39:41 539mN
1.Rxe5 Nxf6 2.Re8+ Nxe8 3.Bxc7 Rxc7 4.Nf3 Ne6 5.Qd2 h6 6.d4 cxd4 7.Bh3 Nd6 8.Bxe6 fxe6 9.Qf4 Rd8 10.Nxd4 Rf7
+- (1.66) Depth: 20 00:46:08 627mN
1.Rxe5 Nxf6 2.Re8+ Nxe8 3.Bxc7 Rxc7 4.Nf3 Ne6 5.Qd2 h6 6.d4 Nd6 7.dxc5 Rxc5 8.Re1 Ne4 9.Qd3 Re8 10.c3 Rcc8 11.Qxb5 N6c5 12.Nd4 Ba6 13.Qb6 Bc4 14.Bxe4 dxe4 15.Qa7
+- (1.73) Depth: 21 00:53:23 725mN
1.Rxe5 Nxf6 2.Re8+ Nxe8[] 3.Bxc7 Rxc7 4.Nf3 Ne6 5.Qd2 h6 6.d4 Nd6 7.dxc5 Rxc5 8.Re1 Ne4 9.Qd3 Re8 10.c3 Rcc8 11.Qxb5 N6c5 12.Nd4 Ba6 13.Qb6 Bc4 14.Bxe4 dxe4 15.Qa7
+- (1.73) Depth: 22 01:03:57 879mN
1.Rxe5 Nxf6 2.Re8+ Nxe8[] 3.Bxc7[] Rxc7[] 4.Qd2 b4 5.Nf3 bxa3 6.bxa3 Ne6 7.Rb1 h6 8.Ne5 Nd6 9.c3 d4 10.c4 Bxg2 11.Kxg2 Re7 12.Rb6 Nc8 13.Rb5 Nd6
+- (1.88) Depth: 23 01:47:31 1464mN
1.Rxe5 Nxf6 2.Re8+ Nxe8[] 3.Bxc7[] Rxc7[] 4.Qd2 h6 5.Nf3 Ne6 6.d4 cxd4 7.Bh3 Nd6 8.Bxe6 fxe6 9.Qf4 Ra6 10.Nxd4 Rf7 11.Qe5 Bc8 12.Re1 Rb7 13.Qe3 Rf7 14.f4 Ne4 15.Qd3 Rb6 16.Nf3
+- (1.92) Depth: 24 03:04:04 2551mN
User avatar
Eelco de Groot
Posts: 4663
Joined: Sun Mar 12, 2006 2:40 am
Full name:   Eelco de Groot

Re: Test Position 1.Rxe5!

Post by Eelco de Groot »

yanquis1972 wrote:hmm, all i got from that after you started explaining is it "i've pulled a rybka!" :D (of course i know --well assume--it has nothing to do w/ rybka)

btw, here's a snap of my IDeA tree --

Image

i think Rxe5 is definitively the best move, & all engines that fail to see or prefer it are hogwash & should be dumped into the nearest recycling bin. :)
Dumping Stockfish, well maybe that would be a bit too drastic :) I can manage Tic-Tac-Too on my Casio FX-501 P but beyond that my programming capabilies are a bit limited. Thanks for all the analysis John, Jon, Andrew! Was very helpful and working like the carrot dangling in front of the donkey. Not dumping Stockfish, just throwing out some functions now :lol: No longer any need for evaluate_pieces_of_color() that is a superseded concept in 2010, and I never understood those templates from Marco anyway so I just commented it all away. I was a bit afraid the engine would now start to play monopoly instead, like Rybka :lol: but so far this has not happened. Not yet.

First version with evaluate_pieces_of_color() still in but slight difference in exclusion search compared to build 165:

r1r3k1/1bqn1ppp/5P2/1pppp1N1/p2n1B1P/P2P2P1/1PP2PB1/R2QR1K1 w - -

Engine: Rainbow Serpent 1.6.3s(dc) Build 167 (Athlon 2009 MHz, 256 MB)
by Tord Romstad, Marco Costalba, Joona Kiiski Modifications: Dann Corbit

1.00 0:00 -0.52 19.fxg7 (734) 3

2.00 0:00 +0.80 19.fxg7 f6 20.Qh5 fxg5 21.Bxg5 Nxc2 (2.451) 10

3.00 0:00 +0.80 19.fxg7 f6 20.Qh5 fxg5 21.Bxg5 Nxc2 (7.248) 28

4.00 0:00 +1.73 19.fxg7 f6 20.Nxh7 exf4 21.Qh5 fxg3
22.Re7 (40.061) 128

5.00 0:00 +2.14 19.fxg7 f6 20.Nxh7 Kxh7 21.Qh5+ Kxg7
22.Bh6+ Kh7 23.Bf8+ Kg8 (138.645) 261

6.00 0:00 +1.49 19.fxg7 f6 20.Nxh7 Kxh7 21.Qh5+ Kxg7
22.Bh6+ Kh8 23.Bh3 Ra6 24.c3 Ne6
25.Bf8+ Kg8 26.Bxe6+ (350.452) 374

7.01 0:01 +1.49 19.fxg7 f6 20.Nxh7 Kxh7 21.Qh5+ Kxg7
22.Bh6+ Kh8 23.Bh3 Ra6 24.c3 Ne6
25.Bf8+ Kg8 26.Bxe6+ Rxe6 27.Bh6 Kh8
28.Bd2+ Kg8 29.Qg4+ Kf8 30.Qxe6 (713.969) 427

8.01 0:02 +2.14++ 19.fxg7 f6 20.Nxh7 Kxh7 21.Qh5+ Kxg7
22.Bh6+ Kh8 23.Bh3 Ra6 24.c3 Ne6
25.Bf5 (963.787) 450

9.01 0:02 +2.06 19.fxg7 f6 20.Nxh7 Kxh7 21.Qh5+ Kxg7
22.Bh6+ Kh8 23.Bh3 Nf8 24.Bxc8 Rxc8
25.Bxf8+ Qh7 26.Bh6 Nxc2 (1.167.447) 461

10.01 0:13 +1.37 19.fxg7 f6 20.Nxh7 Kxh7 21.Qh5+ Kxg7
22.Bh6+ Kh8 23.Bh3 Nf8 24.c3 Nc2
25.Bg5+ Qh7 26.Bxf6+ Kg8 27.Qg5+ Ng6
28.Be6+ Kf8 29.Qf5 Nxa1 30.Bxe5+ Ke8
31.Rxa1 (7.118.075) 520


10.02 0:16 +1.65 19.Rxe5 Nxe5 20.Qh5 gxf6 21.Qxh7+ Kf8
22.Re1 Re8 23.Kf1 Nxc2 24.Bxe5 fxe5
25.Qh8+ Ke7 26.Rxe5+ Kd7 27.Bh3+ Kc6
28.Rxe8 Rxe8 29.Qxe8+ Kb6 30.Nxf7 Nd4
31.Qf8 (8.593.932) 515

11.01 0:27 +1.37 19.Rxe5 Nxe5 20.Qh5 gxf6 21.Qxh7+ Kf8
22.Re1 Re8 23.Kf1 Re6 24.Nxe6+ Nxe6
25.Bh3 Ke7 26.Qh5 Nxf4 27.gxf4 Bc8
28.Bxc8 Qxc8 29.fxe5 Qh3+ 30.Ke2 fxe5
31.Qxe5+ Qe6 (14.376.571) 523


11.02 0:42 +1.97 19.fxg7 f6 20.Nxh7 Kxh7 21.Qh5+ Kxg7
22.Bh6+ Kh7 23.c3 Ne6 24.Bh3 Ng7
25.Bxg7+ Kxg7 26.Qg4+ Kh7 27.Qxd7+ Kh8
28.Qxb5 Ba6 29.Qd7 Bxd3 30.Qxd5 Rd8 (21.684.600) 515

12.01 1:30 +2.18 19.fxg7 f6 20.Nxh7 Kxh7 21.Qh5+ Kxg7
22.Bh6+ Kh8 23.c3 Nb3 24.Rab1 Qd8
25.Bh3 Qe8 26.Qxe8+ Rxe8 27.Bxd7 Kh7
28.Bxe8 Rxe8 29.Bf4 d4 30.c4 bxc4
31.dxc4 Kg6 (47.499.051) 527

13.01 3:43 +1.93 19.fxg7 f6 20.Nxh7 Kxh7 21.Qh5+ Kxg7
22.Bh6+ Kh8 23.c3 Nb3 24.Qf7 Nf8
25.Qxf6+ Kg8 26.Rxe5 Nh7 27.Qf4 Qf7
28.Rf5 Qc7 29.Qg4+ Kh8 (117.497.297) 525

14.01 11:40 +1.25-- 19.fxg7 exf4 (357.948.287) 510


14.02 12:29 +2.06 19.Rxe5 Nxf6 20.Re8+ Nxe8 21.Bxc7 Rxc7
22.Qd2 Nd6 23.Re1 h6 24.Nf3 Ne6
25.Ne5 Re7 26.c3 Rae8 27.Bh3 d4
28.Kf1 (382.970.256) 511

15.01 15:40 +2.06 19.Rxe5 Nxf6 20.Re8+ Nxe8 21.Bxc7 Rxc7
22.Qd2 Nf6 23.Re1 Rac8 24.Kf1 h6
25.Nf3 Nxf3 26.Bxf3 d4 27.Bxb7 Rxb7
28.Qf4 b4 29.Qf5 Rcc7 30.axb4 cxb4 (486.697.002) 517

16.01 27:24 +2.14 19.Rxe5 Nxe5 20.Qh5 gxf6 21.Qxh7+ Kf8
22.Re1 Re8 23.Qh8+ Ke7 24.Qg7 Kd7
25.Bh3+ Kc6 26.Qxf6+ Qd6 27.Qxd6+ Kxd6
28.Nxf7+ Ke7 29.Nxe5 Nxc2 30.Rc1 Nd4
31.Rxc5 Ne2+ 32.Kf1 (850.826.204) 517

17.01 100:05 +2.02 19.Rxe5 Nxe5 20.Qh5 gxf6 21.Qxh7+ Kf8
22.Re1 Re8 23.Qh8+ Ke7 24.Qg7 Kd7
25.Bh3+ Kc6 26.Qxf6+ Qd6 27.Qxd6+ Kxd6
28.Nxf7+ Ke7 29.Nxe5 Nxc2 30.Rc1 Nd4
31.Rxc5 Ne2+ 32.Kf1 (3.189.067.364) 530


best move: Re1xe5 time: 125:30.937 min n/s: 529.240 nodes: 3.985.680.379

This is not so bad but there is a later fail low of fxg7, which is probably partly because of better evaluation of this move and partly just a random effect. The variations now do go back to the game continuation with 19... Nxe5 which I also see in the later version. So it is not sure that 19... Nxf6 is a better continuation than the more principled accepting of the offered piece, as certainly the correspondence player with the Black pieces will have investigated this I think I like the variations at the end, following the game.

In the second version I have thrown out evaluate_pieces_of_color because I could not evaluate the piece mobility with it in the way I wanted, to evaluate where a white Rook may go I would like to know which squares are attacked by Black's minor pieces which are then more or less off limits to the white Rook, Queens also need to have attack information from enemy Rooks etc. I could not do this with the old function. But maybe I introduced bugs as I see now eval differences that I had not anticipated... but I was glad he engine did not ask for the dice to roll or wanted to build a new hotel on Wall street...


[d]r1r3k1/1bqn1ppp/5P2/1pppp1N1/p2n1B1P/P2P2P1/1PP2PB1/R2QR1K1 w - -

Engine: Rainbow Serpent 1.6.3s(dc) Build 168 (Athlon 2009 MHz, 256 MB)
by Tord Romstad, Marco Costalba, Joona Kiiski Modifications: Dann Corbit

1.00 0:00 -0.88 19.c3 (957) 3

2.00 0:00 +0.40 19.fxg7 f6 20.Qh5 fxg5 21.Bxg5 Nxc2 (3.184) 10

3.00 0:00 +0.40 19.fxg7 f6 20.Qh5 fxg5 21.Bxg5 Nxc2 (8.258) 27

4.00 0:00 +0.40 19.fxg7 f6 20.Qh5 fxg5 21.Bxg5 Nxc2
22.Kh1 (24.132) 70

5.00 0:00 +0.40 19.fxg7 f6 20.Qh5 fxg5 21.Bxg5 Nxc2
22.Kh1 (57.107) 146

5.00 0:00 +0.96 19.Bxe5 Nxe5 20.Qh5 h6 21.Rxe5 hxg5
22.fxg7 Kxg7 23.Rxg5+ Kf8 24.Qh8+ (163.113) 267

6.00 0:00 0.00 19.Bxe5 Nxe5 20.Qh5 h6 21.fxg7 f6
22.Qxh6 Qxg7 (310.825) 349


6.04 0:02 +2.10++ 19.Rxe5 Nxe5 20.Qh5 Ne2+ 21.Qxe2 gxf6
22.Qh5 (1.160.668) 476

7.01 0:02 +0.96 19.Rxe5 Nxe5 20.Qh5 gxf6 21.Qxh7+ Kf8
22.Re1 Ne6 23.Bxe5 fxe5 24.Rxe5 Nxg5
25.Rxg5 Ke7 (1.424.670) 482

8.01 0:07 +1.13 19.Rxe5 Nxe5 20.Qh5 gxf6 21.Qxh7+ Kf8
22.Re1 Re8 23.Qh8+ Ke7 24.Qg7 Kd7
25.Qxf6 Nef3+ 26.Bxf3 Rxe1+ 27.Kg2 Nxf3
28.Bxc7 Nxh4+ 29.gxh4 Kxc7 30.Qxf7+ Kc6
31.Qf6+ Kd7 (3.874.161) 515

9.01 0:14 +3.71++ 19.Rxe5 Nxe5 20.Qh5 gxf6 21.Bxe5 fxe5
22.Qxh7+ Kf8 23.Re1 e4 24.dxe4 Nxc2
25.exd5 Nxe1 26.d6 (7.585.169) 522

10.01 0:16 +1.97 19.Rxe5 Nxe5 20.Qh5 gxf6 21.Bxe5 fxe5
22.Qxh7+ Kf8 23.Re1 e4 24.dxe4 Re8
25.Qh8+ Ke7 26.exd5+ Kd7 27.Bh3+ Ne6
28.Qg7 Kc8 29.dxe6 (8.366.349) 522

11.01 0:39 +1.13 19.Rxe5 Nxe5 20.Qh5 gxf6 21.Qxh7+ Kf8
22.Re1 Re8 23.Qh8+ Ke7 24.Qg7 Kd7
25.Bh3+ Kc6 26.Qxf6+ Qd6 27.Qxd6+ Kxd6
28.Nxf7+ Ke7 29.Nxe5 Nxc2 30.Re2 Nd4
31.Nc6+ Kf7 32.Nxd4 (21.376.571) 537

12.01 1:27 +1.33 19.Rxe5 Nxe5 20.Qh5 gxf6 21.Qxh7+ Kf8
22.Re1 Re8 23.Qh8+ Ke7 24.Qg7 Kd7
25.Bh3+ Kc6 26.Qxf6+ Qd6 27.Qxd6+ Kxd6
28.Nxf7+ Ke7 29.Nxe5 Nxc2 30.Re2 Nd4
31.Nc6+ Kf6 32.Nxd4 (46.477.934) 529

13.01 5:59 +2.02 19.Rxe5 Nxf6 20.Re8+ Nxe8 21.Bxc7 Rxc7
22.Qd2 Nf6 23.Re1 h6 24.Nf3 Ne6
25.Ne5 Nd4 26.c3 Nb3 27.Qf4 Re8
28.Qf5 d4 29.Bxb7 Rxb7 (188.662.864) 524

14.01 9:48 +2.18 19.Rxe5 Nxf6 20.Re8+ Nxe8 21.Bxc7 Rxc7
22.Qd2 h6 23.Nf3 Ne6 24.Re1 d4
25.Ne5 Bxg2 26.Kxg2 Nd6 27.Qd1 Re8
28.Qf3 Rb7 29.h5 (310.738.295) 527

15.01 15:38 +2.02 19.Rxe5 Nxe5 20.Qh5 gxf6 21.Qxh7+ Kf8
22.Re1 Re8 23.Qh8+ Ke7 24.Qg7 Kd7
25.Bh3+ Kc6 26.Qxf6+ Qd6 27.Qxd6+ Kxd6
28.Nxf7+ Ke7 29.Nxe5 Nxc2 30.Rc1 Nd4
31.Rxc5 Ne2+ 32.Kh2 (500.385.587) 533

16.01 20:32 +2.10 19.Rxe5 Nxe5 20.Qh5 gxf6 21.Qxh7+ Kf8
22.Re1 Re8 23.Qh8+ Ke7 24.Qg7 Kd7
25.Bh3+ Kc6 26.Qxf6+ Qd6 27.Qxd6+ Kxd6
28.Nxf7+ Ke7 29.Nxe5 Nxc2 30.Rc1 Nd4
31.Rxc5 Ne2+ 32.Kh2 (657.058.682) 533


best move: Re1xe5 time: 85:23.672 min n/s: 535.189 nodes: 2.742.120.338

Build 168 was thinking for 50 minutes about fxg7 on plydepth 16 so I was afraid the analysis would go wrong after all, but then the engine moved on to the next move 8-) I stopped it here but content with the analysis so far.

Eelco


The separate piece evaluations are now rather simply interleaved for White and Black again but luckily there was almost no change in the Stockfish/Glaurug code from Tord, Marco and Joona necessary to do this, where at first I thought the use of templates and the overlaying evaluate_pieces_of_color <> () function would make this a difficult programming assignment for me and in Ancalagon this caused me to evaluate the piece mobility the way I wanted for only one side, for which I had the necessary information, and the Stockfish way for the other side. Glad I got rid of that asymmetry in the evaluation! Code now look like this, maybe not very elegant but functional:

Code: Select all


    // Evaluate pieces

    // Do not include in mobility squares protected by enemy pawns or occupied by our pieces

   const Bitboard no_mob_area_white = ~(ei.attackedBy[BLACK][PAWN] | pos.pieces_of_color(WHITE));
   const Bitboard no_mob_area_black = ~(ei.attackedBy[WHITE][PAWN] | pos.pieces_of_color(BLACK));

	evaluate_pieces<KNIGHT, WHITE, HasPopCnt>(pos, ei, no_mob_area_white);
	evaluate_pieces<KNIGHT, BLACK, HasPopCnt>(pos, ei, no_mob_area_black);

	evaluate_pieces<BISHOP, WHITE, HasPopCnt>(pos, ei, no_mob_area_white);
	evaluate_pieces<BISHOP, BLACK, HasPopCnt>(pos, ei, no_mob_area_black);

	evaluate_pieces<ROOK,   WHITE, HasPopCnt>(pos, ei, no_mob_area_white);
	evaluate_pieces<ROOK,   BLACK, HasPopCnt>(pos, ei, no_mob_area_black);

	evaluate_pieces<QUEEN,  WHITE, HasPopCnt>(pos, ei, no_mob_area_white);
	evaluate_pieces<QUEEN,  BLACK, HasPopCnt>(pos, ei, no_mob_area_black);


    // Sum up all attacked squares
    ei.attackedBy[WHITE][0] =   ei.attackedBy[WHITE][PAWN]   | ei.attackedBy[WHITE][KNIGHT]
                             | ei.attackedBy[WHITE][BISHOP] | ei.attackedBy[WHITE][ROOK]
                             | ei.attackedBy[WHITE][QUEEN]  | ei.attackedBy[WHITE][KING];

    ei.attackedBy[BLACK][0] =   ei.attackedBy[BLACK][PAWN]   | ei.attackedBy[BLACK][KNIGHT]
                             | ei.attackedBy[BLACK][BISHOP] | ei.attackedBy[BLACK][ROOK]
                             | ei.attackedBy[BLACK][QUEEN]  | ei.attackedBy[BLACK][KING];
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