Skip to content
Stefan Vigerske edited this page Mar 2, 2019 · 3 revisions

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.

Current Release:

Current Stable Version:

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

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:

  • Combinatorial cuts:

    • CglAllDifferent
    • CglClique
    • CglKnapsackCover
    • CglOddHole
    • CglZeroHalf
  • Flow cover cuts:

    • CglFlowCover
  • Gomory cuts and variants:

    • CglGomory
    • CglGMI
    • CglRedSplit
    • CglRedSplit2
  • Lift-and-project cuts:

    • CglLiftAndProject
    • [wiki:CglLandP]
  • Mixed integer rounding cuts and variants:

    • CglMixedIntegerRounding
    • [wiki:CglMixedIntegerRounding2]
    • CglTwomir
    • CglResidualCapacity
  • Strengthening:

    • CglDuplicateRow
    • CglPreprocess
    • CglProbing
    • CglSimpleRounding

Precompiled Libraries and Executables

If you want to obtain precompiled binaries (executables and libraries), please go to the COIN-OR binaries site. A binary distribution of Cgl is available only for some (common) platforms. The most up to date version will come bundled with the CoinAll distribution


Download and Installation Instructions

For Unix-like systems (Unix, Linux, MacOS X, Cygwin, MSys), the quick download and installation guide works in most cases if you don't have particular requirements.

For MS Visual Studio (MSVC), the MSVisualStudio project wiki gives information on which projects provide MSVC project files and how they can be used.

For more detailed instructions, go to the CoinHelp page.


Included Projects

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


Project Links


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., building implication tables), caching the information for use later on. <wisher: Robin Lougee 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
  • Make CGL independent of OSI. See cgl list Nov 13, 2006 post from Matt Galati.
  • what's yours?

Note that these project web pages are based on Wiki, which allows users 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 web pages. To edit these pages or submit a ticket you must first register and login.