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.