What is SCIP?
SCIP is a framework to solve constraint integer programs (CIPs) and mixed-integer nonlinear programs. In particular,
- SCIP incorporates a mixed-integer programming (MIP) solver as well as
- an LP based mixed-integer nonlinear programming (MINLP) solver, and
- is a framework for branch-cut-and-price.
Since version 10, SCIP can optionally be configured to solve mixed-integer linear programs in a numerically exact solving mode and produce certificates that can be independently verified, see How to use the numerically exact solving mode for details.
See the web site of SCIP for more information about licensing and how to download SCIP.
If you are new to SCIP and don't know where to start you should have a look at the first steps walkthrough .
Structure of this manual
This manual gives an accessible introduction to the functionality of the SCIP code in the following chapters
Setup and news
- Installing SCIP
- Frequently Asked Questions (FAQ)
- Release notes and changes between different versions of SCIP
Tutorials and guides
- First Steps Walkthrough
- Tutorial: the interactive shell
- Important programming concepts for working with(in) SCIP
- How to start a new project
- How to search the documentation and source files structure for public interface methods
- Detailed guides for adding user plugins
- Detailed guides for advanced SCIP topics
Examples and applications
- Coding examples in C and C++ in the source code distribution
- Extensions of SCIP for specific applications
References
- Supported types of optimization problems
- Readable file formats
- Interfaces
- List of all SCIP parameters
- SCIP Authors
- License
- Links to external documentation
Quickstart
Let's consider the following minimal example in LP format. A 4-variable problem with a single, general integer variable and three linear constraints
Maximize obj: x1 + 2 x2 + 3 x3 + x4 Subject To c1: - x1 + x2 + x3 + 10 x4 <= 20 c2: x1 - 3 x2 + x3 <= 30 c3: x2 - 3.5 x4 = 0 Bounds 0 <= x1 <= 40 2 <= x4 <= 3 General x4 End
Saving this file as "simple.lp" allows to read it into SCIP and solve it by calling the scip binary with the -f flag to solve the problem from the provided file and exit.
reads and optimizes this model in no time:
SCIP version 10.0.0 [precision: 8 byte] [memory: block] [mode: optimized] [LP solver: SoPlex 8.0.0] [GitHash: 0c80fdd8e9-dirty]
Copyright (c) 2002-2025 Zuse Institute Berlin (ZIB)
External libraries:
Readline 8.2 GNU library for command line editing (gnu.org/s/readline)
SoPlex 8.0.0 Linear programming solver developed at Zuse Institute Berlin (soplex.zib.de) [GitHash: 2207cfb2]
CppAD 20180000.0 Algorithmic Differentiation of C++ algorithms developed by B. Bell (github.com/coin-or/CppAD)
ZLIB 1.2.13 General purpose compression library by J. Gailly and M. Adler (zlib.net)
TinyCThread 1.2 small portable implementation of the C11 threads API (tinycthread.github.io)
GMP 6.2.1 GNU Multiple Precision Arithmetic Library developed by T. Granlund (gmplib.org)
ZIMPL 3.7.0 Zuse Institute Mathematical Programming Language developed by T. Koch (zimpl.zib.de)
AMPL/MP 4.0.3 AMPL .nl file reader library (github.com/ampl/mp)
PaPILO 3.0.0 parallel presolve for integer and linear optimization (github.com/scipopt/papilo)
Nauty 2.8.8 Computing Graph Automorphism Groups by Brendan D. McKay (users.cecs.anu.edu.au/~bdm/nauty)
sassy 2.0 Symmetry preprocessor by Markus Anders (github.com/markusa4/sassy)
Ipopt 3.14.18 Interior Point Optimizer developed by A. Waechter et.al. (github.com/coin-or/Ipopt)
user parameter file <scip.set> not found - using default parameters
read problem <doc/inc/simpleinstance/simple.lp>
============
original problem has 4 variables (0 bin, 1 int, 3 cont) and 3 constraints
presolving:
(round 1, fast) 2 del vars, 1 del conss, 0 add conss, 4 chg bounds, 0 chg sides, 0 chg coeffs, 0 upgd conss, 0 impls, 0 clqs, 0 implints
(round 2, fast) 2 del vars, 1 del conss, 0 add conss, 6 chg bounds, 0 chg sides, 0 chg coeffs, 0 upgd conss, 0 impls, 0 clqs, 0 implints
(round 3, fast) 2 del vars, 1 del conss, 0 add conss, 7 chg bounds, 0 chg sides, 0 chg coeffs, 0 upgd conss, 0 impls, 0 clqs, 0 implints
(0.0s) running MILP presolver
(0.0s) MILP presolver found nothing
(0.0s) probing cycle finished: starting next cycle
(0.0s) symmetry computation started: requiring (bin +, int +, cont +), (fixed: bin -, int -, cont -)
(0.0s) no symmetry present (symcode time: 0.00)
presolving (4 rounds: 4 fast, 1 medium, 1 exhaustive):
2 deleted vars, 1 deleted constraints, 0 added constraints, 7 tightened bounds, 0 added holes, 0 changed sides, 0 changed coefficients
2 implications, 0 cliques, 0 implied integral variables (0 bin, 0 int, 0 cont)
presolved problem has 3 variables (1 bin, 0 int, 2 cont) and 2 constraints
2 constraints of type <linear>
Presolving Time: 0.00
time | node | left |LP iter|LP it/n|mem/heur|mdpt |vars |cons |rows |cuts |sepa|confs|strbr| dualbound | primalbound | gap | compl.
t 0.0s| 1 | 0 | 0 | - | trivial| 0 | 3 | 2 | 0 | 0 | 0 | 0 | 0 | 1.630000e+02 | 3.400000e+01 | 379.41%| unknown
t 0.0s| 1 | 0 | 0 | - | trivial| 0 | 3 | 2 | 0 | 0 | 0 | 0 | 0 | 1.630000e+02 | 5.300000e+01 | 207.55%| unknown
p 0.0s| 1 | 0 | 0 | - | locks| 0 | 3 | 2 | 2 | 0 | 0 | 0 | 0 | 1.630000e+02 | 1.225000e+02 | 33.06%| unknown
0.0s| 1 | 0 | 2 | - | 1315k | 0 | 3 | 2 | 2 | 0 | 0 | 0 | 0 | 1.252083e+02 | 1.225000e+02 | 2.21%| unknown
0.0s| 1 | 0 | 2 | - | 1315k | 0 | 3 | 2 | 2 | 0 | 0 | 0 | 0 | 1.252083e+02 | 1.225000e+02 | 2.21%| unknown
0.0s| 1 | 0 | 3 | - | 1356k | 0 | 3 | 2 | 3 | 1 | 1 | 0 | 0 | 1.225000e+02 | 1.225000e+02 | 0.00%| unknown
0.0s| 1 | 0 | 3 | - | 1356k | 0 | 3 | 2 | 3 | 1 | 1 | 0 | 0 | 1.225000e+02 | 1.225000e+02 | 0.00%| unknown
SCIP Status : problem is solved [optimal solution found]
Solving Time (sec) : 0.00
Solving Nodes : 1
Primal Bound : +1.22500000000000e+02 (3 solutions)
Dual Bound : +1.22500000000000e+02
Gap : 0.00 %
- Version
- 10.0.0