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.

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 one of the following examples:

  • The VRP-example is a branch-and-cut-and-price (column generation)-code in C++.
  • The Coloring and the Binpacking-example 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.
  • Copy one of the examples in the examples directory (in the SCIP root directory). For instance, type

    > cp -r examples/Coloring/ ../SCIPProject/ ; cd ../SCIPProject

    from the SCIP root directory for copying the content of the Coloring-example into a fresh directory named SCIPProject in the parent directory of the SCIP root directory and jumping to the new SCIPProject directory rightafter.

    • 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.