Is this a bug in Crafty 24.0 or...

Discussion of chess software programming and technical issues.

Moderators: hgm, Rebel, chrisw

Zenmastur
Posts: 919
Joined: Sat May 31, 2014 8:28 am

Is this a bug in Crafty 24.0 or...

Post by Zenmastur »

... a feature?

rq2k2r/3n1ppp/p2bpnb1/8/Np1N4/1B3PP1/PP2Q2P/R1BR2K1 w kq - 1 16

This position is from the 1st WCCC in Stockholm Sweden. The game is between Kaos running on a Univac 1110 and Chess 4.0 running on a CDC 6600 move 16.

Crafty seems to miss the root move Ne6 which wins material.

Seems kind of odd that it would miss something so basic.

The full game is :

[Event "First World Computer Chess Championship"]
[Site "Stockholm 1974"]
[Date "1974.??.??"]
[Round "2"]
[White "CHAOS Univac 1110"]
[Black "Chess 4.0 CDC6600"]
[Result "1-0"]

1. d4 d5 2. c4 dxc4 3. Nf3 Nf6 4. e3 e6 5. Bxc4 c5 6. Qe2 a6 7. O-O b5 8.
Bb3 Bb7 9. Rd1 Nbd7 10. Nc3 Bd6 11. e4 cxd4 12. Nxd4 Qb8 13. g3 b4 14. Na4
Bxe4 15. f3 Bg6 16. Nxe6 fxe6 17. Qxe6+ Be7 18. Re1 Qd8 19. Bf4 Kf8 20.
Rad1 Ra7 21. Rc1 Ng8 22. Rcd1 a5 23. Bd6 Bxd6 24. Qxd6+ Ne7 25. Nc5 Bf5 26.
g4 Qe8 27. Ba4 b3 28. gxf5 bxa2 29. Bxd7 a1=Q 30. Rxa1 Ra6 31. Nxa6 Qd8 32.
Kf2 Kf7 33. Qe6+ Kf8 34. Qxe7+ Qxe7 35. Rxe7 Kxe7 36. Nc5 Rb8 37. Rxa5
Rxb2+ 38. Kg3 g6 39. fxg6 hxg6 40. Ra6 Rc2 41. Re6+ Kf8 42. Re5 Rc1 43. Rg5
Kf7 44. Be6+ Kf6 45. h4 Rxc5 46. Rxc5 Kxe6 47. Rg5 Kf6 48. Kg4 Kf7 49. Rc5
Ke6 50. Kg5 Kd6 51. Ra5 Kc6 52. f4 Kb6 53. Ra1 Kc5 54. Rd1 Kb4 55. Kxg6 Kc3
56. Rd8 Kb4 57. Rc8 Kb5 58. h5 Kb6 59. Rc1 Kb5 60. h6 Ka4 61. Rb1 Ka3 62.
f5 Ka2 63. Rb8 Ka3 64. f6 Ka4 65. Rb7 Ka5 66. Rb8 Ka4 67. Rb1 Ka3 68. Rb7
Ka4 69. Rb8 Ka5 70. Kg7 Ka4 71. Rb7 Ka5 72. Rb2 Ka4 73. Rb8 Ka5 74. Kg8 Ka4
75. h7 Ka5 76. h8=Q Ka4 77. Qh4+ Ka5 78. Qb4+ Ka6 79. Qa4#
1-0

Regards,

Forrest
Only 2 defining forces have ever offered to die for you.....Jesus Christ and the American Soldier. One died for your soul, the other for your freedom.
Vinvin
Posts: 5228
Joined: Thu Mar 09, 2006 9:40 am
Full name: Vincent Lejeune

Re: Is this a bug in Crafty 24.0 or...

Post by Vinvin »

Game with pgn tag :
[pgn]
[Event "First World Computer Chess Championship"]
[Site "Stockholm 1974"]
[Date "1974.??.??"]
[Round "2"]
[White "CHAOS Univac 1110"]
[Black "Chess 4.0 CDC6600"]
[Result "1-0"]

1. d4 d5 2. c4 dxc4 3. Nf3 Nf6 4. e3 e6 5. Bxc4 c5 6. Qe2 a6 7. O-O b5 8.
Bb3 Bb7 9. Rd1 Nbd7 10. Nc3 Bd6 11. e4 cxd4 12. Nxd4 Qb8 13. g3 b4 14. Na4
Bxe4 15. f3 Bg6 16. Nxe6 fxe6 17. Qxe6+ Be7 18. Re1 Qd8 19. Bf4 Kf8 20.
Rad1 Ra7 21. Rc1 Ng8 22. Rcd1 a5 23. Bd6 Bxd6 24. Qxd6+ Ne7 25. Nc5 Bf5 26.
g4 Qe8 27. Ba4 b3 28. gxf5 bxa2 29. Bxd7 a1=Q 30. Rxa1 Ra6 31. Nxa6 Qd8 32.
Kf2 Kf7 33. Qe6+ Kf8 34. Qxe7+ Qxe7 35. Rxe7 Kxe7 36. Nc5 Rb8 37. Rxa5
Rxb2+ 38. Kg3 g6 39. fxg6 hxg6 40. Ra6 Rc2 41. Re6+ Kf8 42. Re5 Rc1 43. Rg5
Kf7 44. Be6+ Kf6 45. h4 Rxc5 46. Rxc5 Kxe6 47. Rg5 Kf6 48. Kg4 Kf7 49. Rc5
Ke6 50. Kg5 Kd6 51. Ra5 Kc6 52. f4 Kb6 53. Ra1 Kc5 54. Rd1 Kb4 55. Kxg6 Kc3
56. Rd8 Kb4 57. Rc8 Kb5 58. h5 Kb6 59. Rc1 Kb5 60. h6 Ka4 61. Rb1 Ka3 62.
f5 Ka2 63. Rb8 Ka3 64. f6 Ka4 65. Rb7 Ka5 66. Rb8 Ka4 67. Rb1 Ka3 68. Rb7
Ka4 69. Rb8 Ka5 70. Kg7 Ka4 71. Rb7 Ka5 72. Rb2 Ka4 73. Rb8 Ka5 74. Kg8 Ka4
75. h7 Ka5 76. h8=Q Ka4 77. Qh4+ Ka5 78. Qb4+ Ka6 79. Qa4#
1-0
[/pgn]
Vinvin
Posts: 5228
Joined: Thu Mar 09, 2006 9:40 am
Full name: Vincent Lejeune

Re: Is this a bug in Crafty 24.0 or...

Post by Vinvin »

Crafty doesn't like to sacrifice material but give it more time it will find Nxe6!
Zenmastur wrote:... a feature?

rq2k2r/3n1ppp/p2bpnb1/8/Np1N4/1B3PP1/PP2Q2P/R1BR2K1 w kq - 1 16

This position is from the 1st WCCC in Stockholm Sweden. The game is between Kaos running on a Univac 1110 and Chess 4.0 running on a CDC 6600 move 16.

Crafty seems to miss the root move Ne6 which wins material.

Seems kind of odd that it would miss something so basic.

The full game is :

[Event "First World Computer Chess Championship"]
[Site "Stockholm 1974"]
[Date "1974.??.??"]
[Round "2"]
[White "CHAOS Univac 1110"]
[Black "Chess 4.0 CDC6600"]
[Result "1-0"]

1. d4 d5 2. c4 dxc4 3. Nf3 Nf6 4. e3 e6 5. Bxc4 c5 6. Qe2 a6 7. O-O b5 8.
Bb3 Bb7 9. Rd1 Nbd7 10. Nc3 Bd6 11. e4 cxd4 12. Nxd4 Qb8 13. g3 b4 14. Na4
Bxe4 15. f3 Bg6 16. Nxe6 fxe6 17. Qxe6+ Be7 18. Re1 Qd8 19. Bf4 Kf8 20.
Rad1 Ra7 21. Rc1 Ng8 22. Rcd1 a5 23. Bd6 Bxd6 24. Qxd6+ Ne7 25. Nc5 Bf5 26.
g4 Qe8 27. Ba4 b3 28. gxf5 bxa2 29. Bxd7 a1=Q 30. Rxa1 Ra6 31. Nxa6 Qd8 32.
Kf2 Kf7 33. Qe6+ Kf8 34. Qxe7+ Qxe7 35. Rxe7 Kxe7 36. Nc5 Rb8 37. Rxa5
Rxb2+ 38. Kg3 g6 39. fxg6 hxg6 40. Ra6 Rc2 41. Re6+ Kf8 42. Re5 Rc1 43. Rg5
Kf7 44. Be6+ Kf6 45. h4 Rxc5 46. Rxc5 Kxe6 47. Rg5 Kf6 48. Kg4 Kf7 49. Rc5
Ke6 50. Kg5 Kd6 51. Ra5 Kc6 52. f4 Kb6 53. Ra1 Kc5 54. Rd1 Kb4 55. Kxg6 Kc3
56. Rd8 Kb4 57. Rc8 Kb5 58. h5 Kb6 59. Rc1 Kb5 60. h6 Ka4 61. Rb1 Ka3 62.
f5 Ka2 63. Rb8 Ka3 64. f6 Ka4 65. Rb7 Ka5 66. Rb8 Ka4 67. Rb1 Ka3 68. Rb7
Ka4 69. Rb8 Ka5 70. Kg7 Ka4 71. Rb7 Ka5 72. Rb2 Ka4 73. Rb8 Ka5 74. Kg8 Ka4
75. h7 Ka5 76. h8=Q Ka4 77. Qh4+ Ka5 78. Qb4+ Ka6 79. Qa4#
1-0

Regards,

Forrest
Maarten Claessens
Posts: 106
Joined: Mon May 12, 2014 10:08 am
Location: Near Nijmegen

Re: Is this a bug in Crafty 24.0 or...

Post by Maarten Claessens »

Vinvin wrote:Crafty doesn't like to sacrifice material but give it more time it will find Nxe6!
Crafty really doesn't like to sac! It finds Nxe6 at ply 26 using 21,380,310,277 nodes (on 1 core):

Code: Select all

FEN: rq2k2r/3n1ppp/p2bpnb1/8/Np1N4/1B3PP1/PP2Q2P/R1BR2K1 w kq - 1 16 

Crafty-24.0-x64-sse42:
  10	00:00	     206,071	4,121,420	+0.25	1. Bxe6 O-O 2. Bxd7 Nxd7 3. Nc6 Qc7 4. Ne7+ Kh8 5. Nxg6+ fxg6 6. Be3
  10	00:00	     235,722	4,714,440	+0.25	1. Bxe6 O-O 2. Bxd7 Nxd7 3. Nc6 Qc7 4. Ne7+ Kh8 5. Nxg6+ fxg6 6. Be3
  11	00:00	     356,800	5,946,666	+0.23	1. Bxe6 O-O 2. Bb3 Rc8 3. Be3 Ne5 4. Rac1 Rxc1 5. Rxc1 Bd3 6. Qf2
  11	00:00	     424,398	5,304,975	+0.23	1. Bxe6 O-O 2. Bb3 Rc8 3. Be3 Ne5 4. Rac1 Rxc1 5. Rxc1 Bd3 6. Qf2

...

  25	16:35	6,062,945,360	6,088,028	+0.49	1. Be3 Bc7 2. Rac1 O-O 3. Nc6 Qb5 4. Qxb5 axb5 5. Nc5 Ne5 6. Ne7+ Kh8 7. Nxe6 fxe6 8. Nxg6+ hxg6 9. Rxc7 Nxf3+ 10. Kg2 Nd5 11. Bxd5 exd5 12. Bf4 Rxa2 13. Kxf3 g5 14. Rxd5 gxf4
  25	19:53	7,261,913,654	6,083,533	+0.49	1. Be3 Bc7 2. Rac1 O-O 3. Nc6 Qb5 4. Qxb5 axb5 5. Nc5 Ne5 6. Ne7+ Kh8 7. Nxe6 fxe6 8. Nxg6+ hxg6 9. Rxc7 Nxf3+ 10. Kg2 Nd5 11. Bxd5 exd5 12. Bf4 Rxa2 13. Kxf3 g5 14. Rxd5 gxf4
  26	29:17	10,719,612,336	6,100,949	+0.30	1. Be3 Bc7 2. Rac1 O-O 3. Nc6 Qb5 4. Qxb5 axb5 5. Nc5 Ne5 6. Ne7+ Kh8 7. Nxe6 fxe6 8. Nxg6+ hxg6 9. Rxc7 Nxf3+ 10. Kg2 Nd5 11. Bxd5 exd5 12. Bf4 Nh4+ 13. Kh3 Nf3 14. Bd6 Rfe8
  26	34:25	12,546,678,802	6,073,344	+0.31	1. Bg5!
  26	37:42	13,710,268,251	6,060,081	+0.47	1. Bg5!
  26	48:02	17,481,556,423	6,063,857	+0.50	1. Bg5 Be5 2. Bxf6 gxf6 3. f4 Qa7 4. Qf2 Bxd4 5. Rxd4 Rb8 6. Rad1 Rb7 7. Rd6 Ke7 8. R1d2 Qxf2+ 9. Kxf2 Nb8 10. Nb6 a5 11. Nc4 Rb5 12. h3 Be4 13. g4 Bd5
  26	59:07	21,380,310,277	6,026,646	+0.51	1. Nxe6!
  26	1:13:22	26,327,460,390	5,980,645	+1.63	1. Nxe6!
  26	1:50:39	39,270,192,872	5,914,800	+2.76	1. Nxe6 Ne5 2. Nxg7+ Kf8 3. Bh6 Kg8 4. Kh1 Bf8 5. Bf4 Bxg7 6. Bxe5 Qb5 7. Qxb5 axb5 8. Nb6 Re8 9. Bd6 Bf8 10. Bxf8 Kxf8 11. Rd4 Kg7 12. Rxb4 Re5 13. Rd1 Rhe8 14. Rbd4
  26	1:51:49	39,698,926,882	5,917,052	+2.76	1. Nxe6 Ne5 2. Nxg7+ Kf8 3. Bh6 Kg8 4. Kh1 Bf8 5. Bf4 Bxg7 6. Bxe5 Qb5 7. Qxb5 axb5 8. Nb6 Re8 9. Bd6 Bf8 10. Bxf8 Kxf8 11. Rd4 Kg7 12. Rxb4 Re5 13. Rd1 Rhe8 14. Rbd4
zullil
Posts: 6442
Joined: Tue Jan 09, 2007 12:31 am
Location: PA USA
Full name: Louis Zulli

Re: Is this a bug in Crafty 24.0 or...

Post by zullil »

Zenmastur wrote:... a feature?

[D]rq2k2r/3n1ppp/p2bpnb1/8/Np1N4/1B3PP1/PP2Q2P/R1BR2K1 w kq - 1 16
Crafty finds the move:

Code: Select all

Crafty v24.0 (16 cpus)

White(1): hash 3072M
Warning--  xboard 'memory' option disabled
hash table memory = 2048M bytes (128M entries).
White(1): hashp 256M
Warning--  xboard 'memory' option disabled
pawn hash table memory = 256M bytes (8M entries).
White(1): setboard rq2k2r/3n1ppp/p2bpnb1/8/Np1N4/1B3PP1/PP2Q2P/R1BR2K1 w kq - 1 16

       +---+---+---+---+---+---+---+---+
    8  |<R>|<Q>|   | . |<K>| . |   |<R>|
       +---+---+---+---+---+---+---+---+
    7  | . |   | . |<N>| . |<P>|<P>|<P>|
       +---+---+---+---+---+---+---+---+
    6  |<P>| . |   |<B>|<P>|<N>|<B>| . |
       +---+---+---+---+---+---+---+---+
    5  | . |   | . |   | . |   | . |   |
       +---+---+---+---+---+---+---+---+
    4  |-N-|<P>|   |-N-|   | . |   | . |
       +---+---+---+---+---+---+---+---+
    3  | . |-B-| . |   | . |-P-|-P-|   |
       +---+---+---+---+---+---+---+---+
    2  |-P-|-P-|   | . |-Q-| . |   |-P-|
       +---+---+---+---+---+---+---+---+
    1  |-R-|   |-B-|-R-| . |   |-K-|   |
       +---+---+---+---+---+---+---+---+
         a   b   c   d   e   f   g   h

White&#40;1&#41;&#58; st 300
search time set to 300.00.
White&#40;1&#41;&#58; go
        time surplus   0.00  time limit 5&#58;00 (+0.00&#41; &#40;5&#58;00&#41;
        depth     time       score   variation &#40;1&#41;
starting thread 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <done>
         10->   0.09/5&#58;00     0.25   1. Bxe6 O-O 2. Bxd7 Nxd7 3. Nc6 Qc7 4.
                                     Ne7+ Kh8 5. Nxg6+ fxg6 6. Be3
         11     0.10/5&#58;00     0.23   1. Bxe6 O-O 2. Bb3 Rc8 3. Be3 Ne5 4. Rac1
                                     Rxc1 5. Rxc1 Bd3 6. Qf2
         11->   0.11/5&#58;00     0.23   1. Bxe6 O-O 2. Bb3 Rc8 3. Be3 Ne5 4. Rac1
                                     Rxc1 5. Rxc1 Bd3 6. Qf2
         12     0.12/5&#58;00     0.24   1. Bxe6 O-O 2. Bb3 Rc8 3. Be3 Kh8 4. Rac1
                                     Qb7 5. Bc2 Bxc2 6. Rxc2 Ne5
         12->   0.12/5&#58;00     0.24   1. Bxe6 O-O 2. Bb3 Rc8 3. Be3 Kh8 4. Rac1
                                     Qb7 5. Bc2 Bxc2 6. Rxc2 Ne5
         13     0.15/5&#58;00     0.09   1. Bxe6 O-O 2. Bb3 Kh8 3. Be3 Rc8 4. Rac1
                                     Qb7 5. Nf5 Rxc1 6. Bxc1 Be5 7. f4
         13->   0.20/5&#58;00     0.09   1. Bxe6 O-O 2. Bb3 Kh8 3. Be3 Rc8 4. Rac1
                                     Qb7 5. Nf5 Rxc1 6. Bxc1 Be5 7. f4
         14     0.22/5&#58;00       ++   1. Bxe6! (>+0.25&#41;                  
         14     0.24/5&#58;00     0.20   1. Bxe6 O-O 2. Bb3 Re8 3. Be3 Bxg3 4. hxg3
                                     Qxg3+ 5. Kf1 Qh3+ 6. Kf2 Qh2+ 7. Ke1 Qh5
                                     8. Rac1 Qh4+ 9. Kf1 Qh1+ 10. Kf2
         14->   0.25/5&#58;00     0.20   1. Bxe6 O-O 2. Bb3 Re8 3. Be3 Bxg3 4. hxg3
                                     Qxg3+ 5. Kf1 Qh3+ 6. Kf2 Qh2+ 7. Ke1 Qh5
                                     8. Rac1 Qh4+ 9. Kf1 Qh1+ 10. Kf2
         15     0.30/5&#58;00     0.20   1. Bxe6 O-O 2. Bb3 Re8 3. Be3 Bxg3 4. hxg3
                                     Qxg3+ 5. Kf1 Qh3+ 6. Kf2 Qh2+ 7. Ke1 Qh5
                                     8. Rac1 Qh4+ 9. Kf1 Qh1+ 10. Kf2 Qh2+ 11.
                                     Kf1 Qh1+ 12. Kf2
         15->   0.32/5&#58;00     0.20   1. Bxe6 O-O 2. Bb3 Re8 3. Be3 Bxg3 4. hxg3
                                     Qxg3+ 5. Kf1 Qh3+ 6. Kf2 Qh2+ 7. Ke1 Qh5
                                     8. Rac1 Qh4+ 9. Kf1 Qh1+ 10. Kf2 Qh2+ 11.
                                     Kf1 Qh1+ 12. Kf2
         16     0.44/5&#58;00     0.34   1. Bxe6 O-O 2. Bxd7 Nxd7 3. Nc6 Qc7 4.
                                     Ne7+ Kh8 5. Nxg6+ fxg6 6. Be3 Ne5 7. f4
                                     Qc4 8. Qxc4 Nxc4 9. Nc5
         16->   0.48/5&#58;00     0.34   1. Bxe6 O-O 2. Bxd7 Nxd7 3. Nc6 Qc7 4.
                                     Ne7+ Kh8 5. Nxg6+ fxg6 6. Be3 Ne5 7. f4
                                     Qc4 8. Qxc4 Nxc4 9. Nc5
         17     0.90/5&#58;00     0.39   1. Bxe6 Ne5 2. Bf5 O-O 3. Bg5 Re8 4. Rac1
                                     Qa7 5. Kf1 Ned7 6. Qd3 Qb7 7. Bxg6 hxg6
                                     8. Nc6 Re6 9. Be3
         17->   0.98/5&#58;00     0.39   1. Bxe6 Ne5 2. Bf5 O-O 3. Bg5 Re8 4. Rac1
                                     Qa7 5. Kf1 Ned7 6. Qd3 Qb7 7. Bxg6 hxg6
                                     8. Nc6 Re6 9. Be3
         18     1.35/5&#58;00       --   1. Bxe6? (<+0.23&#41;                  
         18     1.42/5&#58;00       --   1. Bxe6? (<+0.07&#41;                  
         18     1.76/5&#58;00    -0.10   1. Bxe6 O-O 2. Bxd7 Nxd7 3. Nc6 Qc7 4.
                                     Ne7+ Bxe7 5. Qxe7 Rad8 6. Bg5 Qa5 7. Rxd7
                                     Rxd7 8. Qxd7 Qxg5 9. Re1 Bf5 10. Qe7
         18     2.28/5&#58;00       ++   1. Bg5! (>-0.09&#41;                  
         18     2.78/5&#58;00       ++   1. Bg5! (>+0.07&#41;                  
         18     2.97/5&#58;00       ++   1. Bg5! (>+0.39&#41;                  
         18     3.62/5&#58;00     0.40   1. Bg5 Be7 2. Bf4 e5 3. Rac1 Be4 4. Bxe5
                                     Nxe5 5. fxe4 O-O 6. Bd5 Nxd5 7. exd5 Bg5
                                     8. Nc6 Nxc6 9. Rxc6 Re8
         18->   3.62/5&#58;00     0.40   1. Bg5 Be7 2. Bf4 e5 3. Rac1 Be4 4. Bxe5
                                     Nxe5 5. fxe4 O-O 6. Bd5 Nxd5 7. exd5 Bg5
                                     8. Nc6 Nxc6 9. Rxc6 Re8 &#40;s=2&#41;
         19     4.64/5&#58;00       --   1. Bg5? (<+0.24&#41;                  
         19     5.03/5&#58;00     0.33   1. Bg5 Be5 2. Bxf6 gxf6 3. Rac1 Qa7 4.
                                     Rc4 Bc7 5. Rxb4 O-O 6. Kh1 Ne5 7. Nc3 Ba5
                                     8. Ra4 Bxc3 9. bxc3 Rfd8 10. Rb4
         19->   5.41/5&#58;00     0.33   1. Bg5 Be5 2. Bxf6 gxf6 3. Rac1 Qa7 4.
                                     Rc4 Bc7 5. Rxb4 O-O 6. Kh1 Ne5 7. Nc3 Ba5
                                     8. Ra4 Bxc3 9. bxc3 Rfd8 10. Rb4 &#40;s=2&#41;
         20     6.09/5&#58;00     0.36   1. Bg5 Be5 2. Bxf6 gxf6 3. Rac1 Qa7 4.
                                     Rc4 O-O 5. Kg2 Nb8 6. f4 Bxd4 7. Rcxd4
                                     Qb7+ 8. Kf2 Rc8 9. Rd8+ Kg7 10. Rxc8 Qxc8
                                     11. Nb6 Qc5+ 12. Qe3
         20->   6.56/5&#58;00     0.36   1. Bg5 Be5 2. Bxf6 gxf6 3. Rac1 Qa7 4.
                                     Rc4 O-O 5. Kg2 Nb8 6. f4 Bxd4 7. Rcxd4
                                     Qb7+ 8. Kf2 Rc8 9. Rd8+ Kg7 10. Rxc8 Qxc8
                                     11. Nb6 Qc5+ 12. Qe3 &#40;s=2&#41;
         21     7.66/5&#58;00     0.25   1. Bg5 Be5 2. Bxf6 gxf6 3. Rac1 Qa7 4.
                                     Rc4 O-O 5. Kg2 Nb8 6. Rxb4 Rd8 7. Qf2 a5
                                     8. Rc4 Na6 9. Nc3 Rac8 10. Rxc8 Rxc8 11.
                                     Ne4
         21->   8.73/5&#58;00     0.25   1. Bg5 Be5 2. Bxf6 gxf6 3. Rac1 Qa7 4.
                                     Rc4 O-O 5. Kg2 Nb8 6. Rxb4 Rd8 7. Qf2 a5
                                     8. Rc4 Na6 9. Nc3 Rac8 10. Rxc8 Rxc8 11.
                                     Ne4
         22    11.95/5&#58;00       ++   1. Bg5! (>+0.41&#41;                  
         22    12.67/5&#58;00     0.40   1. Bg5 Be5 2. Bxf6 gxf6 3. Rac1 Qa7 4.
                                     Rc4 O-O 5. Kg2 Bxd4 6. Rcxd4 Nc5 7. Rxb4
                                     a5 8. Rb5 Nxb3 9. Rxb3 Rac8 10. Rc3 Rfd8
                                     11. Rxc8 Rxc8
         22->  14.30/5&#58;00     0.40   1. Bg5 Be5 2. Bxf6 gxf6 3. Rac1 Qa7 4.
                                     Rc4 O-O 5. Kg2 Bxd4 6. Rcxd4 Nc5 7. Rxb4
                                     a5 8. Rb5 Nxb3 9. Rxb3 Rac8 10. Rc3 Rfd8
                                     11. Rxc8 Rxc8
         23    17.81/5&#58;00     0.40   1. Bg5 Be5 2. Bxf6 gxf6 3. Rac1 Qa7 4.
                                     Rc4 O-O 5. Kg2 Bxd4 6. Rcxd4 Nc5 7. Rxb4
                                     a5 8. Rb5 Nxb3 9. Rxb3 Rfd8 10. Rc3 Rab8
                                     11. b3 Rxd1 12. Qxd1
         23->  20.61/5&#58;00     0.40   1. Bg5 Be5 2. Bxf6 gxf6 3. Rac1 Qa7 4.
                                     Rc4 O-O 5. Kg2 Bxd4 6. Rcxd4 Nc5 7. Rxb4
                                     a5 8. Rb5 Nxb3 9. Rxb3 Rfd8 10. Rc3 Rab8
                                     11. b3 Rxd1 12. Qxd1
         24    27.44/5&#58;00       ++   1. Bg5! (>+0.56&#41;                  
         24    32.35/5&#58;00       --   1. Bg5? (<+0.24&#41;                  
         24    33.64/5&#58;00     0.38   1. Bg5 Be5 2. Bxf6 gxf6 3. Rac1 Qa7 4.
                                     Rc4 Bxd4+ 5. Rcxd4 Ne5 6. Kf1 Qb7 7. Kg2
                                     Qb5 8. Qxb5+ axb5 9. Nc5 Nc6 10. Rf4 Bf5
                                     11. Nd7 O-O-O 12. Nxf6 Rxd1 13. Bxd1
         24    46.30/5&#58;00       ++   1. Be3! (>+0.39&#41;                  
         24     1&#58;12/5&#58;00       ++   1. Be3! (>+0.55&#41;                  
         24     1&#58;35/5&#58;00     0.43   1. Be3 Bc7 2. Rac1 O-O 3. Nc6 Qb5 4. Qxb5
                                     axb5 5. Nc5 Ne5 6. Ne7+ Kh8 7. Nxe6 fxe6
                                     8. Nxg6+ hxg6 9. Rxc7 Nxf3+ 10. Kg2 Nd5
                                     11. Bxd5 exd5 12. Bf4 Nh4+ 13. Kh3 Nf3
         24->   1&#58;35/5&#58;00     0.43   1. Be3 Bc7 2. Rac1 O-O 3. Nc6 Qb5 4. Qxb5
                                     axb5 5. Nc5 Ne5 6. Ne7+ Kh8 7. Nxe6 fxe6
                                     8. Nxg6+ hxg6 9. Rxc7 Nxf3+ 10. Kg2 Nd5
                                     11. Bxd5 exd5 12. Bf4 Nh4+ 13. Kh3 Nf3
                                     &#40;s=2&#41;
         25     1&#58;53/5&#58;00     0.36   1. Be3 Bc7 2. Rac1 O-O 3. Nc6 Qb5 4. Kf2
                                     Kh8 5. Nxb4 Rfc8 6. Nc6 Qh5 7. Kf1 Ne5
                                     8. Nxe5 Bxe5 9. Rxc8+ Rxc8 10. Kg1 Be4
                                     11. g4 Bxf3 12. Qxf3 Bxh2+ 13. Kh1 Nxg4
         25     2&#58;33/5&#58;00       ++   1. Nxe6! (>+0.37&#41;                  
         25     2&#58;40/5&#58;00       ++   1. Nxe6! (>+0.53&#41;                  
         25     2&#58;50/5&#58;00       ++   1. Nxe6! (>+0.85&#41;                  
         25     3&#58;12/5&#58;00       ++   1. Nxe6! (>+1.49&#41;                  
         25     3&#58;50/5&#58;00     2.20   1. Nxe6 fxe6 2. Qxe6+ Be7 3. Bf4 Qa7+ 4.
                                     Kg2 Qb7 5. Bd6 Nf8 6. Qe2 Bh5 7. Nc5 Qxf3+
                                     8. Qxf3 Bxf3+ 9. Kxf3 Ng6 10. Bxe7 Kxe7
                                     11. Re1+ Kd6 12. Nxa6 Ne5+ 13. Kg2 Rxa6
                                     14. Rad1+ Kc6 15. Rxe5 Rc8
         25->   3&#58;50/5&#58;00     2.20   1. Nxe6 fxe6 2. Qxe6+ Be7 3. Bf4 Qa7+ 4.
                                     Kg2 Qb7 5. Bd6 Nf8 6. Qe2 Bh5 7. Nc5 Qxf3+
                                     8. Qxf3 Bxf3+ 9. Kxf3 Ng6 10. Bxe7 Kxe7
                                     11. Re1+ Kd6 12. Nxa6 Ne5+ 13. Kg2 Rxa6
                                     14. Rad1+ Kc6 15. Rxe5 Rc8 &#40;s=3&#41;
         26     4&#58;27/5&#58;00       ++   1. Nxe6! (>+2.36&#41;                  
         26     4&#58;56/5&#58;00       ++   1. Nxe6! (>+2.52&#41;                  
        time=5&#58;02&#40;92%)  n=17254394846  fh1=89%  50move=0  nps=57.6M
        ext=262.2M  red=733.6M  pruned=2.8B  qchks=605.2M  pred=0
        splits=595.5K  aborts=84.1K  data=5%  probes=0  hits=0
White&#40;1&#41;&#58; Nxe6
              time used&#58;   5&#58;02

       +---+---+---+---+---+---+---+---+
    8  |<R>|<Q>|   | . |<K>| . |   |<R>|
       +---+---+---+---+---+---+---+---+
    7  | . |   | . |<N>| . |<P>|<P>|<P>|
       +---+---+---+---+---+---+---+---+
    6  |<P>| . |   |<B>|-N-|<N>|<B>| . |
       +---+---+---+---+---+---+---+---+
    5  | . |   | . |   | . |   | . |   |
       +---+---+---+---+---+---+---+---+
    4  |-N-|<P>|   | . |   | . |   | . |
       +---+---+---+---+---+---+---+---+
    3  | . |-B-| . |   | . |-P-|-P-|   |
       +---+---+---+---+---+---+---+---+
    2  |-P-|-P-|   | . |-Q-| . |   |-P-|
       +---+---+---+---+---+---+---+---+
    1  |-R-|   |-B-|-R-| . |   |-K-|   |
       +---+---+---+---+---+---+---+---+
         a   b   c   d   e   f   g   h
bob
Posts: 20943
Joined: Mon Feb 27, 2006 7:30 pm
Location: Birmingham, AL

Re: Is this a bug in Crafty 24.0 or...

Post by bob »

Zenmastur wrote:... a feature?

rq2k2r/3n1ppp/p2bpnb1/8/Np1N4/1B3PP1/PP2Q2P/R1BR2K1 w kq - 1 16

This position is from the 1st WCCC in Stockholm Sweden. The game is between Kaos running on a Univac 1110 and Chess 4.0 running on a CDC 6600 move 16.

Crafty seems to miss the root move Ne6 which wins material.

Seems kind of odd that it would miss something so basic.

The full game is :

[Event "First World Computer Chess Championship"]
[Site "Stockholm 1974"]
[Date "1974.??.??"]
[Round "2"]
[White "CHAOS Univac 1110"]
[Black "Chess 4.0 CDC6600"]
[Result "1-0"]

1. d4 d5 2. c4 dxc4 3. Nf3 Nf6 4. e3 e6 5. Bxc4 c5 6. Qe2 a6 7. O-O b5 8.
Bb3 Bb7 9. Rd1 Nbd7 10. Nc3 Bd6 11. e4 cxd4 12. Nxd4 Qb8 13. g3 b4 14. Na4
Bxe4 15. f3 Bg6 16. Nxe6 fxe6 17. Qxe6+ Be7 18. Re1 Qd8 19. Bf4 Kf8 20.
Rad1 Ra7 21. Rc1 Ng8 22. Rcd1 a5 23. Bd6 Bxd6 24. Qxd6+ Ne7 25. Nc5 Bf5 26.
g4 Qe8 27. Ba4 b3 28. gxf5 bxa2 29. Bxd7 a1=Q 30. Rxa1 Ra6 31. Nxa6 Qd8 32.
Kf2 Kf7 33. Qe6+ Kf8 34. Qxe7+ Qxe7 35. Rxe7 Kxe7 36. Nc5 Rb8 37. Rxa5
Rxb2+ 38. Kg3 g6 39. fxg6 hxg6 40. Ra6 Rc2 41. Re6+ Kf8 42. Re5 Rc1 43. Rg5
Kf7 44. Be6+ Kf6 45. h4 Rxc5 46. Rxc5 Kxe6 47. Rg5 Kf6 48. Kg4 Kf7 49. Rc5
Ke6 50. Kg5 Kd6 51. Ra5 Kc6 52. f4 Kb6 53. Ra1 Kc5 54. Rd1 Kb4 55. Kxg6 Kc3
56. Rd8 Kb4 57. Rc8 Kb5 58. h5 Kb6 59. Rc1 Kb5 60. h6 Ka4 61. Rb1 Ka3 62.
f5 Ka2 63. Rb8 Ka3 64. f6 Ka4 65. Rb7 Ka5 66. Rb8 Ka4 67. Rb1 Ka3 68. Rb7
Ka4 69. Rb8 Ka5 70. Kg7 Ka4 71. Rb7 Ka5 72. Rb2 Ka4 73. Rb8 Ka5 74. Kg8 Ka4
75. h7 Ka5 76. h8=Q Ka4 77. Qh4+ Ka5 78. Qb4+ Ka6 79. Qa4#
1-0

Regards,

Forrest
It depends on how you define "bug". In this case, the move is really a positional sacrifice until you get DEEPLY into the search. Chaos made that move on positional grounds, it did not see anything tactically winning, it just evaluated the straight-jacket Black's king is in as sufficient compensation for the material that is lost.

Crafty should find this soon enough. Also I would be surprised if older versions behave significantly different here.
Zenmastur
Posts: 919
Joined: Sat May 31, 2014 8:28 am

Re: Is this a bug in Crafty 24.0 or...

Post by Zenmastur »

zullil wrote:
Crafty finds the move:

Code: Select all

Crafty v24.0 &#40;16 cpus&#41;

White&#40;1&#41;&#58; hash 3072M
Warning--  xboard 'memory' option disabled
hash table memory = 2048M bytes &#40;128M entries&#41;.
White&#40;1&#41;&#58; hashp 256M
Warning--  xboard 'memory' option disabled
pawn hash table memory = 256M bytes &#40;8M entries&#41;.
White&#40;1&#41;&#58; setboard rq2k2r/3n1ppp/p2bpnb1/8/Np1N4/1B3PP1/PP2Q2P/R1BR2K1 w kq - 1 16

White&#40;1&#41;&#58; st 300
search time set to 300.00.
White&#40;1&#41;&#58; go
        time surplus   0.00  time limit 5&#58;00 (+0.00&#41; &#40;5&#58;00&#41;
        depth     time       score   variation &#40;1&#41;
starting thread 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <done>
         10->   0.09/5&#58;00     0.25   1. Bxe6 O-O 2. Bxd7 Nxd7 3. Nc6 Qc7 4.
                                     Ne7+ Kh8 5. Nxg6+ fxg6 6. Be3
.
.
.
         24->   1&#58;35/5&#58;00     0.43   1. Be3 Bc7 2. Rac1 O-O 3. Nc6 Qb5 4. Qxb5
                                     axb5 5. Nc5 Ne5 6. Ne7+ Kh8 7. Nxe6 fxe6
                                     8. Nxg6+ hxg6 9. Rxc7 Nxf3+ 10. Kg2 Nd5
                                     11. Bxd5 exd5 12. Bf4 Nh4+ 13. Kh3 Nf3
                                     &#40;s=2&#41;
         25     1&#58;53/5&#58;00     0.36   1. Be3 Bc7 2. Rac1 O-O 3. Nc6 Qb5 4. Kf2
                                     Kh8 5. Nxb4 Rfc8 6. Nc6 Qh5 7. Kf1 Ne5
                                     8. Nxe5 Bxe5 9. Rxc8+ Rxc8 10. Kg1 Be4
                                     11. g4 Bxf3 12. Qxf3 Bxh2+ 13. Kh1 Nxg4
         25     2&#58;33/5&#58;00       ++   1. Nxe6! (>+0.37&#41;                  
         25     2&#58;40/5&#58;00       ++   1. Nxe6! (>+0.53&#41;                  
         25     2&#58;50/5&#58;00       ++   1. Nxe6! (>+0.85&#41;                  
         25     3&#58;12/5&#58;00       ++   1. Nxe6! (>+1.49&#41;                  
         25     3&#58;50/5&#58;00     2.20   1. Nxe6 fxe6 2. Qxe6+ Be7 3. Bf4 Qa7+ 4.
                                     Kg2 Qb7 5. Bd6 Nf8 6. Qe2 Bh5 7. Nc5 Qxf3+
                                     8. Qxf3 Bxf3+ 9. Kxf3 Ng6 10. Bxe7 Kxe7
                                     11. Re1+ Kd6 12. Nxa6 Ne5+ 13. Kg2 Rxa6
                                     14. Rad1+ Kc6 15. Rxe5 Rc8
         25->   3&#58;50/5&#58;00     2.20   1. Nxe6 fxe6 2. Qxe6+ Be7 3. Bf4 Qa7+ 4.
                                     Kg2 Qb7 5. Bd6 Nf8 6. Qe2 Bh5 7. Nc5 Qxf3+
                                     8. Qxf3 Bxf3+ 9. Kxf3 Ng6 10. Bxe7 Kxe7
                                     11. Re1+ Kd6 12. Nxa6 Ne5+ 13. Kg2 Rxa6
                                     14. Rad1+ Kc6 15. Rxe5 Rc8 &#40;s=3&#41;
         26     4&#58;27/5&#58;00       ++   1. Nxe6! (>+2.36&#41;                  
         26     4&#58;56/5&#58;00       ++   1. Nxe6! (>+2.52&#41;                  
        time=5&#58;02&#40;92%)  n=17254394846  fh1=89%  50move=0  nps=57.6M
        ext=262.2M  red=733.6M  pruned=2.8B  qchks=605.2M  pred=0
        splits=595.5K  aborts=84.1K  data=5%  probes=0  hits=0
White&#40;1&#41;&#58; Nxe6
              time used&#58;   5&#58;02

       +---+---+---+---+---+---+---+---+
    8  |<R>|<Q>|   | . |<K>| . |   |<R>|
       +---+---+---+---+---+---+---+---+
    7  | . |   | . |<N>| . |<P>|<P>|<P>|
       +---+---+---+---+---+---+---+---+
    6  |<P>| . |   |<B>|-N-|<N>|<B>| . |
       +---+---+---+---+---+---+---+---+
    5  | . |   | . |   | . |   | . |   |
       +---+---+---+---+---+---+---+---+
    4  |-N-|<P>|   | . |   | . |   | . |
       +---+---+---+---+---+---+---+---+
    3  | . |-B-| . |   | . |-P-|-P-|   |
       +---+---+---+---+---+---+---+---+
    2  |-P-|-P-|   | . |-Q-| . |   |-P-|
       +---+---+---+---+---+---+---+---+
    1  |-R-|   |-B-|-R-| . |   |-K-|   |
       +---+---+---+---+---+---+---+---+
         a   b   c   d   e   f   g   h
Yeah...your right it does eventually find the move after ~18 billion nodes are searched (this node count is from my machine, using a single core, with a small cache that is populated) . Seeing that Nxe6 is a good move sooner is better in all cases. Relying on big hardware to make a program play "good" is a crutch. If you rely on this crutch you are bound to encounter problems that bigger hardware can't fix. I would also note that the test you used isn't really that useful as far as predicting how it would play in a game since the caches were empty at the start.
bob wrote:

It depends on how you define "bug". In this case, the move is really a positional sacrifice until you get DEEPLY into the search....
It stops being a "sacrifice" as soon as the program "sees" that the move wins material.

The point is that it doesn't take 26 plies to win the material back. So why does the engine fail to find the move until 26 plies are reached?

If the number of nodes required to find the "right" move is greater than the number of nodes needed to "see" that it is the "right" after the move has been made on the board divided by the number of moves at the root, then something is wrong. There are, if I'm not mistaken, 45 moves at the root. In this case, after the move Nxe6 is made on the board the program sees that it is winning material in ~283M nodes ( eval = +1.75 ) with an empty cache. In a game with the caches filled these numbers will be considerably less. Therefore with an empty cache 45 * 283M = ~ 12,735M nodes. This is less than 18,000M nodes. If the cache is populated by a search of ~50M nodes of the prior position then the number of nodes needed to see that it's a good move after its made on the board drops to about 60M nodes, which gives 45 * 60m = 2,700M nodes. If the cache is populated by a search of ~250M nodes of the prior position then the number of nodes needed to see that it is a good move after it's been made drops to about 42M nodes, which gives 45 * 42M = 1,890 nodes. All of these figures are considerably less than 17,000M to 18,000M nodes used to "see" that it is a good move from the starting position.

Even if we allow a 1B node search to fill the cache prior to seeing the main position, it still takes Crafty about 10.6B nodes to find the move Nxe6. If we also allow a 1B node search prior to letting the program see the consequences of Nxe6 it sees that it is winning material in 32M nodes. 45 * 32M = 1,440M nodes. This is less than 10.6B nodes needed to find the move in the first place by a wide margin. I think something's wrong with the code.

This analysis, of course, ignores the fact that many other engines find Nxe6 is a good move from a cold start in many fewer nodes. E.G.


Rybka 2.3.2a............................ 7K nodes
Ivanhoe B46fb x64..................767K nodes
Critter 1.4a 64-bit SSE4.......... 77K nodes
OpenCritter v1.1.37................ 52K nodes
Gull 3 x64............................... 13K nodes
Komodo 5 64-bit..................... 82K nodes
Houdini 1.5a x64.................... 24K nodes
Stockfish 290314 64 SSE4.2.. 6K nodes

I'm not saying we should compare any of these engines to Crafty, just that it seems obvious that 26 plies of search is excessive to find this move.
bob wrote: ... Crafty should find this soon enough...
If you throw enough hardware at it most any inefficiency can be made to seem insignificant or not worth bothering with. What do you do when big hardware is unavailable or it doesn't solve the problem? Time is of the essence for good play this type of behavior doesn't lead to good play even if it does "EVENTUALLY" find the right move.

Regards,

Forrest
Only 2 defining forces have ever offered to die for you.....Jesus Christ and the American Soldier. One died for your soul, the other for your freedom.
zullil
Posts: 6442
Joined: Tue Jan 09, 2007 12:31 am
Location: PA USA
Full name: Louis Zulli

Re: Is this a bug in Crafty 24.0 or...

Post by zullil »

Zenmastur wrote: The point is that it doesn't take 26 plies to win the material back. So why does the engine fail to find the move until 26 plies are reached?

Forrest
You stated in another post that "I've been away from computer chess and chess in general for about 17 years." Many search enhancements have been introduced during that period. My understanding is that many extensions and reductions are now performed, so that at the completion of "depth" N, some root moves have been searched much more deeply than N plies, and perhaps some less than N. It's not just an alpha-beta search with iterative deepening anymore. And then there's the whole issue of multi-threading (which you wisely eliminated from consideration here by using a single core to test).

I'm sure Bob can comment more intelligently, but it seems to me that Crafty's behavior here is not the result of a "bug". The engine's "difficulty" finding the move is a consequence of the search design and evaluation parameters, which presumably have been tested to give strong results overall, though not on this one position.
bob
Posts: 20943
Joined: Mon Feb 27, 2006 7:30 pm
Location: Birmingham, AL

Re: Is this a bug in Crafty 24.0 or...

Post by bob »

Zenmastur wrote:
zullil wrote:
Crafty finds the move:

Code: Select all

Crafty v24.0 &#40;16 cpus&#41;

White&#40;1&#41;&#58; hash 3072M
Warning--  xboard 'memory' option disabled
hash table memory = 2048M bytes &#40;128M entries&#41;.
White&#40;1&#41;&#58; hashp 256M
Warning--  xboard 'memory' option disabled
pawn hash table memory = 256M bytes &#40;8M entries&#41;.
White&#40;1&#41;&#58; setboard rq2k2r/3n1ppp/p2bpnb1/8/Np1N4/1B3PP1/PP2Q2P/R1BR2K1 w kq - 1 16

White&#40;1&#41;&#58; st 300
search time set to 300.00.
White&#40;1&#41;&#58; go
        time surplus   0.00  time limit 5&#58;00 (+0.00&#41; &#40;5&#58;00&#41;
        depth     time       score   variation &#40;1&#41;
starting thread 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <done>
         10->   0.09/5&#58;00     0.25   1. Bxe6 O-O 2. Bxd7 Nxd7 3. Nc6 Qc7 4.
                                     Ne7+ Kh8 5. Nxg6+ fxg6 6. Be3
.
.
.
         24->   1&#58;35/5&#58;00     0.43   1. Be3 Bc7 2. Rac1 O-O 3. Nc6 Qb5 4. Qxb5
                                     axb5 5. Nc5 Ne5 6. Ne7+ Kh8 7. Nxe6 fxe6
                                     8. Nxg6+ hxg6 9. Rxc7 Nxf3+ 10. Kg2 Nd5
                                     11. Bxd5 exd5 12. Bf4 Nh4+ 13. Kh3 Nf3
                                     &#40;s=2&#41;
         25     1&#58;53/5&#58;00     0.36   1. Be3 Bc7 2. Rac1 O-O 3. Nc6 Qb5 4. Kf2
                                     Kh8 5. Nxb4 Rfc8 6. Nc6 Qh5 7. Kf1 Ne5
                                     8. Nxe5 Bxe5 9. Rxc8+ Rxc8 10. Kg1 Be4
                                     11. g4 Bxf3 12. Qxf3 Bxh2+ 13. Kh1 Nxg4
         25     2&#58;33/5&#58;00       ++   1. Nxe6! (>+0.37&#41;                  
         25     2&#58;40/5&#58;00       ++   1. Nxe6! (>+0.53&#41;                  
         25     2&#58;50/5&#58;00       ++   1. Nxe6! (>+0.85&#41;                  
         25     3&#58;12/5&#58;00       ++   1. Nxe6! (>+1.49&#41;                  
         25     3&#58;50/5&#58;00     2.20   1. Nxe6 fxe6 2. Qxe6+ Be7 3. Bf4 Qa7+ 4.
                                     Kg2 Qb7 5. Bd6 Nf8 6. Qe2 Bh5 7. Nc5 Qxf3+
                                     8. Qxf3 Bxf3+ 9. Kxf3 Ng6 10. Bxe7 Kxe7
                                     11. Re1+ Kd6 12. Nxa6 Ne5+ 13. Kg2 Rxa6
                                     14. Rad1+ Kc6 15. Rxe5 Rc8
         25->   3&#58;50/5&#58;00     2.20   1. Nxe6 fxe6 2. Qxe6+ Be7 3. Bf4 Qa7+ 4.
                                     Kg2 Qb7 5. Bd6 Nf8 6. Qe2 Bh5 7. Nc5 Qxf3+
                                     8. Qxf3 Bxf3+ 9. Kxf3 Ng6 10. Bxe7 Kxe7
                                     11. Re1+ Kd6 12. Nxa6 Ne5+ 13. Kg2 Rxa6
                                     14. Rad1+ Kc6 15. Rxe5 Rc8 &#40;s=3&#41;
         26     4&#58;27/5&#58;00       ++   1. Nxe6! (>+2.36&#41;                  
         26     4&#58;56/5&#58;00       ++   1. Nxe6! (>+2.52&#41;                  
        time=5&#58;02&#40;92%)  n=17254394846  fh1=89%  50move=0  nps=57.6M
        ext=262.2M  red=733.6M  pruned=2.8B  qchks=605.2M  pred=0
        splits=595.5K  aborts=84.1K  data=5%  probes=0  hits=0
White&#40;1&#41;&#58; Nxe6
              time used&#58;   5&#58;02

       +---+---+---+---+---+---+---+---+
    8  |<R>|<Q>|   | . |<K>| . |   |<R>|
       +---+---+---+---+---+---+---+---+
    7  | . |   | . |<N>| . |<P>|<P>|<P>|
       +---+---+---+---+---+---+---+---+
    6  |<P>| . |   |<B>|-N-|<N>|<B>| . |
       +---+---+---+---+---+---+---+---+
    5  | . |   | . |   | . |   | . |   |
       +---+---+---+---+---+---+---+---+
    4  |-N-|<P>|   | . |   | . |   | . |
       +---+---+---+---+---+---+---+---+
    3  | . |-B-| . |   | . |-P-|-P-|   |
       +---+---+---+---+---+---+---+---+
    2  |-P-|-P-|   | . |-Q-| . |   |-P-|
       +---+---+---+---+---+---+---+---+
    1  |-R-|   |-B-|-R-| . |   |-K-|   |
       +---+---+---+---+---+---+---+---+
         a   b   c   d   e   f   g   h
Yeah...your right it does eventually find the move after ~18 billion nodes are searched (this node count is from my machine, using a single core, with a small cache that is populated) . Seeing that Nxe6 is a good move sooner is better in all cases. Relying on big hardware to make a program play "good" is a crutch. If you rely on this crutch you are bound to encounter problems that bigger hardware can't fix. I would also note that the test you used isn't really that useful as far as predicting how it would play in a game since the caches were empty at the start.
bob wrote:

It depends on how you define "bug". In this case, the move is really a positional sacrifice until you get DEEPLY into the search....
It stops being a "sacrifice" as soon as the program "sees" that the move wins material.

The point is that it doesn't take 26 plies to win the material back. So why does the engine fail to find the move until 26 plies are reached?

If the number of nodes required to find the "right" move is greater than the number of nodes needed to "see" that it is the "right" after the move has been made on the board divided by the number of moves at the root, then something is wrong. There are, if I'm not mistaken, 45 moves at the root. In this case, after the move Nxe6 is made on the board the program sees that it is winning material in ~283M nodes ( eval = +1.75 ) with an empty cache. In a game with the caches filled these numbers will be considerably less. Therefore with an empty cache 45 * 283M = ~ 12,735M nodes. This is less than 18,000M nodes. If the cache is populated by a search of ~50M nodes of the prior position then the number of nodes needed to see that it's a good move after its made on the board drops to about 60M nodes, which gives 45 * 60m = 2,700M nodes. If the cache is populated by a search of ~250M nodes of the prior position then the number of nodes needed to see that it is a good move after it's been made drops to about 42M nodes, which gives 45 * 42M = 1,890 nodes. All of these figures are considerably less than 17,000M to 18,000M nodes used to "see" that it is a good move from the starting position.

Even if we allow a 1B node search to fill the cache prior to seeing the main position, it still takes Crafty about 10.6B nodes to find the move Nxe6. If we also allow a 1B node search prior to letting the program see the consequences of Nxe6 it sees that it is winning material in 32M nodes. 45 * 32M = 1,440M nodes. This is less than 10.6B nodes needed to find the move in the first place by a wide margin. I think something's wrong with the code.

This analysis, of course, ignores the fact that many other engines find Nxe6 is a good move from a cold start in many fewer nodes. E.G.


Rybka 2.3.2a............................ 7K nodes
Ivanhoe B46fb x64..................767K nodes
Critter 1.4a 64-bit SSE4.......... 77K nodes
OpenCritter v1.1.37................ 52K nodes
Gull 3 x64............................... 13K nodes
Komodo 5 64-bit..................... 82K nodes
Houdini 1.5a x64.................... 24K nodes
Stockfish 290314 64 SSE4.2.. 6K nodes

I'm not saying we should compare any of these engines to Crafty, just that it seems obvious that 26 plies of search is excessive to find this move.
bob wrote: ... Crafty should find this soon enough...
If you throw enough hardware at it most any inefficiency can be made to seem insignificant or not worth bothering with. What do you do when big hardware is unavailable or it doesn't solve the problem? Time is of the essence for good play this type of behavior doesn't lead to good play even if it does "EVENTUALLY" find the right move.

Regards,

Forrest
For a search of > 5 seconds, you won't be able to measure the difference between a completely empty cache and one that has been "warmed up" by getting key parts of the program pre-loaded.

Finding Nxe6 after 70K nodes is not hard. But it introduces a measure of speculation that can be dangerous, because in 70K nodes there is NO way to see the ultimate win of material. You have to give big bonuses for the various pins, king can't castle, etc.

Here's a good test to try:

take that position with one of the above programs (Rybka, etc) and look at the difference in score between Nxe6 and its second choice (perhaps use multi-PV). I just tried this in Crafty and the difference between the best move and Nxe6 is minuscule after a short search. The interesting question is, when does a program actually see it winning material. It takes Crafty to ply=20 (which is not very long). So not playing it at earlier plies is not what I would call a bug, I would call it just a circumstance. Many programs make the right move but for the wrong reason (make it accidentally). That doesn't always win games.
mvk
Posts: 589
Joined: Tue Jun 04, 2013 10:15 pm

Re: Is this a bug in Crafty 24.0 or...

Post by mvk »

Zenmastur wrote: Rybka 2.3.2a............................ 7K nodes
Ivanhoe B46fb x64..................767K nodes
Critter 1.4a 64-bit SSE4.......... 77K nodes
OpenCritter v1.1.37................ 52K nodes
Gull 3 x64............................... 13K nodes
Komodo 5 64-bit..................... 82K nodes
Houdini 1.5a x64.................... 24K nodes
Stockfish 290314 64 SSE4.2.. 6K nodes
My program finds Nxe6 it after 70 nodes (first ply), and sticks with it. But as bob pointed out, one also has to consider the difference with the second move. For me that is 0.056 pawn. That means that a slightly different tuning can make the move very hard to find.
[Account deleted]