I play a lot of Tetris, and I'm interested in machine learning. So I figured this would be a good project.

What it does

Using the technique known as NEAT, the program uses a genetic algorithm to evolve neural networks that play Tetris.

How we built it

The implementation of NEAT was made by us in Java. We then made Tetris from scratch, and fine-tuned the method until it was satisfactory.

Challenges we ran into

Machine learning isn't a magic box that you can just throw problems at and expect to have them solved. Much of the challenge involved creative thinking about how to approach a minimal, sufficient representation of the Tetris board, and an appropriate fitness function that would accurately rank the neural networks.

Accomplishments that we're proud of

We use a naive search algorithm to determine the values of two critical hyperparameters. Because of this, we were able to quickly find good solutions that were significantly better than initial solutions.

What we learned

We learned how to implement games in JavaFX, as well as further techniques in machine learning optimization.

What's next for TetrisAI

If we decide to go further with the project, we would likely use a multivariate statistical approach to fine-tuning all the hyperparameters. Furthermore, adding more techniques such as speciation would additionally improve our results.

Built With

Share this project: