A question about draw detection in chess engines Let us look at this position.
[FEN &quot;4k3/8/8/p1p1p1p1/P1P1P1P1/8/8/4K3 w - - 0 1&quot;]

This is obviously a draw. Analyzing this with the Stockfish engine says that it is a balanced position. However, Stockfish does not recognize that it is a draw.
Slightly rearranging the pawns, we receive a similar position that is an obvious draw.
[FEN &quot;4k3/3p4/p1pPp3/P1P1P1p1/6P1/8/8/4K3 w - - 0 1&quot;]

Here, Stockfish says that white has an advantage of +0.7.
Where does this miscalculation come from? I understand that draws in these positions cannot be detected from tablebases, as there are still too many pieces on the board. It seems that these special positions are called Pawn Rams or Blockages.
The chess programming article about Blockage Detection provides code for detecting blockages, but I do not understand how it works.
What are the underlying factors that make draw detection so hard from a computational point of view?
I actually did the experiment and will answer now. Three main factors go into the evaluation (as king safety doesn't play the slightest role): material, space, and movability.
The effect of space is rather high at +1.4.
[FEN &quot;4k3/p1p1p1p1/P1P1P1P1/8/8/8/8/4K3 w - - 0 1&quot;]

Any useless doubled pawn is about +0.7, giving +4.2.
[FEN &quot;4k3/p1p1p1p1/P1P1P1P1/P1P1P1P1/8/8/8/4K3 w - - 0 1&quot;]

Don't underestimate agility, we're already at +5.9.
[FEN &quot;4k3/p1p1p1p1/P1P1P1P1/8/8/8/P1P1P1P1/4K3 w - - 0 1&quot;]

You can give White a useless bishop and scratch the 10.0 but I stop here, although it would be a fun challenge for the highest evaluation in a dead drawn position But +99.0 seems to be Lichess/Stockfish cutoff. :-)