An evolutionary algorithm with a history mechanism for tuning a chess evaluation function
Here, we propose an evolutionary algorithm (i.e., evolutionary programming) for tuning the weights of a chess engine. Most of the previous work in this area has normally adopted co-evolution (i.e., tournaments among virtual players) to decide which players will pass to the following generation, depending on the outcome of each game. In contrast, our proposed method uses evolution to decide which virtual players will pass to the next generation based on the number of positions solved from a number of chess grandmaster games. Using a search depth of 1-ply, our method can solve 40.78% of the positions evaluated from chess grandmaster games (this value is higher than the one reported in the previous related work). Additionally, our method is capable of solving 53.08% of the positions using a historical mechanism that keeps a record of the good virtual players found during the evolutionary process. Our proposal has also been able to increase the competition level of our search engine, when playing against the program Chessmaster (grandmaster edition). Our chess engine reached a rating of 2404 points for the best virtual player with supervised learning, and a rating of 2442 points for the best virtual player with unsupervised learning. Finally, it is also worth mentioning that our results indicate that the piece material values obtained by our approach are similar to the values known from chess theory.
evolutionary algorithm chess evaluation function evolutionary programming chess engine artificial intelligence