Solver for hard timetabling problems. Uses an evolutionary algorithm.
Ruby
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
hard-timetabling-data
spec
.gitignore
DESCRIPTION
MIT-LICENSE
README
analysis.rb
base.rb
generate_graphs.rb
mutations.rb
recombinations.rb
selections.rb
timetabling.rb
watchr.rb

README

A hard timetable is a timetable which has a single solution to fulfill all constraints.
Constraints are:
  1. All required classes are scheduled
  2. There are no collisions
An collision occurs if two classes, teachers or rooms are planned to use at the same time.

This repository is a toolbox to solve this problem with an evolutionary algorithm.
Several permutating operations are implemented and work out of the box.
To start the solver type "ruby timetabling.rb".
Two optional arguments are accepted:
  1. difficulty of the timetable, ranging from 4 to 8
  2. time limit in seconds
  
The timetable-data was retrieved from http://people.brunel.ac.uk/~mastjjb/jeb/orlib/tableinfo.html

You need rspec 2.4.0 to run the test. For automatic testing install watchr and type "watchr watchr.rb"

All files are licensed under the MIT license. See MIT-LICENSE for details.