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.

Installation

For Ubuntu/Debian users: Download the deb for the latest version of Timetabler from here and install it.

To build the project from source follow the steps below.

Prerequisities

This project requires following tools to build.

Dependencies

The following software are dependencies for this program:

Get the code

The most recent stable release can be downloaded from here.

To get the latest code, use

$ git clone https://github.com/GoodDeeds/Timetabler
$ cd Timetabler

Setting up the dependencies

Short method

To set up all the dependencies required, simply run the following command

$ ./install_dependencies.sh

If building with tests, use instead

$ ./install_dependencies.sh --enable-tests

If the above command fails, you can try installing the individual dependencies manually by following the instructions below.

Long method

This describes the process of setting up each dependency.

Open WBO 2.1

This needs to be built as a library. The following steps need to be followed:

CSVparser

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
PEGTL
GoogleTest

Building the project

If building with tests, set GTEST_PATH appropriately and use

$ mkdir build && cd build
$ cmake -DOPEN_WBO_PATH="../dependencies/open-wbo" -DYAML_CPP_PATH="../dependencies/yaml-cpp-yaml-cpp-0.6.2" -DCSVPARSER_PATH="../dependencies/CSVparser" -DPEGTL_PATH="../dependencies/PEGTL-2.7.0" -DGTEST_PATH="../dependencies/googletest-release-1.8.1" -DENABLE_TESTS=On ..
$ make timetabler

Running the Timetabler

To execute the program, use

$ timetabler -f fields.yml -i input.csv -c custom.txt -o output.csv

where

A detailed explanation on each file can be found in the Project Wiki.

For more options, see help

$ timetabler -h

Examples of Configuration files

Examples for configuration files can be found here. This contains some examples for the field information, the input, and custom constraints to be added to the solver.

For further details and examples, please refer to the Project Wiki.

Documentation

The project web page is gooddeeds.github.io/Timetabler.

Code documentation for this project can be found on Read the Docs.

Issues

If you have any queries, suggestions, or feature requests, or would like to report any bugs or issues, please open an issue on GitHub.

When reporting bugs, please provide sufficient information (such as the inputs and the configuration used) to reproduce the bug.

Contributing

To contribute to this project, please send a pull request.

License

This software is provided under the MIT License.