I'm developing improvements to my chess engine (Source code for original version https://github.com/m24gstevens/Chess/tr ... /m24gc/1.0). In my latest (test) version, I wrote a specialized capture generator for the quiescence search, and used PeSTO's evaluation function (Temporary, for testing). Finally, I implemented a basic "delta pruning" procedure in the quiescence search:
Code: Select all
int quiesce(int alpha, int beta) // Quiescence, in the "fail hard" framework
...
static_eval = evaluate()
if (static_evaluation >= beta) // Fail high
return beta
// This is the "delta pruning"
int delta = 975 // Queen value
if (pawn_might_promote())
delta += 775
if (static_evaluation < alpha - delta) // I.e. a "hopeless" position
return alpha
...
< rest of quiesce>
...
What could be the reason for this shortcoming? Does it indicate some error in the evaluation function?