A neural network which uses curriculum learning to learn to solve a Rubik's cube implemented as a multi-class classification problem.
The multi-label_classification folder contains the project, while the generic_ordering_schemes folder contains some ordering methods based on general data complexity which are not domain specific. These ordering methods were part of a separate project but were also created with curriculum learning in mind. Training data consists of cube scrambles and their optimal solutions. This data was generated using a third party solution generator written in C. maneuvers.txt contains cube scrambles, data.txt contains their encodings and train.txt contains versions of these encodings which have been preproccessed for curriculum learning. network.txt trains the network using cusom metrics and custom curricula designed specifically for this domain. The three curricula can be used for training are distance based, cluster based, and label based. The final commented line contains an example of how the trained network can be used to solve an input scramble.