Scippy

SCIP

Solving Constraint Integer Programs

Interfaces

There are several ways of accessing the SCIP Optimization Suite from other software packages or programming platforms.

File formats

The easiest way to load a problem into SCIP is via an input file, given in a format that SCIP can parse directly, see the tutorial on how to use the interactive shell. SCIP is capable of reading more than ten different file formats, including formats for nonlinear problems and constraint programs. This gives researchers from different communities an easy, first access to the SCIP Optimization Suite. See also the list of readable file formats.

Modeling languages and Matlab interface

A natural way of formulating an optimization problem is to use a modeling language. Besides ZIMPL there are several other modeling tools with a direct interface to SCIP. These include Comet, a modeling language for constraint programming, AMPL and GAMS, which are well-suited for modeling mixed-integer linear and nonlinear optimization problems, and CMPL for mixed-integer linear problems. The AMPL, GAMS, and ZIMPL interfaces are included in the SCIP distribution, the GAMS interface originated here.

With SCIP 3.0, a first beta version of a functional MATLAB interface has been released. It supports solving MIPs and LPs defined by Matlab's matrix and vector types. The OPTI project by Jonathan Currie provides an external MATLAB interface for the SCIP Optimization Suite. On top of this, YALMIP by Johan Löfberg provides a free modeling language.

C++ wrapper classes

Since SCIP is written in C, its callable library can be directly accessed from C++. If a user wants to program own plugins in C++, there are wrapper classes for all different types of plugins available in the src/objscip directory of the SCIP standard distribution. SCIP provides several examples that were written in C++, see Examples and select an example written in C++.

Interfaces for other programming languages

Interfaces for other programming languages are developed and maintained independently from the SCIP Optimization Suite on GitHub in order to provide extensions and patches faster and to collaborate on them more easily. Besides the popular interfaces for Python and Java, there is also an interface for Julia available. Contributions to these projects are very welcome.

There are also several third-party python interfaces to the SCIP Optimization Suite, e.g., NUMBERJACK and python-zibopt. NUMBERJACK is a constraint programming platform implemented in python. It supports a variety of different solvers, one of them being the SCIP Optimization Suite. python-zibopt was developed by Ryan J. O'Neil and is a python extension of the SCIP Optimization Suite. PICOS is a python interface for conic optimization, provided by Guillaume Sagnol.