There are several ways of accessing the SCIP Optimization Suite from other software packages or programming platforms.
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 access to the SCIP Optimization Suite. See also the list of readable file formats.
The main access point for SCIP is its API to C. Please refer to the Public API of SCIP documentation for further details.
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.
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.
Contributions to these projects are very welcome.
There are also many third-party python interfaces to the SCIP Optimization Suite, for example:
A natural way of formulating an optimization problem is to use a modeling language. Besides ZIMPL, which is part of the SCIP Optimization Suite, there are several other modeling tools with a direct interface to SCIP:
The AMPL and ZIMPL interfaces are included in the SCIP distribution, the GAMS interface is available here.
The AMPL interface is part of the main SCIP executable. It is activated when the executable is called with the name of the AMPL .nl file as first argument and -AMPL as second argument. In this case, SCIP will employ the NL reader to read the .nl file (and .col and .row files with variable and constraint names, if available), read parameter settings from a scip.set file (if present), attempt to solve the problem, write an AMPL solution file with the solve output, and exit. However, if -i is given as third argument, then solving the problem is replaced by opening the interactive shell.
Next to a scip.set file, parameter settings can also be given via an option command in AMPL, e.g.,
Parameter display/statistics is specific to using SCIP via the AMPL interface and triggers a call to SCIPprintStatistics after the problem has been solved (or the interactive shell has been exited). In addition, a parameter display/logfile is available to specify a file to which to print SCIP output in addition to stdout.
For most problems, SCIP computes a primal solution only. A dual solution is written to an AMPL solution file only if an LP has been solved with presolve disabled.
SCIP is also able to write AMPL .nl files (and .col and .row files with variable and constraint names). See reader_nl.h for currently supported constraint types.