russcip
A safe Rust interface for SCIP. This crate also exposes access to the SCIP's C-API through the ffi module.
The project is currently an early-stage work in progress, issues/pull-requests are very welcome.
Dependencies
Make sure SCIP is installed, the easiest way to install it is to install a precompiled package from here or through conda by running
After which russcip would be able to find the installation in the current Conda environment. Alternatively, you can specify the installation directory through the SCIPOPTDIR environment variable.
russcip is tested against SCIP 8.0.3 but it might work for other versions depending on which functionality you use.
Installation
By running
or to get the most recent version, add the following to your Cargo.toml
[]
= { = "https://github.com/scipopt/russcip" }
Example
Model and solve an integer program.
use Model;
use ObjSense;
use Status;
use VarType;
use Retcode;
use crateModelWithProblem;
The raw feature
You can enable this feature by specifying the feature in your Cargo.toml
[]
= { = ["raw"] }
This enables access to the scip_ptr unsafe function in the Model struct, which gives you access to the underlying SCIP raw pointer. This is can be used in combination with the ffi module to call SCIP functions that are not wrapped yet in the safe interface.
About SCIP
SCIP is currently one of the fastest non-commercial solvers for mixed integer programming (MIP) and mixed integer nonlinear programming (MINLP). It is also a framework for constraint integer programming and branch-cut-and-price. It allows for total control of the solution process and the access of detailed information down to the guts of the solver.