What I don't like about Stockfish, ShashChess and other Engines. New Analysis features :-)

Discussion of chess software programming and technical issues.

Moderator: Ras

Hai
Posts: 700
Joined: Sun Aug 04, 2013 1:19 pm

What I don't like about Stockfish, ShashChess and other Engines. New Analysis features :-)

Post by Hai »

ShashChess has a lot of analysis features and also a lot of things you can tune, depends on the amount of cores and time you want to use.
= Best engine for analysis.
I analyzed a lot of positions with ShashChess and Stockfish and ... and we have always the same problems.

1.
Around 20% of them are never solved by ShashChess 39/40, doesn't matter how much time is used or how powerful the hardware is.
ShashChess doesn't see the best move.
Even MultiPV = 2 or 3 or 4 or 5 doesn't help.
But if MultiPV = 256 is used, all 20% are solved.
Each in less than 1 second.

Solution:
ShashChess with On/Off option to analyze every position, which occurs for the first time on the board, with MultiPV = 256 for 1 second.


2.
In 100% of games we have a lot of positions where X playable best moves in one position are 0.00.
But after a lot of time mostly 1-2 moves start to change the evaluation.
Sometimes +0.20 sometimes +0.50 Sometimes +0.90 or more.
The problem is that we analyze mostly with MultiPV = 1 to 5 but we don't know how many X playable best moves in one position are 0.00.
It could be 6 to 15 depends on the board position.
If the engine uses MultiPV = 1, the chances are extremely high that it will miss the one move with the +
If a game has only 60 moves x 2 players = 120 moves x multiple variation moves, we don't want to check every position every time for how many playable 0.00 moves we have here.
That would mean that we must change MultiPV = X in every position!!

Solution:
ShashChess with On/Off option.
If 2 or more playable best moves are 0.00, change MultiPV to the number of playable 0.00 moves.
Change MultiPV back, to what is used as standard like MultiPV = 1 to 5, after one best move is found.
Example:
We use MultiPV = 2
We have a position with 10 best playable 0.00 moves.
MultiPV changes automatically to MultiPV = 10
After (30 seconds) 1 move is +0.90 and 9 moves are 0.00.
MultiPV changes back to MultiPV = 2.
For comfort reasons we could show all the time 2 variations (MultiPV = 2).


3.
In some positions you have always some moves which are 0.00.
The evaluation will not change and it doesn't matter how powerful the hardware is or how much time we take.

Solution:
ShashChess with On/Off option.
If 2 or more moves have exactly the same evaluation, use MultiPV = 2 to 5 to analyze opponents counter moves for x seconds.
Example:
Our best 2 moves (A and B) are both 0.00.

Our best move A = 0.00
Opponents best counter moves are:
A = 0.00
B = 0.00
C = 0.00
D = 0.00
E = 0.00
= sum: 0.00

Our best move B = 0.00
Opponents best counter moves are:
A = 0.00
B = 0.20
C = 0.40
D = 0.60
E = 0.80
= sum: 2.00

It's obvious that we should play B instead A even if both are 0.00 for us, that doesn't mean the difficulty for our opponent is equal.

Instead of showing only:
A: 0.00 ...
B: 0.00 ...

Display:
A: 0.00 (+0.00) ...
B: 0.00 (+2.00) ...

Better show the best move first:
0.00 (+2.00) ...
0.00 (+0.00) ...

Feel free to share and improve :D
Uri Blass
Posts: 10921
Joined: Thu Mar 09, 2006 12:37 am
Location: Tel-Aviv Israel

Re: What I don't like about Stockfish, ShashChess and other Engines. New Analysis features :-)

Post by Uri Blass »

Hai wrote: Mon Nov 03, 2025 5:53 pm ShashChess has a lot of analysis features and also a lot of things you can tune, depends on the amount of cores and time you want to use.
= Best engine for analysis.
I analyzed a lot of positions with ShashChess and Stockfish and ... and we have always the same problems.

1.
Around 20% of them are never solved by ShashChess 39/40, doesn't matter how much time is used or how powerful the hardware is.
ShashChess doesn't see the best move.
Even MultiPV = 2 or 3 or 4 or 5 doesn't help.
But if MultiPV = 256 is used, all 20% are solved.
Each in less than 1 second.

Solution:
ShashChess with On/Off option to analyze every position, which occurs for the first time on the board, with MultiPV = 256 for 1 second.


2.
In 100% of games we have a lot of positions where X playable best moves in one position are 0.00.
But after a lot of time mostly 1-2 moves start to change the evaluation.
Sometimes +0.20 sometimes +0.50 Sometimes +0.90 or more.
The problem is that we analyze mostly with MultiPV = 1 to 5 but we don't know how many X playable best moves in one position are 0.00.
It could be 6 to 15 depends on the board position.
If the engine uses MultiPV = 1, the chances are extremely high that it will miss the one move with the +
If a game has only 60 moves x 2 players = 120 moves x multiple variation moves, we don't want to check every position every time for how many playable 0.00 moves we have here.
That would mean that we must change MultiPV = X in every position!!

Solution:
ShashChess with On/Off option.
If 2 or more playable best moves are 0.00, change MultiPV to the number of playable 0.00 moves.
Change MultiPV back, to what is used as standard like MultiPV = 1 to 5, after one best move is found.
Example:
We use MultiPV = 2
We have a position with 10 best playable 0.00 moves.
MultiPV changes automatically to MultiPV = 10
After (30 seconds) 1 move is +0.90 and 9 moves are 0.00.
MultiPV changes back to MultiPV = 2.
For comfort reasons we could show all the time 2 variations (MultiPV = 2).


3.
In some positions you have always some moves which are 0.00.
The evaluation will not change and it doesn't matter how powerful the hardware is or how much time we take.

Solution:
ShashChess with On/Off option.
If 2 or more moves have exactly the same evaluation, use MultiPV = 2 to 5 to analyze opponents counter moves for x seconds.
Example:
Our best 2 moves (A and B) are both 0.00.

Our best move A = 0.00
Opponents best counter moves are:
A = 0.00
B = 0.00
C = 0.00
D = 0.00
E = 0.00
= sum: 0.00

Our best move B = 0.00
Opponents best counter moves are:
A = 0.00
B = 0.20
C = 0.40
D = 0.60
E = 0.80
= sum: 2.00

It's obvious that we should play B instead A even if both are 0.00 for us, that doesn't mean the difficulty for our opponent is equal.

Instead of showing only:
A: 0.00 ...
B: 0.00 ...

Display:
A: 0.00 (+0.00) ...
B: 0.00 (+2.00) ...

Better show the best move first:
0.00 (+2.00) ...
0.00 (+0.00) ...

Feel free to share and improve :D
I do not know what position you talk about when stockfish or ShashChess solve only 80% and it is not clear to me how do you know that 20% wil never be solved if you give the engine more time.