2

I am programming a (relatively basic) chess engine: while it is a lot of fun, it is also an interesting way to improve my chess skills! In order to evaluate a position, I need to extract features from the board. At the moment, I am using basic features such as the total value of the pieces, some features associated to piece mobility, open rank/files, whether the king is castled, some features related to the position of the pieces (eg. occupying the center is good), etc...

I was wondering whether there were resources describing more comprehensive list of features that would likely to be useful. This line of approaches has indeed been done a thousand of times (before the advent of neural-net / convolutional / AlphaZero types of methods) but I have not found many articles describing the features used.

  • 1
    Someone created an engine that did nothing but try to play the move that allowed it the most mobility for its pieces (but did a depth search for long term mobility as well). It reached a rating above average and almost club level. – pkr Feb 11 '21 at 21:37
  • Interesting! Do you have a reference for this fun experiment? – Bernard Barbier Feb 13 '21 at 02:34

1 Answers1

1

The best way is read source code yourself. https://github.com/official-stockfish/Stockfish/blob/master/src/evaluate.cpp has the commented state-of-the-art rules defined in Stockfish.

ABCD
  • 22,419
  • 2
  • 43
  • 82
  • Thank you, that is exactly what I was looking for. I am also surprised that Stockfish can reach such a level with such basic features: impressive. – Bernard Barbier Feb 10 '21 at 02:07