Inspiration

I like chess puzzles. They're bite-sized and can take as much or as little time from your day as you'd like. While there are no shortage of chess puzzles online, most of the procedural ones are not particularly good. They have unsatisfying solutions like pushing a single pawn or moving a rook up a single square. They're generally defined by what maximizes the chess engine's evaluation rather than what's the most fun or interesting. This project seeks to rectify that.

What it does

The application takes a FEN (Forsyth–Edwards Notation) string and gives back a prediction for 'goodness' or the puzzle, with +1 being quite good and -1 being rather bad.

Nothing world changing in this model. I'm here to have fun, not to win.

How we built it

The model is trained off of a few hundred thousand games on Lichess. While the full dataset has well over three million datapoints, due to time constraints we're forced to use only a small sample of those.

Challenges we ran into

Our babysitting plans fell through at the last minute and we had only a few hours to work on the project on Saturday morning and Sunday morning.

We had hoped to include also an approximation of a Stockfish rating, but this took the load time from ~150 games/second to ~1.

Accomplishments that we're proud of

Honestly, if we can submit at all I'll be overjoyed.

What we learned

Stockfish is surprisingly touchy when interacting with multithreaded data loading.

What's next for Chesstour the Puzzle Judge

Loading a larger dataset and training for longer are quick wins. Building a better interface will help, too.

Built With

Share this project:

Updates