Timetabler
|
This project generates a timetable given a set of inputs and constraints. It encodes constraints of the timetabling problem as a SAT formula in the Conjunctive Normal Form, and then calls a MaxSAT solver to solve the problem.
For ubuntu users: Download deb for the latest version of Timetabler from here and install it.
To build the project from source follow the steps below.
This project requires following tools to build.
cmake
g++
or any other C++ compiler with C++11 supportThe following software are dependencies for this program:
To set up all the dependencies required, simply run the following command
If the above command fails, you can try installing the individual dependencies manually by following the below instructions.
This describes the process of setting up each dependency.
This needs to be built as a library. The following steps need to be followed:
$OPEN_WBO_PATH
will be used to denote the path where the repository is cloned. This does not require any setup other than cloning the repository. The path where this is cloned will be referred to as $CSVPARSER_PATH
.
$YAML_CPP_PATH
will be used to denote the path where it is unpacked.$PEGTL_PATH
will be used to denote the path where it is unpacked.OPEN_WBO_PATH
, YAML_CPP_PATH
, CSVPARSER_PATH
and PEGTL_PATH
appropriately. To execute the program, the format is
where
fields.yml
is the path to the file containing the list of values a field can take and the weights for the constraints.input.csv
is the path to the file containing the input data.custom.txt
is the path to the file containing the list of custom constraints.output.csv
is the path to the file to which the output must be written to.A detailed explanation on each file can be found in the Project Wiki.
This contains some examples for providing the fields information, the input, and adding custom constraints to the solver.
The structure of this directory is as follows:
For further details and examples, please refer to the Project Wiki.
This software is provided under the [MIT License](LICENSE).