I'm coding a chess engine and have the following problem: I want to only evaluate if the position is quiet, meaning if one side takes a piece the depth should grow by one ply. If then the other party takes on the same field it should grow by another ply. Unfortunately it was not possible to compare the evaluations of the positions of one move of the black side to the evaluation after a white move, because that makes one party much better than the other.

That brought me to the following beta solution: If a party doesn't take a piece at the last regular searched ply, the depth won't grow any deeper. If a party takes a piece at the last regular searched ply, the depth grows by two ply to compare the board after two more moves. When a party takes, the opponent takes back and the party takes again, the depth rises by another two ply. However this method causes a lot of nearly useless move calculation, as I have to research all moves for the opponent for a certain move of the first party that takes a piece, only to know if it takes back. And for all the cases it doesn't take back this calculation seems useless, as I only evaluate the position after the move before the opponents.

Is there a way to either use the precalculated ply from an opponent to improve the evaluation or to waive that precalculation cmpletely?

  • I think what you are looking for is a Quiescence search, a search that only looks at capture moves, and is in place of a static evaluation once depth reaches 0 in your initial search. Check out this chessprogrammingwiki article: chessprogramming.org/Quiescence_Search
    – BanjoMan
    Commented Jul 22, 2023 at 4:04


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Browse other questions tagged or ask your own question.