Could somebody, please, be so kind as to explain in simple terms the meaning of a "Fail High" and a "Fail Low" in computer chess?
I apologize for asking a question that is probably very basic to most in this forum here and would like to thank you in advance for your answer.
Best regards,
Sam
I apologize for asking a question that is probably very basic to most in this forum here and would like to thank you in advance for your answer.
Best regards,
Sam
Example - say the score of a particular position at depth 5 is +0.30
Going one ply deeper (depth 6) a chess program will create a window around the 0.30 score, say half a pawn (0.50)
The window then becomes -0.20 | +0.80
If the new search (depth=6) returns a value outside that window there are 2 possibilities:
Fail-low - the search has returned a value < -0.20
Fail-high - the search has returned a value > +0.80
In both cases the window must be widened and the search must be done again with the new window.
Going one ply deeper (depth 6) a chess program will create a window around the 0.30 score, say half a pawn (0.50)
The window then becomes -0.20 | +0.80
If the new search (depth=6) returns a value outside that window there are 2 possibilities:
Fail-low - the search has returned a value < -0.20
Fail-high - the search has returned a value > +0.80
In both cases the window must be widened and the search must be done again with the new window.
> Example - say the score of a particular position at depth 5 is +0.30
>
> Going one ply deeper (depth 6) a chess program will create a window around the 0.30 score, say half a pawn (0.50)
Ed,
Why does a chess program need to create a window at all? Why not just evaluate the position at ply=5 at +0.30 and ply=6 at whatever it comes out at? Say Be4 comes out at +2.30 at ply=6, can't we just go from there?
I don't get the window thing.
Speed. You get more 'cut offs' using a window, there are large chunks of moves the engine does not have to calculate as it can be proven they will not improve the currently found move.
Most of the time, going one ply deeper doesn't change the best move's score much. So when the third ply in the main line suddenly turns out to lose over half a pawn compared to the old score, we assume there's an alternative that loses less so we don't have to bother figuring out if the move loses 0.51 or 3 pawns.
Introduction to alpha-beta and aspiration search 

Russ Conway - Lesson one - http://www.youtube.com/watch?v=EIdzdQ4i1GA
Consider this position and let it run with ProDeo 1.74
You get something like:
00:00:03 12.00 0.19 1.Be3 e6 2.Qd3 a5 3.b3 Ba6 4.c4 Be7 5.Rad1 Rb8 6.h3 a4 7.a3 h6
00:00:07 13.00 0.19 1.Be3 e6 2.Qd3 a5 3.b3 Ba6 4.c4 Be7 5.Rad1 Rb8 6.h3 a4 7.a3 h6
00:00:16 14.00 0.21 1.Be3 e6 2.c4 Rb8 3.Rb1 Qa5
00:00:27 15.00 0.19 1.Be3 e6 2.c4 Rb8 3.b3 Be7 4.Nd2 Qa5 5.Qg4 g6 6.Bg5
00:01:11 16.00 0.20 1.Be3 e6 2.c4 Rb8 3.b3 Be7
00:01:43 16.05 0.22 1.b3 e6 2.Bg5 Qa5 3.Qd3 h6 4.Be3 Be7 5.a4 Bb7 6.c4 Bd8 7.Rad1 Bc7 8.Bf4
00:02:14 16.24 0.22 1.e6 [ FAIL-HIGH ] research with a wider window
00:02:46 16.24 0.71 1.e6 Bxe6 2.Rxe6 fxe6 3.Ne5
00:03:12 17.00 0.71 1.e6 Bxe6 2.Rxe6 fxe6 3.Ne5
The key-move 1.e6 is found at 2:14
Now let's examanine the wonders of the alpha-beta algorithm.
Consider its power first, add the below parameter to the ProDeo 1.74 personality.
[AB DEPTH = 8]
And run the same position again.
It will do the first 8 plies (iterations) WITHOUT alpha-beta and notice how long that takes, then after about 40 seconds at iteration 9 (alpha-beta is active again) it flies through the plies.
Now that you have seen its power, throw the parameter out or set it to [AB DEPTH = 0]
------------
Now add the following parameters:
[Alpha = 128]
[Beta = 127]
These are the default window margins that control the alpha-beta search.
Now lets narrow the window, we get more beta-cut-offs as a result, thus in principle a faster solution time.
Change to:
[Alpha = 64]
[Beta = 64]
And run the position again.
00:00:04 12.00 0.19 1.Be3 e6 2.Qd3 a5 3.b3 Ba6 4.c4 Be7 5.Rad1 Rb8 6.h3 a4 7.a3 h6
00:00:09 13.00 0.21 1.Be3 e6 2.c4 a5 3.b3 Ba6 4.Nd2 Qh4 5.Nf3 Qd8 6.Nd2 Qh4 7.Nf3
00:00:17 14.00 0.21 1.Be3 e6 2.Nd2 Rb8 3.b3 Qh4 4.Nf3 Qh5 5.Qd3 Be7 6.Rad1 Qf5 7.c4 Qxd3 8.cxd3 h6
00:00:26 15.00 0.24 1.Be3 e6 2.c4 a5 3.Nd2 Ba6 4.c3 Qc7 5.f4 Rb8 6.b3 Be7 7.Qh5 a4 8.Bf2 h6
00:00:44 15.18 0.24 1.e6 [ FAIL-HIGH ] research with a wider window
00:00:48 15.18 0.60 1.e6 Bxe6 2.Rxe6 fxe6 3.Ne5 Qd6 4.Qh5 g6 5.Nxg6 hxg6 6.Qxh8 e5
00:01:27 16.00 0.90 1.e6 Bxe6 2.Rxe6 fxe6 3.Ne5 g6 4.Qf3 Qc8 5.Bg5 Ra7 6.Qf7
00:01:37 17.00 0.71 1.e6 Bxe6 2.Rxe6 fxe6 3.Ne5 g6 4.Qf3 Qc8 5.Qf7 Kd8 6.Bg5 Ra7
Unfortunately the search now finds 1.e6 one ply earlier but from the default search you will notice that the search is faster due to a narrower window.
And so we continue, narrow the window even more:
[Alpha = 32]
[Beta = 32]
00:00:03 12.00 0.21 1.Be3 e6 2.Qd3 a5 3.b3 Ba6 4.c4 Be7 5.Rad1 Rb8 6.h3 a4 7.a3
00:00:07 13.00 0.21 1.Be3 e6 2.Qd3 a5 3.b3 Ba6 4.c4 Be7 5.Rad1 Rb8 6.h3 a4 7.a3
00:00:14 14.00 0.22 1.Be3 e6 2.c4 Rb8 3.b3 a5 4.Nd2 Be7 5.Qg4 g6 6.Rad1 Ba6
00:00:25 15.00 0.22 1.Be3 e6 2.c4 Rb8 3.b3 Be7 4.a3 Qc7 5.Nd2 O-O 6.Qg4 Qxe5 7.Bxc5 Qf6 8.Bxe7 Qxe7
00:00:39 15.18 0.22 1.e6 [ FAIL-HIGH ] research with a wider window
00:00:45 15.18 0.60 1.e6 Bxe6 2.Rxe6 fxe6 3.Ne5 Qd6 4.Qh5 g6 5.Nxg6 hxg6 6.Qxh8 e5
00:01:33 16.00 0.86 1.e6 f6 2.Bf4 Qb6 3.c4 Bb7 4.Re3 O-O-O 5.Rb3 Qa7 6.Qe1 g5 7.Bg3 a5 8.cxd5 cxd5 9.Rd1
00:02:05 17.00 0.85 1.e6 Bxe6 2.Rxe6 fxe6 3.Ne5 g6 4.Qf3 Qc8 5.Bg5 Ra7 6.Qf7
Although 1.e6 again is found earlier due to the smaller window there are negative effects also, note that at depth 16 and 17 the search has become slower due to a FAIL-LOW's because the window became too narrow and a research was needed.
I am not sure if all of this is helpful


Russ Conway - Lesson one - http://www.youtube.com/watch?v=EIdzdQ4i1GA
r1bqkb1r/4pppp/p1p5/2ppP3/8/2P2N2/PPP2PPP/R1BQR1K1 w kq -
Consider this position and let it run with ProDeo 1.74
You get something like:
00:00:03 12.00 0.19 1.Be3 e6 2.Qd3 a5 3.b3 Ba6 4.c4 Be7 5.Rad1 Rb8 6.h3 a4 7.a3 h6
00:00:07 13.00 0.19 1.Be3 e6 2.Qd3 a5 3.b3 Ba6 4.c4 Be7 5.Rad1 Rb8 6.h3 a4 7.a3 h6
00:00:16 14.00 0.21 1.Be3 e6 2.c4 Rb8 3.Rb1 Qa5
00:00:27 15.00 0.19 1.Be3 e6 2.c4 Rb8 3.b3 Be7 4.Nd2 Qa5 5.Qg4 g6 6.Bg5
00:01:11 16.00 0.20 1.Be3 e6 2.c4 Rb8 3.b3 Be7
00:01:43 16.05 0.22 1.b3 e6 2.Bg5 Qa5 3.Qd3 h6 4.Be3 Be7 5.a4 Bb7 6.c4 Bd8 7.Rad1 Bc7 8.Bf4
00:02:14 16.24 0.22 1.e6 [ FAIL-HIGH ] research with a wider window
00:02:46 16.24 0.71 1.e6 Bxe6 2.Rxe6 fxe6 3.Ne5
00:03:12 17.00 0.71 1.e6 Bxe6 2.Rxe6 fxe6 3.Ne5
The key-move 1.e6 is found at 2:14
Now let's examanine the wonders of the alpha-beta algorithm.
Consider its power first, add the below parameter to the ProDeo 1.74 personality.
[AB DEPTH = 8]
And run the same position again.
It will do the first 8 plies (iterations) WITHOUT alpha-beta and notice how long that takes, then after about 40 seconds at iteration 9 (alpha-beta is active again) it flies through the plies.
Now that you have seen its power, throw the parameter out or set it to [AB DEPTH = 0]
------------
Now add the following parameters:
[Alpha = 128]
[Beta = 127]
These are the default window margins that control the alpha-beta search.
Now lets narrow the window, we get more beta-cut-offs as a result, thus in principle a faster solution time.
Change to:
[Alpha = 64]
[Beta = 64]
And run the position again.
00:00:04 12.00 0.19 1.Be3 e6 2.Qd3 a5 3.b3 Ba6 4.c4 Be7 5.Rad1 Rb8 6.h3 a4 7.a3 h6
00:00:09 13.00 0.21 1.Be3 e6 2.c4 a5 3.b3 Ba6 4.Nd2 Qh4 5.Nf3 Qd8 6.Nd2 Qh4 7.Nf3
00:00:17 14.00 0.21 1.Be3 e6 2.Nd2 Rb8 3.b3 Qh4 4.Nf3 Qh5 5.Qd3 Be7 6.Rad1 Qf5 7.c4 Qxd3 8.cxd3 h6
00:00:26 15.00 0.24 1.Be3 e6 2.c4 a5 3.Nd2 Ba6 4.c3 Qc7 5.f4 Rb8 6.b3 Be7 7.Qh5 a4 8.Bf2 h6
00:00:44 15.18 0.24 1.e6 [ FAIL-HIGH ] research with a wider window
00:00:48 15.18 0.60 1.e6 Bxe6 2.Rxe6 fxe6 3.Ne5 Qd6 4.Qh5 g6 5.Nxg6 hxg6 6.Qxh8 e5
00:01:27 16.00 0.90 1.e6 Bxe6 2.Rxe6 fxe6 3.Ne5 g6 4.Qf3 Qc8 5.Bg5 Ra7 6.Qf7
00:01:37 17.00 0.71 1.e6 Bxe6 2.Rxe6 fxe6 3.Ne5 g6 4.Qf3 Qc8 5.Qf7 Kd8 6.Bg5 Ra7
Unfortunately the search now finds 1.e6 one ply earlier but from the default search you will notice that the search is faster due to a narrower window.
And so we continue, narrow the window even more:
[Alpha = 32]
[Beta = 32]
00:00:03 12.00 0.21 1.Be3 e6 2.Qd3 a5 3.b3 Ba6 4.c4 Be7 5.Rad1 Rb8 6.h3 a4 7.a3
00:00:07 13.00 0.21 1.Be3 e6 2.Qd3 a5 3.b3 Ba6 4.c4 Be7 5.Rad1 Rb8 6.h3 a4 7.a3
00:00:14 14.00 0.22 1.Be3 e6 2.c4 Rb8 3.b3 a5 4.Nd2 Be7 5.Qg4 g6 6.Rad1 Ba6
00:00:25 15.00 0.22 1.Be3 e6 2.c4 Rb8 3.b3 Be7 4.a3 Qc7 5.Nd2 O-O 6.Qg4 Qxe5 7.Bxc5 Qf6 8.Bxe7 Qxe7
00:00:39 15.18 0.22 1.e6 [ FAIL-HIGH ] research with a wider window
00:00:45 15.18 0.60 1.e6 Bxe6 2.Rxe6 fxe6 3.Ne5 Qd6 4.Qh5 g6 5.Nxg6 hxg6 6.Qxh8 e5
00:01:33 16.00 0.86 1.e6 f6 2.Bf4 Qb6 3.c4 Bb7 4.Re3 O-O-O 5.Rb3 Qa7 6.Qe1 g5 7.Bg3 a5 8.cxd5 cxd5 9.Rd1
00:02:05 17.00 0.85 1.e6 Bxe6 2.Rxe6 fxe6 3.Ne5 g6 4.Qf3 Qc8 5.Bg5 Ra7 6.Qf7
Although 1.e6 again is found earlier due to the smaller window there are negative effects also, note that at depth 16 and 17 the search has become slower due to a FAIL-LOW's because the window became too narrow and a research was needed.
I am not sure if all of this is helpful
The score of a move is only known accurately if it's within the search window. A fail high is when a move scores above the window, a fail low is when it scores below the window. Only the first move (=the best move of the previous iteration) is searched with a nonzero window - the rest are searched with a zero window centered on the score of the best move.
When a move fails high, we know it's better than the current best move (or, in the case of the first move, that it's much better than we thought), but we don't know how much better so we have to re-search it.
When a regular move fails low, we know it's not better than the current best move (and we save time). When the first move fails low, we know that the move is clearly worse than we thought but we don't know by how much.
When a move fails high, we know it's better than the current best move (or, in the case of the first move, that it's much better than we thought), but we don't know how much better so we have to re-search it.
When a regular move fails low, we know it's not better than the current best move (and we save time). When the first move fails low, we know that the move is clearly worse than we thought but we don't know by how much.
In simple terms, a "fail high" is when a program finds that a move it is considering is actually noticeably better than it previously "thought". A "fail low" is when a program finds that a move it is considering is actually noticeably worse than it previously "thought".
Thank you very much to all of you for your kind and prompt help!
Due to your fantastic explanations even I begin to get a grasp ... ;-)
Best regards,
Sam
Due to your fantastic explanations even I begin to get a grasp ... ;-)
Best regards,
Sam
>in simple terms the meaning of a "Fail High"
Panic and pain. Something beyond control.
Here depth 30 was expected to complete in ~5 minutes,
but chessboard fail high and it is now started fifth hour of time wasting to count...
169: Tactics Marathon, 1543 ECM
8/8/4b1p1/2Bp3p/5P1P/1pK1Pk2/8/8 b - - 0 1
Analysis by Deep Rybka 4.1 w32:
1...Kf3-g4 2.Bc5-e7 d5-d4+ 3.e3xd4 Kg4xf4 4.Kc3-b2 Kf4-e4 5.Be7-f6 Be6-d5 6.Bf6-e5
-/+ (-0.80) Depth: 6 00:00:00 0kN
1...Kf3-g4 2.Bc5-e7 d5-d4+ 3.e3xd4 Kg4xf4 4.Kc3-b2 Kf4-e4 5.Be7-f6 Be6-d5 6.Bf6-e5 Ke4-e3 7.Be5-g7
-/+ (-0.84) Depth: 7 00:00:00 1kN
1...Kf3-g3 2.Bc5-e7 d5-d4+ 3.e3xd4 Kg3xf4 4.Kc3-b2 Kf4-e4 5.Be7-f6 Be6-d5 6.Bf6-e5 Ke4-e3 7.Be5-g7
-/+ (-0.90) Depth: 7 00:00:00 2kN
1...Kf3-g3 2.Bc5-e7 d5-d4+ 3.e3xd4 Kg3xf4 4.Kc3-b2 Kf4-e4 5.Be7-f6 Be6-d5 6.Bf6-e5 Ke4-e3 7.Be5-g7 Ke3-d3 8.Bg7-e5 Kd3-e3 9.Be5-g7 Ke3-d3 10.Bg7-e5 Kd3-e3 11.Be5-g7 Ke3-d3 12.Bg7-e5 Kd3-e3 13.Be5-g7 Ke3-d3 14.Bg7-e5 Kd3-e3 15.Be5-g7 Ke3-d3 16.Bg7-e5 Kd3-e3
-/+ (-0.90) Depth: 8 00:00:00 3kN
1...Kf3-g3 2.Bc5-e7 d5-d4+ 3.e3xd4 Kg3xf4 4.Kc3-b2 Kf4-e4 5.Be7-f6 Be6-d5 6.Bf6-e5 Ke4-e3 7.Be5-g7 Ke3-d3 8.Bg7-e5 Kd3-e3 9.Be5-g7 Ke3-d3 10.Bg7-e5 Kd3-e3 11.Be5-g7 Ke3-d3 12.Bg7-e5 Kd3-e3 13.Be5-g7 Ke3-d3 14.Bg7-e5 Kd3-e3 15.Be5-g7 Ke3-d3 16.Bg7-e5 Kd3-e3
-/+ (-0.90) Depth: 9 00:00:00 3kN
1...Kf3-g3 2.Bc5-e7 d5-d4+ 3.e3xd4 Kg3xf4 4.Kc3-b2 Kf4-e4 5.Be7-f6 Be6-d5 6.Bf6-e5 Ke4-e3 7.Be5-g7 Ke3-d2 8.Bg7-f6
-/+ (-0.90) Depth: 10 00:00:00 4kN
1...Kf3-g3 2.Bc5-e7 d5-d4+ 3.e3xd4 Kg3xf4 4.Kc3-b2 Kf4-e4 5.Be7-f6 Be6-d5 6.Bf6-e5 Ke4-e3 7.Be5-g7 Ke3-d2 8.Bg7-f6 Kd2-d3 9.Bf6-e5 Kd3-e3 10.Be5-g7 Ke3-d2 11.Bg7-f6 Kd2-d3 12.Bf6-e5 Kd3-e3 13.Be5-g7 Ke3-d2 14.Bg7-f6 Kd2-d3 15.Bf6-e5 Kd3-e3 16.Be5-g7 Ke3-d2
-/+ (-0.90) Depth: 11 00:00:00 6kN
1...Kf3-g3 2.Bc5-e7 d5-d4+ 3.e3xd4 Kg3xf4 4.Kc3-b2 Kf4-e4 5.Be7-f6 Be6-d5 6.Bf6-e5 Ke4-e3 7.Be5-g7 Ke3-d2 8.Bg7-f6 Kd2-d3 9.Bf6-e5 Kd3-e3 10.Be5-g7 Ke3-d2 11.Bg7-f6 Kd2-d3 12.Bf6-e5 Kd3-e3 13.Be5-g7 Ke3-d2 14.Bg7-f6 Kd2-d3 15.Bf6-e5 Kd3-e3 16.Be5-g7 Ke3-d2
-/+ (-0.90) Depth: 12 00:00:00 12kN
1...Kf3-g3 2.Bc5-e7 d5-d4+ 3.e3xd4 Kg3xf4 4.Kc3-b2 Kf4-e4 5.Be7-f6 Be6-d5 6.Bf6-e5 Ke4-e3 7.Be5-g7 Ke3-d2 8.Bg7-f6 Kd2-d3 9.Bf6-e5 Kd3-e3 10.Be5-g7 Ke3-d2 11.Bg7-f6 Kd2-d3 12.Bf6-e5 Kd3-e3 13.Be5-g7 Ke3-d2 14.Bg7-f6 Kd2-d3 15.Bf6-e5 Kd3-e3 16.Be5-g7 Ke3-d2
-/+ (-0.90) Depth: 13 00:00:00 18kN
1...Kf3-g3 2.Bc5-e7 d5-d4+ 3.e3xd4[] Kg3xf4 4.Kc3-b2 Kf4-e4 5.Be7-f6 Be6-d5 6.Bf6-e5 Ke4-e3 7.Be5-g7 Ke3-d2 8.Bg7-f6 Kd2-d3 9.Bf6-e5 Kd3-e3 10.Be5-g7 Ke3-d2 11.Bg7-f6 Kd2-d3 12.Bf6-e5 Kd3-e3 13.Be5-g7 Ke3-d2 14.Bg7-f6 Kd2-d3 15.Bf6-e5 Kd3-e3 16.Be5-g7 Ke3-d2
-/+ (-0.90) Depth: 14 00:00:00 29kN, tb=1
1...Kf3-g3 2.Bc5-e7 d5-d4+ 3.e3xd4[] Kg3xf4 4.Kc3-b2 Kf4-e4 5.Be7-f6 Be6-d5 6.Kb2-c3 Ke4-e3 7.Bf6-g5+ Ke3-f3 8.Bg5-c1 Kf3-e4 9.Bc1-b2 Ke4-f4 10.Bb2-c1+ Kf4-e4 11.Bc1-b2 Ke4-f4 12.Bb2-c1+ Kf4-e4 13.Bc1-b2 Ke4-f4 14.Bb2-c1+ Kf4-e4 15.Bc1-b2 Ke4-f4 16.Bb2-c1+ Kf4-e4
-/+ (-0.90) Depth: 15 00:00:00 47kN, tb=1
1...Kf3-g3 2.Bc5-e7 d5-d4+ 3.e3xd4[] Kg3xf4 4.Kc3-b2 Kf4-e4 5.Be7-f6 Be6-d5 6.Kb2-c3 Ke4-e3 7.Bf6-g5+ Ke3-f3 8.Bg5-c1 Kf3-e4 9.Bc1-g5 Bd5-c4 10.Bg5-d2 Ke4-f3 11.Bd2-c1 Bc4-d5 12.Bc1-g5 Kf3-e4 13.Bg5-h6
-/+ (-0.90) Depth: 16 00:00:00 102kN, tb=3
1...Kf3-g3 2.Bc5-e7 d5-d4+ 3.e3xd4[] Kg3xf4 4.Kc3-b2 Kf4-e4 5.Be7-f6 Be6-d5 6.Kb2-c3 Ke4-e3 7.Bf6-g5+ Ke3-f3 8.Bg5-c1 Kf3-e4 9.Bc1-g5 Bd5-c4 10.Bg5-d2 Bc4-g8 11.Bd2-g5 Bg8-f7 12.Bg5-h6 Bf7-d5 13.Bh6-c1 Bd5-e6 14.Bc1-g5 Be6-f7 15.Bg5-h6 Bf7-d5 16.Bh6-c1 Bd5-e6
-/+ (-0.90) Depth: 17 00:00:00 159kN, tb=8
1...Kf3-g3 2.Bc5-e7 d5-d4+ 3.e3xd4[] Kg3xf4 4.Kc3-b2 Kf4-e4 5.Be7-f6 Be6-d5 6.Kb2-c3 Ke4-e3 7.Bf6-g5+ Ke3-f3 8.Bg5-c1 Kf3-g4 9.Bc1-g5 Bd5-e6 10.Kc3-d3 Be6-c4+ 11.Kd3-c3 Kg4-g3 12.Kc3-b2 Kg3-f3 13.Bg5-d2 Bc4-d5 14.Bd2-c1 Kf3-e4 15.Kb2-c3 Bd5-e6 16.Bc1-g5 Be6-f7
-/+ (-0.90) Depth: 18 00:00:01 229kN, tb=12
1...Kf3-g3 2.Bc5-e7 d5-d4+ 3.e3xd4[] Kg3xf4 4.Kc3-b2 Kf4-e4 5.Be7-f6 Ke4-d3 6.Bf6-e5 Be6-d5 7.Be5-h8 Kd3-c4 8.Bh8-e5 Bd5-e6 9.Be5-g7 Be6-g8 10.Bg7-h8 Kc4-d3 11.Bh8-e5 Kd3-e4 12.Be5-g7 Bg8-d5 13.Bg7-f6 Ke4-d3 14.Bf6-e5 Kd3-c4 15.Be5-f6 Bd5-e4 16.Bf6-e5 Be4-f5
-/+ (-0.90) Depth: 19 00:00:01 326kN, tb=29
1...Kf3-g3 2.Bc5-e7 d5-d4+ 3.e3xd4[] Kg3xf4 4.Kc3-b2 Kf4-e4 5.Be7-f6 Ke4-d3 6.Bf6-e5 Be6-d5 7.Be5-h8 Kd3-c4 8.Bh8-e5 Bd5-e6 9.Be5-g7 Be6-g8 10.Bg7-h8 Kc4-d3 11.Bh8-e5 Kd3-e4 12.Be5-g7 Bg8-d5 13.Bg7-f6 Ke4-d3 14.Bf6-e5 Kd3-c4 15.Be5-f6 Bd5-e4 16.Bf6-e5 Be4-f5
-/+ (-0.90) Depth: 20 00:00:02 495kN, tb=42
1...Kf3-g3 2.Bc5-e7 d5-d4+ 3.e3xd4[] Kg3xf4 4.Kc3-b2 Kf4-e4 5.Be7-f6 Ke4-d3 6.Bf6-e5 Be6-d5 7.Be5-f6 Kd3-c4 8.Bf6-e5 Bd5-e6 9.Be5-g7 Be6-g8 10.Bg7-h8 Kc4-d3 11.Bh8-e5 Kd3-e4 12.Be5-f6 Bg8-d5 13.Kb2-c3 Ke4-e3 14.Bf6-e7 Ke3-e4 15.Be7-d8 Ke4-f4 16.Bd8-e7 Kf4-e4
-/+ (-0.90) Depth: 21 00:00:03 727kN, tb=72
1...Kf3-g3 2.Bc5-e7 d5-d4+ 3.e3xd4[] Kg3xf4 4.Kc3-b2 Kf4-e4 5.Be7-f6 Ke4-d3 6.Bf6-e5 Be6-d5 7.Be5-f6 Kd3-c4 8.Bf6-e5 Bd5-e6 9.Be5-g7 Be6-g8 10.Bg7-h8 Kc4-d3 11.Bh8-e5 Kd3-e4 12.Be5-f6 Bg8-e6 13.Bf6-g7 g6-g5 14.h4xg5 Ke4-f5 15.Bg7-f8 h5-h4 16.Bf8-h6 h4-h3
-/+ (-0.90) Depth: 22 00:00:05 1067kN, tb=154
1...Kf3-g3 2.Bc5-e7 d5-d4+ 3.e3xd4[] Kg3xf4 4.Kc3-b2 Kf4-e4 5.Be7-f6 Ke4-d3 6.Bf6-e5 Be6-d5 7.Be5-f6 Kd3-c4 8.Bf6-e5 Bd5-e6 9.Be5-g7 Be6-g8 10.Bg7-h8 Kc4-d3 11.Bh8-e5 Kd3-e4 12.Be5-f6 Bg8-e6 13.Bf6-g7 g6-g5 14.h4xg5 Ke4-f5 15.Bg7-f8 h5-h4 16.Bf8-h6 h4-h3
-/+ (-0.90) Depth: 23 00:00:08 1444kN, tb=282
1...Kf3-g3 2.Bc5-e7 d5-d4+ 3.e3xd4[] Kg3xf4 4.Kc3-b2 Kf4-e4 5.Be7-f6 Ke4-d3 6.Bf6-e5 Be6-d5 7.Be5-f6 Kd3-c4 8.Bf6-e5 Bd5-e6 9.Be5-g7 Be6-g8 10.Bg7-h8 Kc4-d3 11.Bh8-e5 Kd3-e4 12.Be5-f6 Bg8-e6 13.Bf6-g7 g6-g5 14.h4xg5 Ke4-f5 15.Bg7-f8 h5-h4 16.Bf8-h6 h4-h3
-/+ (-0.90) Depth: 24 00:00:11 2015kN, tb=457
1...Kf3-g3 2.Bc5-e7 d5-d4+ 3.e3xd4[] Kg3xf4 4.Kc3-b2 Kf4-e4 5.Be7-f6 Ke4-d3 6.Bf6-e5 Be6-d5 7.Be5-f6 Kd3-c4 8.Bf6-e5 Bd5-e6 9.Be5-g7 Be6-g8 10.Bg7-h8 Kc4-d3 11.Bh8-e5 Kd3-e4 12.Be5-f6 Bg8-f7 13.Kb2-c3 Ke4-f3 14.Bf6-g5 Bf7-d5 15.Bg5-c1 Kf3-g3 16.Bc1-g5 Bd5-e6
-/+ (-0.90) Depth: 25 00:00:17 3016kN, tb=840
1...Kf3-g3 2.Bc5-e7 d5-d4+ 3.e3xd4[] Kg3xf4 4.Kc3-b2 Kf4-e4 5.Be7-f6 Ke4-d3 6.Bf6-e5 Be6-d5 7.Be5-f6 Kd3-c4 8.Bf6-e5 Bd5-e6 9.Be5-g7 Be6-g8 10.Bg7-h8 Kc4-d3 11.Bh8-e5 Kd3-e4 12.Be5-f6 Bg8-f7 13.Kb2-c3 Ke4-f3 14.Bf6-g5 Bf7-d5 15.Bg5-c1 Kf3-g3 16.Bc1-g5 Bd5-e6
-/+ (-0.90) Depth: 26 00:00:27 4692kN, tb=1787
1...Kf3-g3 2.Bc5-e7 d5-d4+ 3.e3xd4[] Kg3xf4 4.Kc3-b2 Kf4-e4 5.Be7-f6 Ke4-d3 6.Bf6-e5 Be6-d5 7.Be5-f6 Kd3-c4 8.Bf6-e5 Bd5-e6 9.Be5-g7 Be6-g8 10.Bg7-h8 Kc4-d3 11.Bh8-e5 Kd3-e4 12.Be5-f6 Bg8-f7 13.Kb2-c3 Ke4-f3 14.Bf6-g5 Bf7-d5 15.Bg5-c1 Kf3-g3 16.Bc1-g5 Bd5-e6
-/+ (-0.90) Depth: 27 00:00:44 7243kN, tb=3520
1...Kf3-g3 2.Bc5-e7[] d5-d4+ 3.e3xd4[] Kg3xf4 4.Kc3-b2 Kf4-e4 5.Kb2-c3 Ke4-f3 6.Be7-d8 Kf3-g4 7.Bd8-g5 Kg4-g3 8.Kc3-d3 Kg3-f3 9.Bg5-d2 Be6-c4+ 10.Kd3-c3 Bc4-d5 11.Kc3-d3 Bd5-c4+ 12.Kd3-c3 Bc4-d5 13.Kc3-d3 Bd5-c4+ 14.Kd3-c3 Bc4-d5 15.Kc3-d3 Bd5-c4+ 16.Kd3-c3 Bc4-d5
-/+ (-0.90) Depth: 28 00:01:19 12333kN, tb=7652
1...Kf3-g3 2.Bc5-e7[] d5-d4+ 3.e3xd4[] Kg3xf4 4.Kc3-b2 Kf4-e4 5.Kb2-c3 Ke4-f3 6.Be7-d8 Kf3-g4 7.Bd8-g5 Kg4-g3 8.Kc3-d3 Kg3-f3 9.Bg5-d2 Be6-c4+ 10.Kd3-c3 Bc4-d5 11.Kc3-d3 Bd5-c4+ 12.Kd3-c3 Bc4-d5 13.Kc3-d3 Bd5-c4+ 14.Kd3-c3 Bc4-d5 15.Kc3-d3 Bd5-c4+ 16.Kd3-c3 Bc4-d5
-/+ (-0.90) Depth: 29 00:02:00 18994kN, tb=12640
1...Kf3-g3 2.Bc5-e7[] d5-d4+ 3.e3xd4[] Kg3xf4 4.Kc3-b2 Kf4-e4 5.Kb2-c3 Ke4-f3 6.Be7-d8 Kf3-g4 7.Bd8-g5 Kg4-g3 8.Kc3-d3 Kg3-f3 9.Bg5-d2 Be6-c4+ 10.Kd3-c3 Bc4-d5 11.Kc3-d3 Bd5-c4+ 12.Kd3-c3 Bc4-d5 13.Kc3-d3 Bd5-c4+ 14.Kd3-c3 Bc4-d5 15.Kc3-d3 Bd5-c4+ 16.Kd3-c3 Bc4-d5
-/+ (-0.90) Depth: 30 00:03:00 28804kN, tb=19859
1...g6-g5 2.f4xg5 d5-d4+ 3.e3xd4 Kf3-g3 4.g5-g6 Kg3xh4 5.Bc5-d6 Kh4-g5 6.g6-g7 h5-h4 7.Bd6-e5 Kg5-g4 8.Be5-b8 Kg4-h3 9.Bb8-c7 Kh3-g2 10.Bc7-e5 h4-h3
-/+ (-1.02 !) Depth: 30 00:31:48 292mN, tb=479357
1...g6-g5 2.f4xg5 d5-d4+ 3.e3xd4 Kf3-g3 4.g5-g6 Kg3xh4 5.Bc5-e7+ Kh4-h3 6.Kc3-d2 h5-h4 7.Kd2-c3 Kh3-g4
-/+ (-1.17 !) Depth: 30 00:39:41 373mN, tb=583694
1...g6-g5 2.f4xg5 d5-d4+ 3.e3xd4 Kf3-g3 4.g5-g6 Kg3xh4 5.Bc5-e7+ Kh4-h3 6.Kc3-d2 h5-h4 7.Kd2-c3 Kh3-g4 8.Be7-d6 h4-h3 9.g6-g7 Kg4-f3 10.Bd6-h2 Kf3-g2 11.Bh2-e5 h3-h2 12.Be5xh2 Kg2xh2[]
-+ (-1.57 !) Depth: 30 00:53:01 518mN, tb=757743
1...g6-g5 2.f4xg5 d5-d4+ 3.e3xd4 Kf3-g3 4.g5-g6 Kg3xh4 5.Bc5-e7+ Kh4-h3 6.Kc3-d2 h5-h4 7.Kd2-c3 Kh3-g4
-+ (-2.37 !) Depth: 30 01:13:34 770mN, tb=1100987
1...g6-g5 2.f4xg5 d5-d4+ 3.e3xd4 Kf3-g3 4.g5-g6 Kg3xh4 5.Bc5-e7+ Kh4-h3 6.Kc3-d2 h5-h4 7.Kd2-c3 Kh3-g4
-+ (-3.97 !) Depth: 30 01:48:41 1201mN, tb=1757609
1...g6-g5 2.f4xg5 d5-d4+ 3.e3xd4 Kf3-g3 4.g5-g6 Kg3xh4 5.Bc5-e7+ Kh4-h3 6.Kc3-d2 h5-h4 7.Kd2-c3 Kh3-g4
-+ (-7.17 !) Depth: 30 02:58:47 2053mN, tb=2968644
In correspondence chess, it's when a move "jumps" to either a much higher or much lower score. Fail high is when the mainline that you've built for over a game suddenly looks much better and you can't find better defenses from your opponent. It probably means you're going to win the game,but it could also mean your opponent had a fail high on the line that you're missing and that the best move of the opponent is currently being pruned by your analysis method, so changing to a better one to find shoots from the opponent is important.
Fail lows means the opposite, your main defensive line on the position suddenly falls when you analyze one move deeper, and all your other possible lines on the position also fall below this score. That's why it's important to have many different playable lines on the position that don't transpose, so that if one of them falls you have another one to "fall" to, or if your aim to draw the game, aiming for positions that are very sharp and both your opponent and you don't have many deviation options so you can force many moves without encountering a fail low.
Of course this also applies to extreme positions, if you're winning the game and face a fail low it means either the position is difficult to win or your opponent has found a drawing line and aiming for it, or if you are losing a game and hit a fail high it means you've found a line that may be your only saving plan, so you can start refuting other opponent's attacks (though this is rare, more common is having to find a way to reach a position where the engines have a very high score for your opponent and that are drawn anyway, hoping that your opponent goes for them).
Fail lows means the opposite, your main defensive line on the position suddenly falls when you analyze one move deeper, and all your other possible lines on the position also fall below this score. That's why it's important to have many different playable lines on the position that don't transpose, so that if one of them falls you have another one to "fall" to, or if your aim to draw the game, aiming for positions that are very sharp and both your opponent and you don't have many deviation options so you can force many moves without encountering a fail low.
Of course this also applies to extreme positions, if you're winning the game and face a fail low it means either the position is difficult to win or your opponent has found a drawing line and aiming for it, or if you are losing a game and hit a fail high it means you've found a line that may be your only saving plan, so you can start refuting other opponent's attacks (though this is rare, more common is having to find a way to reach a position where the engines have a very high score for your opponent and that are drawn anyway, hoping that your opponent goes for them).
In other words, any of "fails" means you or the opponent made a mistake previously and you found it just now...
I wonder if there are positions when engine first thinks of sudden "fail low" and then "high" on same line searching deeper. Or vise versa?
Then you can call it a complicated move if been made :)
I wonder if there are positions when engine first thinks of sudden "fail low" and then "high" on same line searching deeper. Or vise versa?
Then you can call it a complicated move if been made :)
I wonder if there are positions when engine first thinks of sudden "fail low" and then "high" on same line searching deeper. Or vise versa?
This is known as the stockfish syndrome...
This is known as the stockfish syndrome...
Then I would say Stockfish has too small "aspiration window" or something strange is going on.
No, all I ask is for a position with one tactical possibility and one another for other side to counterattack - isn't that possible?
No, all I ask is for a position with one tactical possibility and one another for other side to counterattack - isn't that possible?
Fail lows after fail highs and fail highs after fail lows are common occurrences between engines (what I call "false failing", in where the engine may keep adding "falses" as the search progresses, I've explained more about that here), and it's not related to the players making mistakes, but by the engines evaluating positions wrongly.
Stockfish's aspiration windows seem fine, but you'd still find huge changes of evaluation between positions, say, one move the score is 0.20, the next iteration it's 0.80, the next it's 0.00, the next is 0.40, the user doesn't know when to stop the engine and print the score in the analysis file, I'd suggest them just stopping using Stockfish for this position unless regardless of the instability Stockfish is suggesting top moves.
But it has gotten better, Stockfish 2.0 series would have the problem of a "false fail low after fail high", in where a move would false fail high, then false fail low, the move being abandoned and Stockfish wouldn't pick this move again, yet, when the user forced the move it turned out to be best (with the evaluation of the fail high staying), on a regular basis. A user even made a special version of Stockfish that fixed this (with FHFL Behavior=Restart iteration), but from Stockfish 2.1 forwards this problem seems to have been fixed by Stockfish developers as I've never seen this Fail-High-False-Fail-Low problem again (but I've seen it False-Fail-High-Real-Fail-Low, which means the developers didn't just hide the problem).
That's only in most cases, but just because there are "fails" doesn't mean any player has made any mistake. It could be one player knowing that the fail lows aren't real and just leading the opponent into positions where both sides are really 0.00 but the engines strongly favor the opponent, hoping that he thinks he's winning and overreach. There are probably other cases without mistakes in where engines think a move has failed and both players may think one side made a mistake, but it turns out the position is drawn all the way, along other cases where engines just don't know what's going on (it's common for an engine to fail high while another stays normal, and the latter turns out to be right. When the later also fail highs without mistakes, both are wrong. These are critical positions unless there's an engine that shows the right drawish score.)
Stockfish's aspiration windows seem fine, but you'd still find huge changes of evaluation between positions, say, one move the score is 0.20, the next iteration it's 0.80, the next it's 0.00, the next is 0.40, the user doesn't know when to stop the engine and print the score in the analysis file, I'd suggest them just stopping using Stockfish for this position unless regardless of the instability Stockfish is suggesting top moves.
But it has gotten better, Stockfish 2.0 series would have the problem of a "false fail low after fail high", in where a move would false fail high, then false fail low, the move being abandoned and Stockfish wouldn't pick this move again, yet, when the user forced the move it turned out to be best (with the evaluation of the fail high staying), on a regular basis. A user even made a special version of Stockfish that fixed this (with FHFL Behavior=Restart iteration), but from Stockfish 2.1 forwards this problem seems to have been fixed by Stockfish developers as I've never seen this Fail-High-False-Fail-Low problem again (but I've seen it False-Fail-High-Real-Fail-Low, which means the developers didn't just hide the problem).
>In other words, any of "fails" means you or the opponent made a mistake previously and you found it just now...
That's only in most cases, but just because there are "fails" doesn't mean any player has made any mistake. It could be one player knowing that the fail lows aren't real and just leading the opponent into positions where both sides are really 0.00 but the engines strongly favor the opponent, hoping that he thinks he's winning and overreach. There are probably other cases without mistakes in where engines think a move has failed and both players may think one side made a mistake, but it turns out the position is drawn all the way, along other cases where engines just don't know what's going on (it's common for an engine to fail high while another stays normal, and the latter turns out to be right. When the later also fail highs without mistakes, both are wrong. These are critical positions unless there's an engine that shows the right drawish score.)
> Then I would say Stockfish has too small "aspiration window" or something strange is going on.
It's the strange stuff. I remember Stockfish had some "obviously" incorrect code related to pruning, but fixing it made it weaker so they left it unfixed.
Powered by mwForum 2.27.4 © 1999-2012 Markus Wichitill