/cbc-rs

Rust bindings for COIN-OR CBC Solver

Primary LanguageRustMIT LicenseMIT

Rust bindings for COIN-OR CBC Solver

Description

  • likr/clp-rs Here I borrowed the approach to building and binding of C++ code into a Rust package
  • KardinalAI/coin_cbc Here I borrowed the actual library that turns bindings into normal Rust functions and tests (only the raw version of CbcModel is used, it's the one that allows to Cbc_LoadProblem() all at once)
  • COIN-OR Cbc/Clp/Cgl/Osi/CoinUtils Versions of the COIN-OR libs are hardcoded to be the latest releases as of November 2021 (with a patch that revives Cbc_getRowPrice() method in the Cbc C API)

Build package

cargo buld --release -j4

takes about 2 minutes on a modern Intel CPU, outputs about 10 Mb of a Rust library

cargo test --release

tested on Ubuntu 20.04 (requires clang) and MacOS 11.6 (requires Xcode)

Pros

  • No worry installing CBC in the system

Cons

  • The version of CBC can't be easily changed