rudzen / ChessLib

C# chess library containing a complete data structure and move generation.
MIT License
81 stars 22 forks source link

Best way to implement shallow move scores. #39

Closed digital-synapse closed 3 years ago

digital-synapse commented 3 years ago

In an effort to improve search performance I'm trying to implement a heuristic for alpha-beta pruning. It looks like the ExtMove structure supports this via the score member, but as far as I can tell GenerateMoves() will never set this to anything other than zero.

Can you offer any advice? Is there a good way to extend generatemoves() so that moves are scored for example : piecetaken piecetakenvalue + pieceatrisk pieceatriskvalue * .33

I was also interested in using perft but was unclear on exactly how to generate moves from the perft result.

rudzen commented 3 years ago

I did plan to implement a staged move selection based on some heuristics. You can implement this yourself - for example by generating the known moves and then filtering them based on what information you have available in your engine. Another option is to copy the move generator and add whatever functionality you might need.

My plan was something along the lines of a simple scoring of the moves which were generated. There is something like it in the C++ engine Feliscatus which are using a pretty simple way of doing it. Link

The perft is basically only a move counting feature - so you cannot use the perft result for anything useful.

digital-synapse commented 3 years ago

I just wanted to say, Thanks for the info and all the great work on this rules engine!

On Fri, Apr 23, 2021, 2:32 PM Rudy Alex Kohn @.***> wrote:

I did plan to implement a staged move selection based on some heuristics. You can implement this yourself - for example by generating the known moves and then filtering them based on what information you have available in your engine. Another option is to copy the move generator and add whatever functionality you might need.

The perft is basically only a move counting feature - so you cannot use the perft result for anything useful.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/rudzen/ChessLib/issues/39#issuecomment-825936121, or unsubscribe https://github.com/notifications/unsubscribe-auth/AB6YU7JQDMO5OTVISELFLTDTKHRNPANCNFSM43IMK3QQ .