Fully manual version of my schedule generator that requires the user to input all information for all sections and courses.
Our app accepts as many courses as a student may want to take along with all the offered sections of each course. Then, with our algorithm, generates all possible non-conflicting schedules.
Right now it is available at http://mikedombrowski.com/sched/.
- Clone this repository
- Install dependencies using composer.
php composer.phar install
orcomposer install
- Edit
config.php
and change theSUBDIR
constant to reflect your installation location
Available at https://MikeDombo.github.io/Schedule-Generator-PHP/html/index.html
The new algorithm implemented by commit 48b40fe is the Bron-Kerbosch maximal clique finding algorithm. I realized that the scheduling program could be thought of as a graph where vertices represent a section of a class and edges exist between vertices that are compatible (can be taken together).
Representing the problem as a graph means that possible non-conflicting schedules are maximal cliques. Therefore, to find all possible schedules, I implemented the Bron-Kerbosch maximal clique finding algorithm. This does run faster than my old algorithm and generates fewer total schedules because the old algorithm generated some schedules that were included in larger ones (sub-graphs).
Our algorithm is essentially a recursive tree, which is explained more in the image below.