annoying behaviour of stockfish in analysis

Discussion of chess software programming and technical issues.

Moderators: hgm, chrisw, Rebel

Uri Blass
Posts: 10632
Joined: Thu Mar 09, 2006 12:37 am
Location: Tel-Aviv Israel

annoying behaviour of stockfish in analysis

Post by Uri Blass »

When I analyze I often see cases when the main lime of stockfish start with 1.aa bb 2.cc when in the next iteration the main line is 1.cc bb 2.aa that lead exactly to the same position.

I wonder if it is possible to get advantage simply by pruning tranpositions in the principle variation

Example after 1.Nf3 Nf6 analysis by stockfish
The main line at iteration 34 is 2.d4 e6 3.c4 and the main line in iteration 35 is 2.c4 e6 3.d4 that lead to the same position


FEN: rnbqkb1r/pppppppp/5n2/8/8/5N2/PPPPPPPP/RNBQKB1R w KQkq - 2 2

Stockfish_24103109_x64_avx2:
Available processors: 0-7
Using 6 threads

34/49 00:18 59,697k 3,235k +0.23 d2-d4 e7-e6 c2-c4 d7-d5 Nb1-c3 Bf8-b4 Bc1-g5 h7-h6 Bg5xf6 Qd8xf6 e2-e3 c7-c5 c4xd5 e6xd5 Bf1-e2 c5xd4 Qd1xd4 Qf6xd4 Nf3xd4 Bc8-e6 Ra1-c1 Nb8-c6 Be2-b5 Be6-d7 Nd4-b3 a7-a6 Bb5-e2 Bd7-e6 a2-a3 Bb4-e7
35/38+ 00:19 61,979k 3,234k +0.26 d2-d4
35/39 00:19 63,140k 3,235k +0.27 c2-c4 e7-e6 d2-d4 d7-d5 Nb1-c3 Bf8-b4 Bc1-g5 h7-h6 Bg5xf6 Qd8xf6 e2-e3 c7-c5 c4xd5 e6xd5 Bf1-e2 Bb4xc3+ b2xc3 O-O O-O Nb8-d7 a2-a4 Qf6-e7 d4xc5 Nd7-f6 c3-c4 d5xc4

The idea is simply not to search 2.c4 e6 3.d4 when the main line is 2.d4 e6 3.c4 and assume in the search that after 2.c4 e6 white is not allowed to play 3.d4

Of course you can search later 2.c4 e6 3.d4 if the pv does not start with 1.d4 e6

Note that in case that the last move is not a pawn move or the last move allow enpassent capture you can say that the positions are not the same and may lead to different theoretical results but it is not the case here.
User avatar
RubiChess
Posts: 639
Joined: Fri Mar 30, 2018 7:20 am
Full name: Andreas Matthies

Re: annoying behaviour of stockfish in analysis

Post by RubiChess »

Uri Blass wrote: Sat Nov 09, 2024 9:45 am When I analyze I often see cases when the main lime of stockfish start with 1.aa bb 2.cc when in the next iteration the main line is 1.cc bb 2.aa that lead exactly to the same position.

I wonder if it is possible to get advantage simply by pruning tranpositions in the principle variation
Stockfish has found some black move dd in the next iteration so that 1.aa dd 2. ... is worse for white.
Uri Blass
Posts: 10632
Joined: Thu Mar 09, 2006 12:37 am
Location: Tel-Aviv Israel

Re: annoying behaviour of stockfish in analysis

Post by Uri Blass »

RubiChess wrote: Sat Nov 09, 2024 11:45 am
Uri Blass wrote: Sat Nov 09, 2024 9:45 am When I analyze I often see cases when the main lime of stockfish start with 1.aa bb 2.cc when in the next iteration the main line is 1.cc bb 2.aa that lead exactly to the same position.

I wonder if it is possible to get advantage simply by pruning tranpositions in the principle variation
Stockfish has found some black move dd in the next iteration so that 1.aa dd 2. ... is worse for white.
In this case it can be nice to see dd in the pv.
User avatar
RubiChess
Posts: 639
Joined: Fri Mar 30, 2018 7:20 am
Full name: Andreas Matthies

Re: annoying behaviour of stockfish in analysis

Post by RubiChess »

Uri Blass wrote: Sat Nov 09, 2024 2:37 pm
RubiChess wrote: Sat Nov 09, 2024 11:45 am
Uri Blass wrote: Sat Nov 09, 2024 9:45 am When I analyze I often see cases when the main lime of stockfish start with 1.aa bb 2.cc when in the next iteration the main line is 1.cc bb 2.aa that lead exactly to the same position.

I wonder if it is possible to get advantage simply by pruning tranpositions in the principle variation
Stockfish has found some black move dd in the next iteration so that 1.aa dd 2. ... is worse for white.
In this case it can be nice to see dd in the pv.
You still don't understand. aa was refuted by dd. The best line for white is 1.cc bb 2.aa as you see in the pv (of "next iteration").
Uri Blass
Posts: 10632
Joined: Thu Mar 09, 2006 12:37 am
Location: Tel-Aviv Israel

Re: annoying behaviour of stockfish in analysis

Post by Uri Blass »

RubiChess wrote: Sat Nov 09, 2024 2:58 pm
Uri Blass wrote: Sat Nov 09, 2024 2:37 pm
RubiChess wrote: Sat Nov 09, 2024 11:45 am
Uri Blass wrote: Sat Nov 09, 2024 9:45 am When I analyze I often see cases when the main lime of stockfish start with 1.aa bb 2.cc when in the next iteration the main line is 1.cc bb 2.aa that lead exactly to the same position.

I wonder if it is possible to get advantage simply by pruning tranpositions in the principle variation
Stockfish has found some black move dd in the next iteration so that 1.aa dd 2. ... is worse for white.
In this case it can be nice to see dd in the pv.
You still don't understand. aa was refuted by dd. The best line for white is 1.cc bb 2.aa as you see in the pv (of "next iteration").
I understand and if this is the case
I would like to see 1.aa dd in the pv before seeing 1.cc bb 2.aa

I mean
1.aa bb 2.cc at iteration 24 and in the next line
1.aa dd at iteration 25 and in the next line
1.cc bb aa at iteration 25.
User avatar
RubiChess
Posts: 639
Joined: Fri Mar 30, 2018 7:20 am
Full name: Andreas Matthies

Re: annoying behaviour of stockfish in analysis

Post by RubiChess »

Uri Blass wrote: Sat Nov 09, 2024 3:28 pm
RubiChess wrote: Sat Nov 09, 2024 2:58 pm
Uri Blass wrote: Sat Nov 09, 2024 2:37 pm
RubiChess wrote: Sat Nov 09, 2024 11:45 am
Uri Blass wrote: Sat Nov 09, 2024 9:45 am When I analyze I often see cases when the main lime of stockfish start with 1.aa bb 2.cc when in the next iteration the main line is 1.cc bb 2.aa that lead exactly to the same position.

I wonder if it is possible to get advantage simply by pruning tranpositions in the principle variation
Stockfish has found some black move dd in the next iteration so that 1.aa dd 2. ... is worse for white.
In this case it can be nice to see dd in the pv.
You still don't understand. aa was refuted by dd. The best line for white is 1.cc bb 2.aa as you see in the pv (of "next iteration").
I understand and if this is the case
I would like to see 1.aa dd in the pv before seeing 1.cc bb 2.aa

I mean
1.aa bb 2.cc at iteration 24 and in the next line
1.aa dd at iteration 25 and in the next line
1.cc bb aa at iteration 25.
No serious engine does that kind of output.
Notice that 1.aa dd doesn't cause a fail low. Its score is just superseeded by 1.cc bb aa in the very same iteration.
One line of output per iteration (or fail high/low).
Uri Blass
Posts: 10632
Joined: Thu Mar 09, 2006 12:37 am
Location: Tel-Aviv Israel

Re: annoying behaviour of stockfish in analysis

Post by Uri Blass »

RubiChess wrote: Sat Nov 09, 2024 3:36 pm
Uri Blass wrote: Sat Nov 09, 2024 3:28 pm
RubiChess wrote: Sat Nov 09, 2024 2:58 pm
Uri Blass wrote: Sat Nov 09, 2024 2:37 pm
RubiChess wrote: Sat Nov 09, 2024 11:45 am
Uri Blass wrote: Sat Nov 09, 2024 9:45 am When I analyze I often see cases when the main lime of stockfish start with 1.aa bb 2.cc when in the next iteration the main line is 1.cc bb 2.aa that lead exactly to the same position.

I wonder if it is possible to get advantage simply by pruning tranpositions in the principle variation
Stockfish has found some black move dd in the next iteration so that 1.aa dd 2. ... is worse for white.
In this case it can be nice to see dd in the pv.
You still don't understand. aa was refuted by dd. The best line for white is 1.cc bb 2.aa as you see in the pv (of "next iteration").
I understand and if this is the case
I would like to see 1.aa dd in the pv before seeing 1.cc bb 2.aa

I mean
1.aa bb 2.cc at iteration 24 and in the next line
1.aa dd at iteration 25 and in the next line
1.cc bb aa at iteration 25.
No serious engine does that kind of output.
Notice that 1.aa dd doesn't cause a fail low. Its score is just superseeded by 1.cc bb aa in the very same iteration.
One line of output per iteration (or fail high/low).

The explanation of dd is cetainly not correct in the following position that I composed when there are 2 equal moves because every dd that you put is an obvious blunder that lose a drawn position.

Stockfish changed its mind from Rexe6 at iteration 11 to to Rhxe6 at iteration 12 to Rexe6 again at iteraion 21(I used 6 cores so this result is not deterministic).

Note that the position cannot happen in a chess game because white pawn structure is illegal but I am sure I can change it to a legal position and it seems that the same problem happen if I put the white pawn at d3 instead of c3.


[d]8/1ppk4/2q1q2R/1ppp4/8/1PP5/1PPPR3/4K3 w - - 0 1
8/1ppk4/2q1q2R/1ppp4/8/1PP5/1PPPR3/4K3 w - - 0 1

Stockfish_24103109_x64_avx2:
Available processors: 0-7
Using 6 threads
info string NNUE evaluation using nn-1cedc0ffeeee.nnue (133MiB, (22528, 3072, 15, 32, 1))
info string NNUE evaluation using nn-37f18f62d772.nnue (6MiB, (22528, 128, 15, 32, 1))
1/6 00:00 159 80k +2.07 Rh6-h7+ Qe6-e7 Rh7xe7+ Kd7-d6
2/9 00:00 885 443k +0.03 Re2xe6 Qc6xe6+ Rh6xe6 Kd7xe6
3/5 00:00 1k 629k +0.03 Re2xe6 Qc6xe6+ Rh6xe6 Kd7xe6
4/5 00:00 2k 854k -0.02 Re2xe6 Qc6xe6+ Rh6xe6 Kd7xe6
5/5 00:00 2k 882k -0.02 Re2xe6 Qc6xe6+ Rh6xe6 Kd7xe6
6/7 00:00 3k 1,390k +0.05 Re2xe6 Qc6xe6+ Rh6xe6 Kd7xe6 Ke1-f1 Ke6-f5
7/6 00:00 3k 1,512k +0.06 Re2xe6 Qc6xe6+ Rh6xe6 Kd7xe6 Ke1-e2
8/8 00:00 4k 1,265k +0.07 Re2xe6 Qc6xe6+ Rh6xe6 Kd7xe6 Ke1-f2 d5-d4
9/16 00:00 28k 3,538k -0.04 Re2xe6 Qc6xe6+ Rh6xe6 Kd7xe6 Ke1-e2 Ke6-e5 b3-b4 c5xb4 c3xb4 Ke5-e4 d2-d3+ Ke4-f4 Ke2-f2 d5-d4 Kf2-e2
10/17 00:00 40k 3,635k -0.06 Re2xe6 Qc6xe6+ Rh6xe6 Kd7xe6 Ke1-e2 Ke6-e5 b3-b4 c5xb4 c3xb4 Ke5-e4 Ke2-f2 Ke4-f4 Kf2-e2 d5-d4 Ke2-d3 Kf4-e5
11/18 00:00 61k 3,594k -0.05 Re2xe6 Qc6xe6+ Rh6xe6 Kd7xe6 Ke1-e2 Ke6-e5 Ke2-e3 b5-b4 c3xb4 c5xb4 c2-c3 b7-b5 Ke3-d3
12/20 00:00 104k 2,601k -0.06 Rh6xe6 Qc6xe6 Re2xe6 Kd7xe6 Ke1-f2 b5-b4 c3xb4 c5xb4 Kf2-e3 Ke6-e5 c2-c3 b7-b6 Ke3-d3 Ke5-d6 c3xb4
13/22 00:00 125k 2,510k -0.06 Rh6xe6 Qc6xe6 Re2xe6 Kd7xe6 Ke1-f2 Ke6-e5 Kf2-e3 b5-b4 c3xb4 c5xb4 c2-c3 b7-b6 Ke3-d3 Ke5-e6 c3xb4 Ke6-d6 Kd3-e3 Kd6-e5 b4-b5 d5-d4+ Ke3-d3
14/21 00:00 133k 2,378k -0.06 Rh6xe6 Qc6xe6 Re2xe6 Kd7xe6 Ke1-f2 Ke6-e5 Kf2-e3 b5-b4 c3xb4 c5xb4 c2-c3 b7-b6 Ke3-d3 Ke5-e6 c3-c4
15/26 00:00 184k 2,185k -0.05 Rh6xe6 Qc6xe6 Re2xe6 Kd7xe6 Ke1-f2 Ke6-e5 Kf2-e3 b5-b4 c3xb4 c5xb4 c2-c3 b7-b6 Ke3-d3 Ke5-e6 Kd3-e3 Ke6-d6 c3xb4 b6-b5 Ke3-f4 Kd6-e6
16/27 00:00 241k 2,170k -0.05 Rh6xe6 Qc6xe6 Re2xe6 Kd7xe6 Ke1-f2 Ke6-e5 Kf2-e3 c5-c4 b3-b4 b7-b6 b2-b3 c7-c6 b3xc4 b5xc4 d2-d3 b6-b5 Ke3-d2 Ke5-d6 Kd2-e3
17/27 00:00 286k 2,170k -0.05 Rh6xe6 Qc6xe6 Re2xe6 Kd7xe6 Ke1-f2 Ke6-e5 Kf2-e3 c5-c4 b3-b4 c7-c6 d2-d3 c4xd3 c2xd3 d5-d4+ Ke3-e2 Ke5-d5 Ke2-f3 b7-b6 c3xd4 Kd5xd4 Kf3-e2 c6-c5 Ke2-d2
18/31 00:00 376k 2,126k -0.06 Rh6xe6 Qc6xe6 Re2xe6 Kd7xe6 Ke1-f2 Ke6-e5 Kf2-e3 c5-c4 b3-b4 b7-b6 b2-b3 c7-c6 b3xc4 b5xc4 d2-d3 c4xd3 c2xd3 d5-d4+ c3xd4+ Ke5-d5
19/32 00:00 505k 2,243k -0.03 Rh6xe6 Qc6xe6 Re2xe6 Kd7xe6 Ke1-f2 Ke6-e5 Kf2-e3 d5-d4+ c3xd4+ c5xd4+ Ke3-f3 b5-b4 d2-d3 Ke5-f5 Kf3-g3 c7-c6 Kg3-f3 b7-b6
20/32 00:00 654k 2,319k -0.03 Rh6xe6 Qc6xe6 Re2xe6 Kd7xe6 Ke1-f2 Ke6-f6 b3-b4 c5-c4 Kf2-e2 Kf6-e6 Ke2-f2 Ke6-f5 Kf2-f3 c7-c6 d2-d4 c4xd3/ep c2xd3 Kf5-e5 Kf3-g4 d5-d4 Kg4-g3 d4xc3 b2xc3
21/33 00:00 719k 2,318k -0.03 Re2xe6 Qc6xe6+ Rh6xe6 Kd7xe6 Ke1-f2 Ke6-f6 b3-b4 c5-c4 Kf2-e2 Kf6-f5 Ke2-f3 Kf5-e5 Kf3-e3 c7-c6 d2-d4+ c4xd3/ep c2xd3 d5-d4+ Ke3-f2 b7-b6 Kf2-f3 c6-c5 b4xc5 d4xc3 b2xc3 b6xc5 Kf3-e2 Ke5-e6
22/34 00:00 924k 2,457k 0.00 Re2xe6 Qc6xe6+ Rh6xe6 Kd7xe6 Ke1-f2 Ke6-f6 b3-b4 c5-c4 Kf2-e2 Kf6-f5 Ke2-f3 c7-c6 d2-d4 c4xd3/ep c2xd3 Kf5-e5 Kf3-e3 d5-d4+ c3xd4+ Ke5-d5 b2-b3 b7-b6 Ke3-e2 Kd5xd4 Ke2-d2 Kd4-d5 Kd2-e2
23/18 00:00 1,022k 2,516k 0.00 Re2xe6 Qc6xe6+ Rh6xe6 Kd7xe6 Ke1-f2 Ke6-f6 b3-b4 c5-c4 Kf2-e2 Kf6-f5 Ke2-f3 c7-c6 d2-d4 Kf5-g5 Kf3-g3 Kg5-f5 Kg3-f3
24/26 00:00 1,043k 2,526k 0.00 Re2xe6 Qc6xe6+ Rh6xe6 Kd7xe6 Ke1-f2 Ke6-f6 b3-b4 c5-c4 Kf2-e2 Kf6-f5 Ke2-f3 c7-c6 d2-d4 Kf5-g5 Kf3-g3 Kg5-f5 Kg3-f3 b7-b6 Kf3-e3 Kf5-g4 Ke3-f2 Kg4-f4 Kf2-e2 Kf4-e4 Ke2-f2
25/18 00:00 1,055k 2,524k 0.00 Re2xe6 Qc6xe6+ Rh6xe6 Kd7xe6 Ke1-f2 Ke6-f6 b3-b4 c5-c4 Kf2-e2 Kf6-f5 Ke2-f3 c7-c6 d2-d4 Kf5-g5 Kf3-g3 Kg5-f5 Kg3-f3
26/18 00:00 1,075k 2,530k 0.00 Re2xe6 Qc6xe6+ Rh6xe6 Kd7xe6 Ke1-f2 Ke6-f6 b3-b4 c5-c4 Kf2-e2 Kf6-f5 Ke2-f3 c7-c6 d2-d4 Kf5-g5 Kf3-g3 Kg5-f5 Kg3-f3
27/18 00:00 1,168k 2,523k 0.00 Re2xe6 Qc6xe6+ Rh6xe6 Kd7xe6 Ke1-f2 Ke6-f6 b3-b4 c5-c4 Kf2-e2 Kf6-f5 Ke2-f3 c7-c6 d2-d4 Kf5-g5 Kf3-g3 Kg5-f5 Kg3-f3
28/42 00:00 1,272k 2,544k 0.00 Re2xe6 Qc6xe6+ Rh6xe6 Kd7xe6 Ke1-f2 Ke6-f6 b3-b4 c5-c4 Kf2-e2 Kf6-f5 Ke2-f3 c7-c6 d2-d4 c4xd3/ep c2xd3 Kf5-e5 b2-b3 b7-b6 Kf3-e3 d5-d4+ c3xd4+ Ke5-d5 Ke3-e2 Kd5xd4 Ke2-d2 c6-c5 b4xc5 b6xc5 Kd2-c2 Kd4-d5 Kc2-d2 Kd5-d6 Kd2-e3 Kd6-e7 Ke3-f3
29/25 00:00 1,517k 2,576k 0.00 Re2xe6 Qc6xe6+ Rh6xe6 Kd7xe6 Ke1-f2 b5-b4 c3xb4 c5xb4 Kf2-f3 Ke6-e5 Kf3-e3 d5-d4+ Ke3-f3 Ke5-f5 d2-d3 b7-b6 Kf3-g3 b6-b5 Kg3-f3 c7-c6 Kf3-g3 Kf5-g5 Kg3-f3 Kg5-f5
30/24 00:00 1,652k 2,606k 0.00 Re2xe6 Qc6xe6+ Rh6xe6 Kd7xe6 Ke1-f2 b5-b4 c3xb4 c5xb4 Kf2-f3 Ke6-e5 Kf3-e3 d5-d4+ Ke3-f3 Ke5-f5 d2-d3 b7-b6 Kf3-g3 c7-c6 Kg3-f3 b6-b5 Kf3-g3 Kf5-g5 Kg3-f3
31/20 00:00 1,714k 2,609k 0.00 Re2xe6 Qc6xe6+ Rh6xe6 Kd7xe6 Ke1-f2 b5-b4 c3xb4 c5xb4 Kf2-f3 Ke6-e5 Kf3-e3 d5-d4+ Ke3-f3 Ke5-f5 d2-d3 b7-b6 Kf3-g3 Kf5-g5 Kg3-f3
32/21 00:00 2,014k 2,633k 0.00 Re2xe6 Qc6xe6+ Rh6xe6 Kd7xe6 Ke1-f2 b5-b4 c3xb4 c5xb4 Kf2-f3 Ke6-e5 Kf3-e3 d5-d4+ Ke3-f3 Ke5-f5 d2-d3 b7-b6 Kf3-g3 Kf5-g5 Kg3-f3 Kg5-f5
33/20 00:00 2,132k 2,632k 0.00 Re2xe6 Qc6xe6+ Rh6xe6 Kd7xe6 Ke1-f2 b5-b4 c3xb4 c5xb4 Kf2-f3 Ke6-e5 Kf3-e3 d5-d4+ Ke3-f3 Ke5-f5 d2-d3 b7-b5 Kf3-g3 Kf5-g5 Kg3-f3
34/20 00:00 2,322k 2,623k 0.00 Re2xe6 Qc6xe6+ Rh6xe6 Kd7xe6 Ke1-f2 b5-b4 c3xb4 c5xb4 Kf2-f3 Ke6-e5 Kf3-e3 d5-d4+ Ke3-f3 Ke5-f5 d2-d3 b7-b5 Kf3-g3 Kf5-g5 Kg3-f3
35/24 00:00 2,531k 2,636k 0.00 Re2xe6 Qc6xe6+ Rh6xe6 Kd7xe6 Ke1-f2 b5-b4 c3xb4 c5xb4 Kf2-f3 Ke6-e5 Kf3-e3 d5-d4+ Ke3-f3 Ke5-f5 d2-d3 b7-b6 Kf3-g3 b6-b5 Kg3-f3 c7-c6 Kf3-g3 Kf5-g5 Kg3-f3
36/24 00:01 3,071k 2,652k 0.00 Re2xe6 Qc6xe6+ Rh6xe6 Kd7xe6 Ke1-f2 b5-b4 c3xb4 c5xb4 Kf2-f3 Ke6-e5 Kf3-e3 d5-d4+ Ke3-f3 Ke5-f5 d2-d3 b7-b6 Kf3-g3 b6-b5 Kg3-f3 c7-c6 Kf3-g3 Kf5-g5 Kg3-f3
37/24 00:01 3,549k 2,635k 0.00 Re2xe6 Qc6xe6+ Rh6xe6 Kd7xe6 Ke1-f2 b5-b4 c3xb4 c5xb4 Kf2-f3 Ke6-e5 Kf3-e3 d5-d4+ Ke3-f3 Ke5-f5 d2-d3 b7-b6 Kf3-g3 b6-b5 Kg3-f3 c7-c6 Kf3-g3 Kf5-g5 Kg3-f3
38/24 00:01 3,811k 2,682k 0.00 Re2xe6 Qc6xe6+ Rh6xe6 Kd7xe6 Ke1-f2 b5-b4 c3xb4 c5xb4 Kf2-f3 Ke6-e5 Kf3-e3 d5-d4+ Ke3-f3 Ke5-f5 d2-d3 b7-b6 Kf3-g3 b6-b5 Kg3-f3 c7-c6 Kf3-g3 Kf5-g5 Kg3-f3
39/26 00:01 4,205k 2,739k 0.00 Re2xe6 Qc6xe6+ Rh6xe6 Kd7xe6 Ke1-f2 Ke6-e5 Kf2-e3 b5-b4 c3xb4 c5xb4 c2-c3 b4xc3 b2xc3 c7-c5 d2-d3 d5-d4+ c3xd4+ c5xd4+ Ke3-f3 Ke5-f5 b3-b4 b7-b5 Kf3-g3 Kf5-g5 Kg3-f3
40/59 00:02 6,649k 2,744k 0.00 Re2xe6 Qc6xe6+ Rh6xe6 Kd7xe6 Ke1-f2 Ke6-e5 Kf2-e3 b5-b4 c3xb4 c5xb4 c2-c3 b4xc3 b2xc3 c7-c5 d2-d3 d5-d4+ c3xd4+ c5xd4+ Ke3-f3 Ke5-f5 b3-b4 b7-b5 Kf3-g3 Kf5-g5 Kg3-f3
41/28 00:02 7,102k 2,780k 0.00 Re2xe6 Qc6xe6+ Rh6xe6 Kd7xe6 Ke1-f2 Ke6-e5 Kf2-e3 b5-b4 c3xb4 c5xb4 c2-c3 b4xc3 b2xc3 c7-c5 d2-d3 b7-b5 b3-b4 c5xb4 c3xb4 d5-d4+ Ke3-e2 Ke5-e6 Ke2-f2 Ke6-f6 Kf2-g2 Kf6-g6 Kg2-f2
42/26 00:02 7,648k 2,801k 0.00 Re2xe6 Qc6xe6+ Rh6xe6 Kd7xe6 Ke1-f2 Ke6-e5 Kf2-e3 b5-b4 c3xb4 c5xb4 c2-c3 b4xc3 b2xc3 c7-c5 d2-d3 d5-d4+ c3xd4+ c5xd4+ Ke3-f3 Ke5-f5 b3-b4 b7-b5 Kf3-g3 Kf5-g5 Kg3-f3
43/27 00:02 7,997k 2,822k 0.00 Re2xe6 Qc6xe6+ Rh6xe6 Kd7xe6 Ke1-f2 Ke6-e5 Kf2-e3 b5-b4 c3xb4 c5xb4 c2-c3 b4xc3 b2xc3 c7-c5 d2-d3 d5-d4+ c3xd4+ c5xd4+ Ke3-f3 Ke5-f5 b3-b4 b7-b5 Kf3-g3 Kf5-g5 Kg3-f3 Kg5-f5
44/31 00:03 8,878k 2,875k 0.00 Re2xe6 Qc6xe6+ Rh6xe6 Kd7xe6 Ke1-f2 Ke6-e5 Kf2-e3 b5-b4 c3xb4 c5xb4 c2-c3 b4xc3 b2xc3 c7-c5 d2-d3 b7-b6 b3-b4 c5xb4 c3xb4 d5-d4+ Ke3-f3 Ke5-f5 Kf3-g3 Kf5-g5 Kg3-f3 Kg5-f5
45/26 00:03 10,477k 2,920k 0.00 Re2xe6 Qc6xe6+ Rh6xe6 Kd7xe6 Ke1-f2 Ke6-e5 Kf2-e3 b5-b4 c3xb4 c5xb4 c2-c3 b4xc3 b2xc3 c7-c5 d2-d3 d5-d4+ c3xd4+ c5xd4+ Ke3-f3 Ke5-f5 b3-b4 b7-b5 Kf3-g3 Kf5-g5 Kg3-f3
46/23 00:03 11,069k 2,950k 0.00 Re2xe6 Qc6xe6+ Rh6xe6 Kd7xe6 Ke1-f2 Ke6-e5 Kf2-e3 b5-b4 c3xb4 c5xb4 c2-c3 b4xc3 b2xc3 c7-c6 d2-d4+ Ke5-f5 Ke3-f3 b7-b6 b3-b4 Kf5-g5 Kf3-g3 Kg5-f5
47/25 00:04 13,183k 3,045k 0.00 Re2xe6 Qc6xe6+ Rh6xe6 Kd7xe6 Ke1-f2 Ke6-e5 Kf2-e3 b5-b4 c3xb4 c5xb4 c2-c3 b4xc3 b2xc3 c7-c6 d2-d4+ Ke5-f5 Ke3-f3 b7-b6 b3-b4 b6-b5 Kf3-e3 Kf5-g5 Ke3-f3 Kg5-f5
48/37 00:05 16,516k 3,118k 0.00 Re2xe6 Qc6xe6+ Rh6xe6 Kd7xe6 Ke1-f2 Ke6-e5 Kf2-e3 b5-b4 c3xb4 c5xb4 c2-c3 b4xc3 b2xc3 b7-b5 d2-d4+ Ke5-d6 b3-b4 Kd6-e6 Ke3-f4 Ke6-f6 Kf4-g4 Kf6-g6 Kg4-f4 Kg6-f6
User avatar
RubiChess
Posts: 639
Joined: Fri Mar 30, 2018 7:20 am
Full name: Andreas Matthies

Re: annoying behaviour of stockfish in analysis

Post by RubiChess »

Uri Blass wrote: Sat Nov 09, 2024 3:51 pm The explanation of dd is cetainly not correct in the following position that I composed when there are 2 equal moves because every dd that you put is an obvious blunder that lose a drawn position.
Then take this as an explanation:
Uri Blass wrote: Sat Nov 09, 2024 3:51 pm Using 6 threads
Thread voting probably takes the thread with the best score and uses its pv.
So in this case indeed some extra code *could* scan this pv if it reaches a transposition of the old pv.
But still.. changing the pv to the old one could be wrong as I explained.
Uri Blass
Posts: 10632
Joined: Thu Mar 09, 2006 12:37 am
Location: Tel-Aviv Israel

Re: annoying behaviour of stockfish in analysis

Post by Uri Blass »

RubiChess wrote: Sat Nov 09, 2024 4:05 pm
Uri Blass wrote: Sat Nov 09, 2024 3:51 pm The explanation of dd is cetainly not correct in the following position that I composed when there are 2 equal moves because every dd that you put is an obvious blunder that lose a drawn position.
Then take this as an explanation:
Uri Blass wrote: Sat Nov 09, 2024 3:51 pm Using 6 threads
Thread voting probably takes the thread with the best score and uses its pv.
So in this case indeed some extra code *could* scan this pv if it reaches a transposition of the old pv.
Using more than one thread is certainly not the only explanation.

I tried with one thread and got the following by stockfish and berserk:

[d]8/1ppk4/2q1q2R/1ppp4/8/1P1P4/1PPPR3/4K3 w - - 0 1

Stockfish_24103109_x64_avx2:
Available processors: 0-7
Using 1 thread
info string NNUE evaluation using nn-1cedc0ffeeee.nnue (133MiB, (22528, 3072, 15, 32, 1))
info string NNUE evaluation using nn-37f18f62d772.nnue (6MiB, (22528, 128, 15, 32, 1))
1/9 00:00 40 20k +1.11 Rh6-h7+ Qe6-e7 Rh7xe7+ Kd7-d6
2/6 00:00 276 138k -0.13 Re2xe6 Qc6xe6+ Rh6xe6 Kd7xe6
3/5 00:00 357 179k -0.13 Re2xe6 Qc6xe6+ Rh6xe6 Kd7xe6
4/5 00:00 525 263k -0.22 Re2xe6 Qc6xe6+ Rh6xe6 Kd7xe6
5/6 00:00 734 245k -0.22 Rh6xe6 Qc6xe6 Re2xe6 Kd7xe6 Ke1-e2

FEN: 8/1ppk4/2q1q2R/1ppp4/8/1P1P4/1PPPR3/4K3 w - - 0 1

Berserk13:
time -1 start 182492515 alloc 0 max 2147483647 depth 200 timeset 0 searchmoves 0
1/1 00:00 15 15k -0.42 Rh6xe6
2/2 00:00 31 31k +1.42 Rh6-h7+
3/3 00:00 44 44k +5.95 Rh6-h7+ Qe6-e7 Rh7xe7+
4/4 00:00 88 88k +0.88 Rh6-h7+ Qe6-e7 Re2xe7+
5/5 00:00 299 299k -0.65 Rh6xe6 Qc6xe6 Re2xe6 Kd7xe6 c2-c3
6/6 00:00 354 354k -0.35 Rh6xe6 Qc6xe6 Re2xe6
7/7 00:00 443 443k -0.41 Rh6xe6 Qc6xe6 Re2xe6 Kd7xe6 c2-c3 d5-d4
8/9 00:00 677 677k -0.30 Rh6xe6 Qc6xe6 Re2xe6 Kd7xe6 Ke1-e2 b7-b6 c2-c3
9/10 00:00 1k 1,155k -0.22 Rh6xe6 Qc6xe6 Re2xe6 Kd7xe6 Ke1-f2 b7-b6 Kf2-f3
10/11 00:00 2k 1,995k -0.08 Re2xe6 Qc6xe6+ Rh6xe6 Kd7xe6 Ke1-f2 d5-d4 Kf2-g3
User avatar
hgm
Posts: 28265
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: annoying behaviour of stockfish in analysis

Post by hgm »

RubiChess wrote: Sat Nov 09, 2024 3:36 pm
Uri Blass wrote: Sat Nov 09, 2024 3:28 pm I understand and if this is the case
I would like to see 1.aa dd in the pv before seeing 1.cc bb 2.aa

I mean
1.aa bb 2.cc at iteration 24 and in the next line
1.aa dd at iteration 25 and in the next line
1.cc bb aa at iteration 25.
No serious engine does that kind of output.
Notice that 1.aa dd doesn't cause a fail low. Its score is just superseeded by 1.cc bb aa in the very same iteration.
One line of output per iteration (or fail high/low).
It depends on your definition of 'serious engine'. All my egines would do that, in analysis mode. And it is quite natural. There are two ways to handle PV output: at the end of the iteration, or every time you find a move that scores above alpha in the root. The latter is more suitable for analysis, even if only because you get to see the PV for the next iteration a lot sooner. (And thus could abort the analysis if you are not interested in finding an alternative.)

If aa-bb-cc was the PV at iteration 24, iteration 25 would start searching aa. If it then finds dd to refute it, it would still be the highest score so far in iteration 25 (as no other moves were searched yet), so it would print aa-dd-... If it later gets to searching cc, and finds cc-bb-aa is better than cc-dd-..., it should print that as well.