I think those are good points. The pawn structure is not really rigid with four possible levers, on each side and then you would still have to consider what happens after that. That is more a matter for the search, so I don't think you can put it all in eval. If you leave it to the search then the eval and with that the output, which just reflects some leaf position will be "imperfect", in this case too high for the side up in material.Edmund wrote:In this position, if you just shuffle the pieces around a little and place the black rook and king to support the h5 push and the white mobile pieces further away, then this position will probably be won for black.Marc MP wrote:I'm sorry I "read" the article in one minute or so....
Do you think it would implementable in a chess engine without too much loss in time checking the conditions (say with extra pieces)?
You're a programmer if I'm not wrong? (if so you got to answer!)
Or in other combinations it may be possible that a piece would be sacrificed to create a dangerous passer.
The more possibilites one side has, the harder it becomes to generalize.
In my opinion the first problems with pieces to be approached should be with opposite colored bishops. eg in this position, if either side only had the bishop on the same square color as its pawns, the position would become trivial (knights, rooks and queens are more complicated). There are many more of these type of positions, where the stronger side can't do anything because of a wrong colored bishop.
Rainbow Serpent, because of the symmetry in the pawn position and because only four pawns are at the moment blocking each other evaluates this exactly like Stockfish with the only possible difference being slightly different mobility. The "Restrepo Routines" are helpless I'm afraid in this position.
This just for reference:
Code: Select all
if (ei.pi->blocked_pawns())
{
int closedPosition = count_1s<HasPopCnt>(ei.pi->blocked_pawns());
int nonBlockedPawns = pos.piece_count(WHITE, PAWN) + pos.piece_count(BLACK, PAWN) - closedPosition;
if ((closedPosition > 8 || (nonBlockedPawns <=3)) && !ei.pi->passed_pawns())
{
if (factor[WHITE] > 16)
factor[WHITE] = ScaleFactor(factor[WHITE] - ((closedPosition - nonBlockedPawns) * factor[WHITE])/64);
if (factor[BLACK] > 16)
factor[BLACK] = ScaleFactor(factor[BLACK] - ((closedPosition - nonBlockedPawns) * factor[BLACK])/64);
}
}
Just declaring this a draw or even changing the scale factor, when there are four pawns that could cause a breakthrough is not "obvious". I don't think it is that obvious even to a human player, you still have to calculate what happens if you try a breaktrough, or using a pawn lever as I think it would be called in the testsuites from Swami. It is not obvious to me
