Solving Constraint Integer Programs

How to start a new project

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:

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, type
    cp -r examples/Binpacking/ ../SCIPProject/ ; cd ../SCIPProject
    from the SCIP root directory for copying the content of the Binpacking-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) via
    kate 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 the make 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 via
    kate 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).
  • 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.