Seasons Of Code

Rubik's cube solver    • Chaithanya Naik Mude   

Rubik's cube solver

Rubik's cube solver

Rubik’s cube is one of the most fascinating 3-D combination puzzles we encounter. It is simple to understand the game, given a permutation we need to reduce the cube to a single goal state by rotating it. In this project, we will accomplish solving this cube with as minimum rotations as possible using the ideas of reinforcement learning.

There will be three modules that need to be completed.

  1. Given the details about the faces of the cube, solve the puzzle in the back-end.
  2. Given an image, extract the details about the faces of the cube using various image processing and possibly ML techniques
  3. Develop an user interface for the above solution.

References:

  1. https://www.nature.com/articles/s42256-019-0070-z
  2. https://arxiv.org/abs/1805.07470

Tentative Project Timeline

Week Number Tasks to be Completed
Week 1 Learn python and python-on-android, play with Rubik’s cubes to get a clear grasp about the problem. Try pycuber, a python package for dealing with Rubik’s cubes, which helps in creating graphical user interface.
Week 2 Go through the available literature on the problem. Understand basic algorithms and concepts of Reinforcement learning pertaining to the problem.
Week 3 Try out various Q-learning, Deep Q-learning examples and MCTS.
Week 4 Implement Deep Q-learning and MCTS for our problem.
Week 5 Measure performance against benchmark and hyper-parameter tuning.
Week 6 Buffer week to finish up with documentation
Week 7 Given an image taken from a good viewpoint, extract the details.
Week 8 Create a graphical user interface to upload the images of the cubes and return with an animation of the solution.
Week 9 Buffer week to finish up with presentation and documentation