Skip to content

scipopt/SCIP.jl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SCIP.jl

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.

Installation

The SCIP.jl package requires SCIP to be installed.

Download the SCIP Optimization Suite, untar it and, build the shared library with

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

Next set the environment variable SCIPOPTDIR to point to the directory that contains the scipoptsuite sources.

export SCIPOPTDIR=/path/to/scipoptdirsuite/sources
Example: export SCIPOPTDIR=/home/hduser/Downloads/scipoptsuite-3.2.1

CSIP needs the library in ${SCIPOPTDIR}/lib/scipoptlib.so and the C header files in ${SCIPOPTDIR}/scip-*/src/.

Clone the SCIP github repository in your local machine and build it in Julia with

Pkg.clone("https://github.com/SCIP-Interfaces/SCIP.jl.git")
Pkg.build("SCIP")

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)