Julia interface to SCIP solver



Julia interface to SCIP solver.

Build Status

Related Projects

  • SCIP: actual solver (implemented in C) that is wrapped for Julia.
  • CSIP: restricted and simplified C interface to SCIP which our wrapper is based on.
  • SCIP.jl: previous attempt to interface SCIP from Julia, using autogenerated wrapper code for all public functions.
  • MathProgBase: We aim to implement MPB's abstract solver interfaces, so that one can use SCIP.jl through JuMP. For now, the LinearQuadraticModel interface is implemented, supporting lazy constraint and heuristic callbacks.


Note: These instructions are meant for and only tested with GNU/Linux. OS X used to work, but there is an issue (#46) since the update to SCIP 4.0.0.

Follow the steps below to get SCIP.jl working. Unfortunately, these steps can not be automated as part of Pkg.build("SCIP"), because the academic license of SCIP does not allow distribution of the source code without tracking the download metadata. See the license for details.

1.The SCIP.jl package requires SCIP to be installed in the newest version (4.0.0). Download the SCIP Optimization Suite, untar it.

wget http://scip.zib.de/download/release/scipoptsuite-4.0.0.tgz
tar xzf scipoptsuite-4.0.0.tgz

2.Build the shared library with

make SHARED=true GMP=false READLINE=false ZLIB=false scipoptlib

3.Set the environment variable SCIPOPTDIR to point to the directory that contains the scipoptsuite sources. CSIP needs the library in ${SCIPOPTDIR}/lib/scipoptlib.so and the C header files in ${SCIPOPTDIR}/scip-*/src/.

export SCIPOPTDIR=`pwd`

4.This package is registered in METADATA.jl and can be installed in Julia with


Setting Parameters

SCIP has a long list of parameters that can all be set through SCIP.jl, by passing them to the constructor of SCIPSolver. To set a value val to a parameter name, pass the two parameters (name, val). For example, let's set two parameters, to disable output and increase the gap limit to 0.05:

solver = SCIPSolver("display/verblevel", 0, "limits/gap", 0.05)

First Commit


Last Touched

3 months ago


192 commits

Used By: