Once you succeeded installing SCIP together with an LP-solver on your system, you have a powerful tool for solving MIPs, MIQCPs, MINLPs, etc... at hand. SCIP can also be customized to the type of problems you are working on by additional plugins. Instructions on how to write a new plugin and include it in SCIP can be found in the corresponding How to add ... pages.
SCIP can also be used for writing your own branch-and-cut or branch-and-cut-and-price code. SCIP already provides a number of existing code examples which we suggest as both reference and starting point for these kinds of projects. Below, you find some hints of how to start such a project.
Choose an example project
The example should be chosen depending on the programming language (C or C++) and the purpose (branch-and-cut or branch-and-cut-and-price) of your project.
We suggest the use of one of the following examples:
- The Vehicle Routing Problem Example is a branch-and-cut-and-price (column generation)-code in C++.
- The Binpacking Example and the Coloring application are branch-and-cut-and-price (column generation)-codes in C.
- The TSP example is a branch-and-cut-code in C++.
- The LOP example is a branch-and-cut-code in C.
More examples can be found in the list of Examples.
- Copy one of the examples in the
examples
directory (in the SCIP root directory). For instance, typecp -r examples/Binpacking/ ../SCIPProject/ ; cd ../SCIPProject
from the SCIP root directory for copying the content of theBinpacking
-example into a fresh directory named SCIPProject in the parent directory of the SCIP root directory and jumping to the new SCIPProject directory rightafter.
Building with CMake
It is recommended for all new users to use the CMake build system configuration, if available on their platform.
- Open the
CMakeLists
(some examples projects have a subdirectory "check" for testing) viakate CMakeLists.txt & kate check/CMakeLists.txt # if check/CMakeLists.txt is available
and replace all instances of the copied project's name (e.g.binpacking
) with your project name. - Create a new subdirectory, jump to the new directory and use cmake specifying your SCIP directory. For instance, type
mkdir Release ; cd Release ; cmake .. -DSCIP_DIR=../scip/Release
and compile using themake
command. For the CMake equivalents of all the flags that can be used in SCIP, see Building SCIP with CMake.
Building with the Makefile system
If CMake should be unavailable on your targeted platform, try the classic Makefile system of SCIP.
- Open the
Makefile
viakate Makefile
and edit the following variables at the top to have a compilable code:- specify a correct path to the SCIP root (
SCIPDIR
) - rename the targets name (
MAINNAME
) - adjust the source file names (
MAINOBJ
).
- specify a correct path to the SCIP root (
- Once you have edited the makefile, you can use all the flags that can be used in SCIP to compile your code, see Makefiles / Installation information. Note that you need to update the dependency files before compiling your project via
make depend
.