Interface to the Coin-OR Cbc solver for mixed-integer programming
Clone or download
Latest commit a8c6374 Jul 28, 2018
Failed to load latest commit information.
deps remove pesky compat Dec 10, 2016
examples update example and run with unit tests, fixes #29 Apr 8, 2015
src Fix deprecations Jul 26, 2018
test excluding linear11 test Jul 11, 2018
.travis.yml drop julia 0.5 Jul 28, 2018 Initial package Jan 30, 2013 drop julia 0.5 Jul 28, 2018
REQUIRE drop julia 0.5 Jul 28, 2018


Build Status


This is a Julia interface to the mixed-integer linear programming solver Cbc. Cbc is a high-performance open-source solver. A basic high-level mixintprog interface is provided through the MathProgBase package.

The supported platforms are Linux, OS X, and Windows. Binaries are provided for Windows and OS X, and will be installed by default. On Linux, Cbc will be automatically compiled from source. Ensure that a C++ compiler is installed first; on Debian-based systems, install the build-essential package.

Using with MathProgBase

Cbc provides a solver object that can be passed to mixintprog in MathProgBase (and used to create instances of the solver-independent AbstractMathProgModel type):

using Cbc
using MathProgBase
mixintprog(..., CbcSolver(Option1=value1,Option2=value2,...))

see the MathProgBase documentation for further information.

Options are solver-dependent, and unfortunately not well documented. The following options are likely to be the most useful:

  • seconds -- Solution timeout limit. (Must be a Float64)
  • logLevel -- Set to 1 to enable solution output.
  • maxSolutions -- Terminate after this many feasible solutions have been found.
  • maxNodes -- Terminate after this many branch-and-bound nodes have been evaluated.
  • allowableGap -- Terminate after optimality gap is less than this value (on an absolute scale).
  • ratioGap -- Terminate after optimality gap is smaller than this relative fraction.
  • threads -- Set the number of threads to use for parallel branch & bound

The complete list of parameters can be found by running the cbc executable and typing ? at the prompt.

In addition, we provide the julia-specific option check_warmstart which, if set to false, will tell the wrapper to pass along the warmstart solution regardless of if it satisfies the constraints of the problem. The default value is true.

Using the C interface

The low-level C interface is available in the CbcCInterface submodule:

using Cbc.CbcCInterface

Using this interface is not recommended.