Author: José Carlos
Date: 06:53:46 05/22/03
Go up one level in this thread
On May 22, 2003 at 08:38:03, Uri Blass wrote:
>On May 22, 2003 at 08:32:53, Uri Blass wrote:
>
>>On May 22, 2003 at 07:16:26, José Carlos wrote:
>>
>>>On May 22, 2003 at 07:08:11, Uri Blass wrote:
>>>
>>>>On May 22, 2003 at 06:35:27, José Carlos wrote:
>>>>
>>>>>On May 22, 2003 at 06:14:01, Uri Blass wrote:
>>>>>
>>>>>>On May 22, 2003 at 06:08:47, José Carlos wrote:
>>>>>>
>>>>>>>On May 22, 2003 at 01:01:38, Robin Smith wrote:
>>>>>>>
>>>>>>>>Often programs will underpromote a pawn in situations where they think capturing
>>>>>>>>the (under)promoted piece is still the best reply. Can anyone give an example
>>>>>>>>from an actual game where this underspromotion cost the computer a 1/2 point?
>>>>>>>>
>>>>>>>>Robin
>>>>>>>
>>>>>>> I can't recall any game with this problem, but it's really easy to fix. I
>>>>>>>simply order the promotions so that promoting to queen gets searched first. The
>>>>>>>all the other underpromotions will return alpha and thus ignored.
>>>>>>>
>>>>>>> José C.
>>>>>>
>>>>>>It is possible to fix but it is not so easy to fix because the other promotion
>>>>>>may leas to different extensions and different score.
>>>>>>
>>>>>>Uri
>>>>>
>>>>>
>>>>> If I understand correctly the original post, we're talking about the scenario
>>>>>where the program thinks that capturing the promote piece is the best move, so
>>>>>it randomly promotes any piece, being sure the opponent will capture. Then, it
>>>>>turns that not capturin the promoted bishop leads to a draw in some extrange
>>>>>ending.
>>>>> If I order my moves to analyze the queen promotion first, get back a score and
>>>>>only then analyze the underpromotions, in the mentioned scenarios all other
>>>>>promotions will get the same score, exactly the same as the opponent will always
>>>>>capture the piece in the tree.
>>>>> Then, first searched move is played. Problem solved.
>>>>>
>>>>> José C.
>>>>
>>>>The assumption that the moves will get the same score
>>>>is not always correct.
>>>>
>>>>For example the program may extend more promotion for
>>>>knight with a check so it may be searched deeper and
>>>>another option is that promotion to queen is extended
>>>>and searched to bigger depth or promotion not to queen is search to reduced
>>>>depth.
>>>>
>>>>Uri
>>>
>>> This can happen if you don't have a transposition table. If you have it, all
>>>underpromotions followed by the capture of the promoted piece will get a hit in
>>>the hash table and there's no need to search further.
>>> But it is not the question of the original poster, if I understand him
>>>correctly.
>>>
>>> José C.
>>
>>He asked for a game when a program blundered by underpromotion
>>so I will give him a game
>>
>>Latest movei drew 10-10 in the nunn match against Junior5
>>with 3 minutes for movei against 1 minute for Junior5.
>>
>>Interesting to see that I am not the only programmer who does
>>not consider the problem of wrong underpromotion as
>>a very important problem.
>>
>>Stefan(the programmer of shredder) also does not consider the problem as
>>imprtant(otherwise shredder7.04 will never consider c1R as the best move).
>>
>>Fixing the problem is not very hard and I can probably do it and test it in one
>>day but I did not consider the problem as important enough to fix it until
>>today.
>>
>>
>>[Event "URI-PC, Blitz:1'"]
>>[Site "URI-PC"]
>>[Date "2003.05.22"]
>>[Round "13"]
>>[White "Junior 5.0"]
>>[Black "movei00_8_070"]
>>[Result "1-0"]
>>[ECO "E15"]
>>[PlyCount "153"]
>>[TimeControl "60"]
>>
>>{W=10.5 ply; 719kN/s
>>B=8.1 ply; 186kN/s
>>} 1. d4 Nf6 2. c4 e6 3. Nf3 b6 4. g3
>>Ba6 5. b3 Bb4+ 6. Bd2 Be7 7. Bg2 c6 8. Bc3 d5 9. Ne5 Nfd7 10. Nxd7 Nxd7 11. Nd2
>>O-O 12. O-O Rc8 13. e4 {Both last book move} b5 {[%eval 6,8] [%emt 0:00:02]}
>>14. Re1 {(exd5) [%eval 0,11] [%emt 0:00:01]} dxc4 {
>>(bxc4) [%eval 0,8] [%emt 0:00:03]} 15. bxc4 {[%eval 0,11] [%emt 0:00:01]} bxc4
>>{[%eval -14,9] [%emt 0:00:03]} 16. Qa4 {[%eval -29,12] [%emt 0:00:02]} Qb6 {
>>(Bb5) [%eval -3,9] [%emt 0:00:02]} 17. Bf1 {(Nxc4) [%eval 32,11] [%emt 0:00:01]
>>} Bb5 {(e5) [%eval 11,8] [%emt 0:00:03]} 18. Qd1 {
>>(Qc2) [%eval 48,11] [%emt 0:00:03]} c5 {[%eval -6,8] [%emt 0:00:02]} 19. d5 {
>>(Nxc4) [%eval 46,11] [%emt 0:00:02]} Bf6 {(exd5) [%eval 4,8] [%emt 0:00:03]}
>>20. Bxf6 {[%eval 26,10] [%emt 0:00:02]} Nxf6 {[%eval 12,8] [%emt 0:00:02]} 21.
>>a4 {[%eval 4,11] [%emt 0:00:03]} c3 {[%eval 7,8] [%emt 0:00:02]} 22. axb5 {
>>[%eval -5,11] [%emt 0:00:02]} cxd2 {[%eval 7,9] [%emt 0:00:03]} 23. Qxd2 {
>>[%eval 0,10] [%emt 0:00:01]} c4 {(exd5) [%eval 9,8] [%emt 0:00:03]} 24. dxe6 {
>>(d6) [%eval 17,10] [%emt 0:00:02]} fxe6 {[%eval 6,8] [%emt 0:00:04]} 25. Bh3 {
>>[%eval 29,10] [%emt 0:00:01]} c3 {(Rf7) [%eval 21,8] [%emt 0:00:04]} 26. Qe2 {
>>(Qc2) [%eval 68,11] [%emt 0:00:04]} Rc5 {(Kh8) [%eval 111,8] [%emt 0:00:04]}
>>27. Ra6 {[%eval 18,10] [%emt 0:00:01]} Qxb5 {[%eval 105,8] [%emt 0:00:04]} 28.
>>Qxb5 {[%eval 38,10] [%emt 0:00:02]} Rxb5 {[%eval 105,8] [%emt 0:00:01]} 29. e5
>>{(Bxe6+) [%eval 67,11] [%emt 0:00:01]} Ne4 {(Ne8) [%eval 111,8] [%emt 0:00:03]}
>>30. Rxe4 {[%eval 103,10] [%emt 0:00:01]} Rb1+ {[%eval 120,8] [%emt 0:00:02]}
>>31. Kg2 {[%eval 103,10] [%emt 0:00:00]} c2 {[%eval 108,8] [%emt 0:00:02]} 32.
>>Bxe6+ {[%eval 66,11] [%emt 0:00:01]} Kh8 {[%eval 103,10] [%emt 0:00:02]} 33.
>>Rc4 {[%eval 66,10] [%emt 0:00:00]} c1=R {(c1Q) [%eval 103,8] [%emt 0:00:01]}
>>34. Rxa7 {(Rxc1) [%eval 69,11] [%emt 0:00:04]} Rg1+ {
>>(Re1) [%eval 79,7] [%emt 0:00:01]} 35. Kh3 {[%eval 71,3] [%emt 0:00:00]} Rb6 {
>>(Rgd1) [%eval 63,7] [%emt 0:00:01]} 36. Rf7 {(Re7) [%eval 88,10] [%emt 0:00:02]
>>} Rd8 {(Rfb8) [%eval 56,7] [%emt 0:00:01]} 37. Bd7 {
>>(Re7) [%eval 93,9] [%emt 0:00:01]} Rbb8 {(Kg8) [%eval 65,6] [%emt 0:00:02]} 38.
>>Rc7 {(e6) [%eval 114,11] [%emt 0:00:01]} Ra1 {(Re1) [%eval 91,7] [%emt 0:00:03]
>>} 39. Bg4 {(Bf5) [%eval 123,11] [%emt 0:00:01]} Rg8 {
>>[%eval 82,7] [%emt 0:00:02]} 40. e6 {(Rb7) [%eval 109,11] [%emt 0:00:01]} Re1 {
>>(Ra2) [%eval 96,7] [%emt 0:00:02]} 41. Kg2 {(Bf5) [%eval 117,11] [%emt 0:00:02]
>>} Rb2 {(Re4) [%eval 102,7] [%emt 0:00:03]} 42. h3 {
>>(Rb7) [%eval 107,10] [%emt 0:00:00]} Rbb8 {(Ra1) [%eval 106,8] [%emt 0:00:07]}
>>43. Rfd7 {(Bf5) [%eval 110,11] [%emt 0:00:01]} Rbb1 {
>>(Rb2) [%eval 61,7] [%emt 0:00:01]} 44. Bh5 {(Rb7) [%eval 112,9] [%emt 0:00:01]}
>>Rg1+ {(Rb2) [%eval 36,7] [%emt 0:00:05]} 45. Kf3 {[%eval 114,8] [%emt 0:00:00]}
>>Rb3+ {[%eval 33,6] [%emt 0:00:02]} 46. Ke2 {(Ke4) [%eval 112,8] [%emt 0:00:00]}
>>Rb2+ {[%eval 47,7] [%emt 0:00:03]} 47. Rd2 {[%eval 108,8] [%emt 0:00:00]} Rbb1
>>{[%eval 50,7] [%emt 0:00:02]} 48. Bf7 {(Kd3) [%eval 112,8] [%emt 0:00:00]}
>>Rge1+ {[%eval 50,7] [%emt 0:00:03]} 49. Kf3 {
>>(Kd3) [%eval 116,10] [%emt 0:00:01]} Rf8 {(Ra8) [%eval 91,7] [%emt 0:00:02]}
>>50. Kg4 {[%eval 109,9] [%emt 0:00:00]} Rb4+ {[%eval 72,6] [%emt 0:00:01]} 51.
>>f4 {[%eval 125,10] [%emt 0:00:00]} Rbe4 {(g6) [%eval 106,7] [%emt 0:00:02]} 52.
>>Rdd7 {(Rcd7) [%eval 142,11] [%emt 0:00:01]} h6 {[%eval 192,7] [%emt 0:00:02]}
>>53. Bg6 {(e7) [%eval 165,10] [%emt 0:00:00]} Rxe6 {[%eval 221,8] [%emt 0:00:03]
>>} 54. Rxg7 {[%eval 165,8] [%emt 0:00:00]} Rff6 {[%eval 293,7] [%emt 0:00:03]}
>>55. Rh7+ {[%eval 168,8] [%emt 0:00:00]} Kg8 {[%eval 1,1] [%emt 0:00:00]} 56.
>>Rcg7+ {[%eval 250,9] [%emt 0:00:00]} Kf8 {[%eval 1,1] [%emt 0:00:00]} 57. Bf7 {
>>[%eval 257,9] [%emt 0:00:00]} R6e3 {[%eval 294,7] [%emt 0:00:01]} 58. Bd5 {
>>[%eval 268,8] [%emt 0:00:00]} Ree6 {[%eval 351,7] [%emt 0:00:01]} 59. Ra7 {
>>[%eval 274,8] [%emt 0:00:00]} Kg8 {[%eval 335,7] [%emt 0:00:02]} 60. Bxe6+ {
>>(Rhg7+) [%eval 268,8] [%emt 0:00:00]} Rfxe6 {
>>(Rexe6) [%eval 337,7] [%emt 0:00:01]} 61. f5 {
>>(Kh5) [%eval 360,8] [%emt 0:00:00]} Rd6 {(Rb6) [%eval 325,7] [%emt 0:00:02]}
>>62. Rag7+ {[%eval 330,9] [%emt 0:00:01]} Kf8 {[%eval 1,1] [%emt 0:00:00]} 63.
>>Rg6 {[%eval 334,8] [%emt 0:00:00]} Rxg6+ {[%eval 353,7] [%emt 0:00:02]} 64.
>>fxg6 {[%eval 340,8] [%emt 0:00:00]} Re6 {(Kg8) [%eval 353,8] [%emt 0:00:03]}
>>65. Kh5 {(Kf5) [%eval 398,10] [%emt 0:00:00]} Rf6 {
>>(Re3) [%eval 447,9] [%emt 0:00:05]} 66. Rf7+ {
>>(Kxh6) [%eval 575,12] [%emt 0:00:00]} Rxf7 {[%eval 357,12] [%emt 0:00:01]} 67.
>>gxf7 {[%eval 605,11] [%emt 0:00:00]} Kxf7 {(Kg7) [%eval 357,12] [%emt 0:00:01]}
>>68. Kxh6 {[%eval 32752,1] [%emt 0:00:00]} Kf6 {[%eval 32753,1] [%emt 0:00:00]}
>>69. g4 {[%eval 32753,1] [%emt 0:00:00]} Ke6 {[%eval 32754,1] [%emt 0:00:00]}
>>70. g5 {[%eval 32754,1] [%emt 0:00:00]} Kf7 {
>>(Ke5) [%eval 32755,1] [%emt 0:00:00]} 71. h4 {[%eval 32755,1] [%emt 0:00:00]}
>>Ke6 {[%eval 32756,1] [%emt 0:00:00]} 72. g6 {[%eval 32756,1] [%emt 0:00:00]}
>>Kf6 {[%eval 32757,1] [%emt 0:00:00]} 73. g7 {
>>(h5) [%eval 32757,1] [%emt 0:00:00]} Kf7 {[%eval 32758,1] [%emt 0:00:00]} 74.
>>Kh7 {[%eval 1279,11] [%emt 0:00:00]} Kf6 {[%eval 32759,1] [%emt 0:00:00]} 75.
>>h5 {(Kh8) [%eval 1290,15] [%emt 0:00:00]} Kf5 {
>>(Kg5) [%eval 32759,1] [%emt 0:00:00]} 76. h6 {[%eval 1348,14] [%emt 0:00:00]}
>>Kf6 {[%eval 32760,1] [%emt 0:00:00]} 77. g8=Q {[%eval 2044,15] [%emt 0:00:00]}
>>1-0
>
>Note that I do not know if promotion to rook cost movei 1/2 point but it was a
>stupid move to consider.
>
>Shredder7.04 also can play c1R in blitz as the following analysis proves:
>
>Junior 5.0 - movei00_8_070
>[D]5r1k/p5pp/R3B3/4P3/2R5/6P1/2p2PKP/1r6 b - - 0 1
>
>Analysis by Shredder 7.04:
>
>33...c1Q 34.Rxc1 Rxc1 35.Rxa7
> +- (1.42) Depth: 1/3 00:00:00
>33...c1Q 34.Rxc1 Rxc1 35.Rxa7
> ² (0.61) Depth: 1/4 00:00:00
>33...c1Q 34.Rxc1 Rxc1 35.Rxa7
> ² (0.61) Depth: 1/4 00:00:00
>33...c1Q 34.Rxc1 Rxc1 35.Rxa7
> ² (0.61) Depth: 2/4 00:00:00
>33...c1Q 34.Rxc1 Rxc1 35.Rxa7
> ² (0.61) Depth: 3/6 00:00:00
>33...c1Q 34.Rxc1 Rxc1 35.Rxa7
> ² (0.61) Depth: 4/8 00:00:00
>33...c1Q 34.Rxc1 Rxc1 35.Rxa7 Re1
> ² (0.63) Depth: 5/8 00:00:00
>33...c1Q 34.Rxc1 Rxc1 35.Rxa7 Re8 36.Ra6
> ² (0.46) Depth: 6/10 00:00:00 5kN
>33...c1Q 34.Rxc1 Rxc1 35.Rxa7 Re8 36.Ra6 Re1
> ² (0.48) Depth: 7/12 00:00:00 11kN
>33...c1Q 34.Rxc1 Rxc1 35.Rxa7 Rfc8 36.Bxc8 Rxc8
> ± (0.73) Depth: 8/12 00:00:00 28kN
>33...c1Q 34.Rxc1 Rxc1 35.Rxa7 Rc2 36.Bf7 Re2 37.e6
> ± (0.81) Depth: 8/12 00:00:00 34kN
>33...c1Q 34.Rxc1 Rxc1 35.Rxa7 Rh1 36.Kxh1 Rxf2
> ± (1.06) Depth: 9/16 00:00:01 69kN
>33...c1Q 34.Rxc1 Rxc1 35.Rxa7 g5 36.Kh3 Rxf2
> ± (1.06) Depth: 9/16 00:00:01 83kN
>33...c1R 34.Rxc1 Rxc1 35.Rxa7 g5 36.Kh3 Rxf2
> ± (1.05) Depth: 9/16 00:00:01 119kN
>33...c1R 34.Rxc1 Rxc1 35.Rxa7 g5 36.h4 Re1 37.hxg5 Rxe5
> ± (0.88) Depth: 9/18 00:00:01 135kN
>33...c1R 34.Rxc1 Rxc1 35.Rxa7 g5 36.Bf7 Kg7 37.Bc4+ Kh6 38.Bb5
> ± (1.12) Depth: 10/19 00:00:02 179kN
>33...c1R 34.Rxc1 Rxc1 35.Rxa7 Re1 36.f4 h6 37.Kh3 Kh7 38.Bd5 Kg6
> ± (1.22) Depth: 11/21 00:00:03 401kN
>33...c1R 34.Rxc1 Rxc1 35.Rxa7 Rc2 36.Bf7 Rfc8 37.Rd7 Re2 38.e6 h5
> ± (1.05) Depth: 12/24 00:00:08 1286kN
>33...c1R 34.Rxa7 Re1 35.Rf7 Rfb8 36.Bf5 R1b6 37.e6 g6 38.Bh3 R6b7 39.Rcc7 Rxc7
> ± (1.07) Depth: 13/32 00:00:35 6573kN
>33...c1Q 34.Rxc1 Rxc1 35.Rxa7 Rc2 36.Bf5 Re2 37.e6
> ± (1.06) Depth: 13/32 00:00:36 6828kN
>33...c1Q 34.Rxc1 Rxc1 35.Rxa7 Rc2 36.Bf5 Re2 37.e6
> ± (1.06) Depth: 13/32 00:00:37 6828kN
>33...c1Q 34.Rxc1 Rxc1 35.Rxa7 Rc2 36.Bf5 Re2 37.e6
> ± (0.96) Depth: 14/32 00:00:41 7828kN
>
>(Blass, Tel-Aviv 22.05.2003)
>
>Uri
Ok, I see your point. It seems what Shredder failed low (thought it's not
printed) on c1Q and, for some reason, used the second best move so far, c1R.
Then, in the next iteration, c1R is the PV, so it's searched first. c1Q is
seached then and transposes, so it fails low (with alpha as score). At iteration
13, Shredder finds 33...c1R 34.Rxa7 which fails low (again not printed) and
picks c1Q again.
José C.
This page took 0 seconds to execute
Last modified: Thu, 15 Apr 21 08:11:13 -0700
Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.