Hi,
I finally finished the MVV/LVA. Yes, it does score a bit differently but I got the idea
.
I used the board you provided for some extensive testing. Here are some numbers:
Quiesence with no sorting and calling AlphaBeta if King checked:
QSearch Moves/Nodes: 227820
Max Depth: 27
Checks: 43959
With MVV/LVA and correct sorting:
QSearch Moves/Nodes: 7204
Max Depth: 19
Checks: 1443
Removed under-promotions:
QSearch Moves/Nodes: 3577
Max Depth: 15
Checks: 797
*QSearch is counted for each move generated and iterated in the move loop.
*Max depth is the max PLY reached.
This is a significant improvement. Thanks for the help with this
I still do not enforce a limit on the qsearch's max depth but am reading where others do. I am also reading where some others do not evaluate check and call alphabeta if true.
I do run into an explosion in the search for this position if I set the depth to 4 or higher. At depth setting of 4:
Total Search Nodes: 84,732,700
QSearch Nodes: 62,577,913
Qsearch Checks: 11,880,123
Max Q-Search Depth: 45
I do not see bugs in the code, which has been suggested. It may be that I did not put much into the evaluation (basically matieral score right now and piece/square position) and the alphabeta does not yet have something to sort its moves, which is next I hope.
Just to rule out one side thought (I expect the answer to be yes) - is there a performance decrease with methods calling each other (or itself) over and over and if so can this performance degredation be controlled?
Thanks again for any insight or advice you can provide on this