Changeset 2519


Ignore:
Timestamp:
Mar 9, 2019 2:44:13 PM (7 weeks ago)
Author:
stefan
Message:

updates to README.md

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

Legend:

Unmodified
Added
Removed
  • trunk/README.md

    r2514 r2519  
    1 # CBC Version 2.10.0 README
    2 
    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
     2
     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](http://projects.coin-or.org/OS/wiki) and [GAMSlinks](http://projects.coin-or.org/GAMSlinks/wiki) projects), MPL (through the [CoinMP](http://projects.coin-or.org/CoinMP/wiki) project), AIMMS (through the [AIMMSlinks](http://projects.coin-or.org/AIMMSlinks/wiki) project), [PuLP](https://projects.coin-or.org/PuLP), [CMPL](https://projects.coin-or.org/Cmpl),  [OpenSolver for Excel](http://opensolver.org), [JuMP](https://github.com/JuliaOpt/JuMP.jl), or [MiniZinc](http://www.minizinc.org/).
     6
     7Cbc links to a number of other COIN-OR projects for additional functionality, including:
     8 * [Clp](https://github.com/coin-or/Clp) (the default solver for LP relaxations)
     9 * [Cgl](https://github.com/coin-or/Cgl) (for cut generation)
     10 * [CoinUtils](https://github.com/coin-or/CoinUtils) (for reading input files and various utilities)
     11For more information on supported platforms, links to dependent projects, current version, and more, click [here](http://www.coin-or.org/projects/Cbc.xml)
     12
     13Cbc is developed by [John Forrest](http://www.fastercoin.com), now retired from IBM Research.
     14The project is currently managed by John Forrest, [Ted Ralphs](http://coral.ie.lehigh.edu/~ted/), and the rest of the [CbcTeam Cbc team].
     15
     16Cbc is written in C++ and is released as open source code under the [Eclipse Public License (EPL)](http://www.opensource.org/licenses/eclipse-1.0) and is freely redistributable.
     17All source code and documentation is Copyright IBM and others. This README may be redistributed freely.
     18
     19Cbc is available from the [COIN-OR initiative](http://www.coin-or.org/).
     20The Cbc website is https://github.com/coin-or/Cbc.
     21
     22## CITE
     23
     24[![DOI](https://zenodo.org/badge/30382416.svg)](https://zenodo.org/badge/latestdoi/30382416)
    725
    826## CURRENT BUILD STATUS
     
    1230[![Build status](https://ci.appveyor.com/api/projects/status/l2hwifsxwhswng8y/branch/master?svg=true)](https://ci.appveyor.com/project/tkralphs/cbc/branch/master)
    1331
     32
    1433## DOWNLOAD
    1534
     
    1837Binaries for most platforms are available for download from [Bintray](https://bintray.com/coin-or/download/Cbc)
    1938
    20 ## CITE
    21 
    22 [![DOI](https://zenodo.org/badge/30382416.svg)](https://zenodo.org/badge/latestdoi/30382416)
     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](http://www.coin-or.org/download/binary/CoinAll), 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](http://ampl.com/products/solvers/open-source/#cbc) that can be used with (or without) AMPL.
     45 * The [GAMS](http://www.gams.com) 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.
     48
     49*Source code* can be obtained either by
     50
     51 * Downloading a snapshot of the source code for the latest release version of Cbc from the [Cbc source code download page](http://www.coin-or.org/download/source/Cbc), or
     52 * Checking out the code from [Github](https://github.com/coin-or/Cbc)
     53
     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].*
     55
     56
     57## Building from source using CoinBrew
     58
     59To build Cbc from source, obtain the `coinbrew` script from
     60https://coin-or.github.io/coinbrew/
     61and run
     62
     63
     64    /path/to/coinbrew fetch --mainProj=Cbc
     65    /path/to/coinbrew build --mainProj=Cbc --test
     66    /path/to/coinbrew install --mainProj=Cbc
     67
     68
     69The `coinbrew` script will fetch [these](Dependencies) additional projects.
     70
     71## Building from source without CoinBrew (Expert users)
     72
     73 0. Install [these Dependencies](Dependencies)
     74 1. Obtain the source code, e.g., from https://github.com/coin-or/Cbc
     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.
     79
     80## Building from source with Microsoft Visual Studio
     81
     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.
     86
     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.
     89
     90If you want to build a *parallel version* of CBC using Visual Studio you can following instructions: (thanks to Tobias Stengel and Alexis Guigue).
     91
     92Assumptions:
     93
     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.
     95
     96Steps (based on VS 2013):
     97
     981. for each of the lib* projects do:
     99
     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)
     101
     1022. Link against a pthreads library.
     103   [PThreadsWin32](https://www.sourceware.org/pthreads-win32/) 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.
     106
     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.
     109
     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.
     112
     1134. pass "-threads" "yourNumber" to CbcMain1
     114
    23115
    24116## DOCUMENTATION
     
    34126http://www.coin-or.org/Doxygen/Cbc/
    35127
    36 Further information can be found here:
    37 
    38 http://projects.coin-or.org/Cbc
    39 
    40128## SUPPORT
    41129
    42130### List Serve
    43131
    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
    45133http://list.coin-or.org/mailman/listinfo/cbc
    46134
     
    49137Bug reports should be reported on the CBC development web site at
    50138
    51 https://projects.coin-or.org/Cbc/newticket
     139https://github.com/coin-or/Cbc/issues
    52140
    53141## CHANGELOG
     
    89177   * Added MSVC 14 project files
    90178   * Bugfixes
    91    
     179
    92180 * Release 2.9.10
    93181   * Fix a numerical issue
     
    142230   * Minor bug fixes
    143231
    144  * Release 2.9.0 
     232 * Release 2.9.0
    145233
    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.
    239    
     327
    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).
    273    
     361
    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.
    282    
     370
    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.
    290  
     378
    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.
    378466
    379    * Improvements to heuristics. 
    380 
    381    * New options for cut generation. 
    382 
    383    * Improved reporting of results. 
    384 
    385    * Improvements to documentation. 
    386 
    387    * Minor bug fixes. 
    388 
    389 
     467   * Improvements to heuristics.
     468
     469   * New options for cut generation.
     470
     471   * Improved reporting of results.
     472
     473   * Improvements to documentation.
     474
     475   * Minor bug fixes.
     476
     477
Note: See TracChangeset for help on using the changeset viewer.