Version 78 (modified by rlh, 14 years ago) (diff)


Note that these project webpages are based on Wiki, which allows webusers to modify the content to correct typos, add information, or share their experience and tips with other users. You are welcome to contribute to these project webpages. To edit these pages or submit a ticket you must first register and login.

COIN-OR Cut Generation Library

Current Release: 0.5.0

Current Stable Version: 0.5

The COIN-OR Cut Generation Library (Cgl) is a collection of cut generators that can be used with other COIN-OR packages that make use of cuts, such as, among others, the linear solver Clp or the mixed integer linear programming solvers Cbc or BCP.

Each cut generator is in a separate directory with its own maintainer. All generators are combined in one library when Cgl is compiled.

Available generators with link to their Wiki page are listed below:

Wish List

Is there an improvement to CGL that you need? A frustration with the current design you want fixed? A neat idea you'd like to throw out? Add your wish to the list below. Or better yet, contribute your implementation that addresses one of the items below.

  • Have a standard interface to all cut generators <wisher: Francois Margot, June, 2006>
  • Interface needs to re-thought. Instead of the solver interface, pass in (1) what the instance is, and(2) what the solution is. Please separate those two things. If the cut needs more information, make that an optional parameter. <wisher: Jeff Linderoth, July 18, 2006>
  • All cut generators use the same value for infinity <wisher: Cindy Phillips, July 18, 2006>
  • A design for interrogating the problem once up front (e.g., builing implication tables), caching the information for use later on. <wisher: Robin Lougee-Heimer and many others, July 18, 2006>
  • Numerical stability of all cut generators <wisher: Francois Margot, July 19, 2006>
    • Francois -- which cuts have you experienced issues with? Robin
  • what's yours?

Download and Installation Instructions

Cgl is written in C++ and is released as open source code under the Common Public License (CPL). It is available from the COIN-OR initiative.

You can obtain the Cgl source code either via subversion or in form of nightly generated tarballs. The recommended method is subversion because it makes it easier to handle updates. Note that Cgl is automatically downloaded when you download other COIN packages (e.g. Cbc, BCP, SYMPHONY) using Cgl. The compilation and installation of Cgl, in that case, is handled from the base COIN package. The following instructions are useful only if you dowloaded Cgl as the base package.

The following commands may be used to obtain and build Cgl from the source code using subversion and default settings:

  1. svn co coin-Cgl
  2. cd coin-Cgl
  3. mkdir build
  4. cd build
  5. ../configure -C
  6. make
  7. make test
  8. make install

Step 1 issues the subversion command to obtain the source code. Alternatively the source code can be obtained from the tarball directory, by downloading a file with name of the form Cgl-0.5.tgz.

Step 3 creates the build directory. This directory can be any directory of your choosing, even coin-Cgl.

Step 5 runs a configure script that generates all the Makefiles.

Step 6 builds the Cgl library as well as other required libraries and executables.

Step 7 builds and runs the Cgl unitTest program. The code is in coin-Cgl/Cgl/test. If the code is configured and compiled with all the default options, the output of the unitTest code should look like that.

Step 8 Installs libraries, executables, and header files in directories coin-Cgl/build/lib, coin-Cgl/build/bin and coin-Cgl/build/include.

The BuildTools project has additional details on downloading, building, installing, available options and troubleshooting.

Included Projects

If you download the Cgl package, you get these additional projects.

Doxygen Documentation

If you have Doxygen available, you can build the html documentation by typing

make doxydoc

in the directory coin-Cgl/build. Then open the file coin-Cgl/doxydoc/html/index.html with a browser. Note that this creates the documentation for the Cgl package. If you prefer to generate the documentation only for a subset of these projects, you can edit the file coin-Cgl/doxydoc/doxygen.conf to exclude directories (using the EXCLUDE variable, for example).

If Doxygen is not available, you can use the link to the Cgl html documentation listed below.