CheckersGuy wrote:Hey guys,
I am currently writing a checkers engine and have run into a problem. I am using quiescentSearch to not evaluate positions when there are still jumps available but my engine misevaluates some positions quite heavily because there is a forced sequence on the board it can not detect.
I assume you mean you're having troubles with positions where the forced sequence is just beyond your search horizon. If it wasn't, then your quiescent search would extend the forced moves until a quiet position is reached, unless there is a problem with your move generator. Have you verified it using something like perft?
Some programs extend in qsearch by pitching a piece and then seeing if there is a recapture that gives a fail high. IIRC scan does something like that. In kingsrow I extend if the side opposite of the side to move would have a capture. But there are limits on it, else the tree can explode with too many extensions.
If you search deep enough, you can avoid most traps that are just beyond the horizon, because you will detect them on the next search when you are still many plies away from them, and usually a safe alternative exists at an interior node.
I got another question. Can one use null-move pruning and/or Late-Move-Reductions ? I implemented Null-Move-Pruning once but it didnt work well at all because it missed a lot of tactics/sequences.
I have never tried null move pruning, and AFAIK none of the draughts programs are using it.
LMR is commonly used and quite effective. There's a description of it here:
http://chessprogramming.wikispaces.com/ ... Reductions
-- Ed