Changeset 2519

Mar 9, 2019 2:44:13 PM (7 weeks ago)

updates to

  • integrate some content from Cbc trac wiki start page
1 edited


  • trunk/

    r2514 r2519  
    1 # CBC Version 2.10.0 README
    3 Welcome to the README for the COIN Branch and Cut Solver (CBC). CBC is
    4 distributed under the Eclipse Public License and is freely redistributable.
    5 All source code and documentation is Copyright IBM and others. This README may
    6 be redistributed freely.
     1# CBC
     3Cbc (*C*oin-or *b*ranch and *c*ut) is an open-source mixed integer linear programming solver written in C++.
     4It can be used as a callable library or using a stand-alone executable.
     5It can be called through AMPL (natively), GAMS (using the links provided by the [Optimization Services]( and [GAMSlinks]( projects), MPL (through the [CoinMP]( project), AIMMS (through the [AIMMSlinks]( project), [PuLP](, [CMPL](,  [OpenSolver for Excel](, [JuMP](, or [MiniZinc](
     7Cbc links to a number of other COIN-OR projects for additional functionality, including:
     8 * [Clp]( (the default solver for LP relaxations)
     9 * [Cgl]( (for cut generation)
     10 * [CoinUtils]( (for reading input files and various utilities)
     11For more information on supported platforms, links to dependent projects, current version, and more, click [here](
     13Cbc is developed by [John Forrest](, now retired from IBM Research.
     14The project is currently managed by John Forrest, [Ted Ralphs](, and the rest of the [CbcTeam Cbc team].
     16Cbc is written in C++ and is released as open source code under the [Eclipse Public License (EPL)]( and is freely redistributable.
     17All source code and documentation is Copyright IBM and others. This README may be redistributed freely.
     19Cbc is available from the [COIN-OR initiative](
     20The Cbc website is
     22## CITE
    1230[![Build status](](
    1433## DOWNLOAD
    1837Binaries for most platforms are available for download from [Bintray](
    20 ## CITE
    22 [![DOI](](
     39 * *Linux*: On !Debian/Ubuntu, Cbc is available in the package `coinor-cbc` and can be installed with apt. On Fedora, Cbc is available in the package `coin-or-Cbc`.
     40 * *Windows*: The easiest way to get Cbc on Windows is to download the Windows installer for the [COIN-OR Optimization Suite](, which provides Visual Studio compatible libraries and binaries.
     41 * *Mac OS X*: The easiest way to get Cbc on Mac OS X is through Homebrew
     42   * `brew tap coin-or-tools/coinor`
     43   * `brew install cbc`
     44 * AMPL also provides stand-alone [Cbc executables]( that can be used with (or without) AMPL.
     45 * The [GAMS]( distribution includes Cbc.
     46Due to license incompatibilities, pre-compiled binaries lack some functionality.
     47If binaries are not available for your platform for the latest version and you would like to request them to be built and posted, feel free to let us know on the mailing list.
     49*Source code* can be obtained either by
     51 * Downloading a snapshot of the source code for the latest release version of Cbc from the [Cbc source code download page](, or
     52 * Checking out the code from [Github](
     54The recommended method is to use Git because it makes it easier to obtain updates. Below are some quick start guides for building on common platforms. *More detailed build instructions are [BuildAndInstall here].*
     57## Building from source using CoinBrew
     59To build Cbc from source, obtain the `coinbrew` script from
     61and run
     64    /path/to/coinbrew fetch --mainProj=Cbc
     65    /path/to/coinbrew build --mainProj=Cbc --test
     66    /path/to/coinbrew install --mainProj=Cbc
     69The `coinbrew` script will fetch [these](Dependencies) additional projects.
     71## Building from source without CoinBrew (Expert users)
     73 0. Install [these Dependencies](Dependencies)
     74 1. Obtain the source code, e.g., from
     75 2. Run `./configure -C` to generate makefiles
     76 3. Run `make` to build the CoinUtils library
     77 4. Run `make test` to build and run the CoinUtils unit test program
     78 5. Run `make install` to install library and header files.
     80## Building from source with Microsoft Visual Studio
     82For Microsoft Visual C++ users, there are project files for version 10 available in the `MSVisualStudio` directory.
     83First, obtain the source code using either a Windows git client or download a snapshot.
     84In MSVC++ Version 10, open the solution file (this should be converted to whatever version of MSVC+ you are using) and build the Cbc project.
     85The code should build out of the box with default settings.
     87It is also possible to build Cbc with the Visual Studio compiler from the command line using the procedure for Unix-like environments, using the Msys2 shell or CYGWIN.
     88This is the recommended and best-supported way of building Cbc in Windows from source.
     90If you want to build a *parallel version* of CBC using Visual Studio you can following instructions: (thanks to Tobias Stengel and Alexis Guigue).
     94- A VS solution with all necessary projects (libCbc, libClp, libCbcSolver, libCgl, libCoinUtils, libOsi, libOsiCbc, libOsiClp). The project files can be found inside the "MSVisualStudio" folders.
     96Steps (based on VS 2013):
     981. for each of the lib* projects do:
     100   add "CBC_THREAD" under Properties -> Configuration Properties -> C/C++ -> Preprocessor -> Preprocessor Definitions (a subset of the lib* projects may be sufficient, but it doesn't hurt to do it for all)
     1022. Link against a pthreads library.
     103   [PThreadsWin32]( works (even in 64 bits systems) and is distributed under the LGPL.
     104   If you decide to use the precompiled binaries: both pthreadVC2 and pthreadVS2 seem to work.
     105   Otherwise: third party VS project files for pthreads4win can be found on github.
     107   Note: If you use C++/Cli, make sure that no callback (eventHandlers, custom cut generators, custom heuristics, ...) contains managed code.
     108   Otherwise your code will crash at runtime with AssembyNotFoundExceptions inside the native threads created by Cbc. Even if not, problems with the GC are likely.
     1103. If you link statically against pthreads4win, you have to define PTW32_STATIC_LIB when building your program/Cbc (e.g. via Properties -> C/C++/Preprocessor ->  Preprocessor Definitions) AND - only if you build pthreads yourself - when building pthreads.
     111   Linking pthreads dynamically works without additional preprocessor definitions.
     1134. pass "-threads" "yourNumber" to CbcMain1
    36 Further information can be found here:
    40128## SUPPORT
    42130### List Serve
    44 CBC users should use the Cbc mailing list. To subscribe, go to 
     132CBC users should use the Cbc mailing list. To subscribe, go to
    49137Bug reports should be reported on the CBC development web site at
    53141## CHANGELOG
    89177   * Added MSVC 14 project files
    90178   * Bugfixes
    92180 * Release 2.9.10
    93181   * Fix a numerical issue
    142230   * Minor bug fixes
    144  * Release 2.9.0 
     232 * Release 2.9.0
    146234   * Introduced specialized branching methods for dealing with "big Ms".
    237325     variables), in particular when it is applied to the first heuristic
    238326     solutions found at the root node.
    240328   * An implementation of Zero-Half-Cuts by Alberto Caprara is now available.
    241329     By default, these cuts are off. To use add to your command line
    271359     is 10. The cut generators identified by "may be slow" at present are just
    272360     Lift and project and ReduceAndSplit (both versions).
    274362   * Allow initialization of random seed by user. Pseudo-random numbers are
    275363     used in Cbc and Clp. In Clp they are used to break ties in degenerate
    280368     setting randomSeed for Clp and/or randomCbcSeed for Cbc. The special
    281369     value of 0 tells code to use time of day for initial seed.
    283371   * Building on this idea, Andrea Lodi, Matteo Fischetti, Michele Monaci,
    284372     Domenico Salvagnin, Yuji Shinano, and Andrea Tramontani suggest that this
    288376     and possibly stronger cuts. This is switched on by setting
    289377     -multipleRootPasses. These can also be done in parallel.
    291379   * Few changes to presolve for special variables and badly scaled problems
    292380     (in CoinUtils).
    377465   * Updated externals to new stable versions of dependent projects.
    379    * Improvements to heuristics. 
    381    * New options for cut generation. 
    383    * Improved reporting of results. 
    385    * Improvements to documentation. 
    387    * Minor bug fixes. 
     467   * Improvements to heuristics.
     469   * New options for cut generation.
     471   * Improved reporting of results.
     473   * Improvements to documentation.
     475   * Minor bug fixes.
Note: See TracChangeset for help on using the changeset viewer.