TCPSPSuite
|
This is the TCPSPSuite, a software suite for optimizing various flavours of the Time Constrained Project Scheduling Problem. Refer to Instance File Format for what features instances to be optimized may include.
TCPSPSuite should work on any moderately recent GNU/Linux system. All the libraries listed here must be installed including development headers. On many Linux distributions, the development package names end in -dev
.
Installing Gurobi can be tricky sometimes. Here are some pointers:
libgurobi_c++.a
. This yields compilation errors like undefined reference to <something about gurobi>
in the linking step. To fix this problem, you need to copy the file `/path/to/gurobi/lib/libgurobi_g++<highest version available>.a
over the file /path/to/gurobi/lib/libgurobi_c++.a
. The actually available versions of that file differ depending on your Gurobi version. Just use the most recent version.GUROBI_HOME
environment variable to the path where you installed Gurobi to. It should point to the linux64
folder, which contains e.g. lib
, setup.py
, etc.GRB_LICENSE_FILE
environment variable to the path where you put the license file downloaded via grbgetkey
(see the Gurobi documentation)FindGUROBI.cmake
in the cmake/modules
subdirectory for technical reasons has a hard-coded list of Gurobi versions that are detected. Currently, the most recent detected version is Gurobi 8.0. If you have a more recent version of Gurobi, you might need to add it to the list of detected Gurobi versions in that file.ODB in its current version (2.4.0) is not C++17 compliant, since it uses the removed throw
declaration. Otherwise, the code is C++17 compliant. Therefore, our main CMakeLists.txt
currently includes these steps:
src/contrib/odb_headers
throw ()
with noexcept
.throw (std::bad_alloc)
from the files via a simple regular expressionsrc/contrib/odb_headers
to the include path.If this automatic process does not work for you, a way of circumventing it would be:
The source is available from github. Just clone the repository and fetch its submodules. Example:
~/src/tcpsp/TCPSPSuite
.build
directory, use CMake to configure the build process: At this point you should be notified if any required library (see Requirements above) is not found. You either need to install the respective library or make sure that CMake is able to find it. Important: Please note that at the bottom of the output, CMake tells you which optional packages could be found resp. not found, and which solvers need which optional packages. If an optional package is not being found, no solvers that need it will be built. The package will build fine without any solvers at all - however, you won't be able to do any optimization!
This will take a couple of minutes.
build/src/tcpspsute
.If you run it without any arguments, it will print a usage help. To select which solvers should be run on your instances, you need to create a solver configuration file. An example is provided in the example folder.
TCPSPSuite needs at least two arguments to be run: A (sqlite3) file in which to store the results and an instance file or a directory in which to look for instance files. A simple invocation could therefore be:
Or, if you want to solve all instances in a directory:
Let's add a solver configuration file:
If you think you encountered a bug, please report it in the bug tracker. You can also contact us via mail.