Couenne, an exact solver for nonconvex MINLPs
Couenne (Convex Over and Under ENvelopes for Nonlinear Estimation) is a branch&bound algorithm to solve Mixed-Integer Nonlinear Programming (MINLP) problems of the form:min f0(x,y)
fi(x,y) ≤ 0 i=1,2..., m
x in Rn, y in Zp
where all fi(x,y) are, in general, nonlinear functions.
Couenne aims at finding global optima of nonconvex MINLPs. It implements linearization, bound reduction, and branching methods within a branch-and-bound framework. Its main components are:
- an expression library;
- separation of linearization cuts;
- branching rules;
- bound tightening methods.
Download, installation and usage
svn co https://projects.coin-or.org/svn/Couenne/stable/0.4 Couenne
to get the source code of the stable version. Before building and installing Couenne, some third party packages are needed. These cannot be downloaded from COIN-OR, and have to be obtained independently. These packages are: ASL, Blas, Lapack, and HSL or MUMPS. The user is referred to the INSTALL file in each of the subdirectories of Couenne/ThirdParty? for instructions on how to obtain them.
In general, the stable version of Couenne is subject to slight changes such as bug fixes. In order to be up-to-date with such changes, you may run the command svn update within the Couenne directory. The latest release 0.4.7 is also available at https://projects.coin-or.org/svn/Couenne/releases/0.4.7. This release is not subject to change, and can also be downloaded as a tar ball.
To install Couenne, we refer to general installation instructions for COIN-OR projects. We also suggest the excellent Ipopt compilation hints page for compiling on non-Linux systems, such as Mac and Windows. The impatient may want to issue the following commands:
cd Couenne cd ThirdParty # Read INSTALL.* file in each subdirectory and get third party software cd .. mkdir build cd build ../configure -C make make install
The above commands place Couenne in the Couenne/build/bin/ directory, libraries in Couenne/build/lib/, and include files in Couenne/build/include/. An alternative directory can be specified with the --prefix option of configure. For instance, when replacing "../configure -C" above with
../configure -C --prefix=/usr/local
the Couenne executable will be installed in /usr/local/bin/, the libraries in /usr/local/lib/, and the include files in /usr/local/include/. Couenne is run as follows:
where instance.nl is an AMPL stub (.nl) file. Such files can be generated from AMPL with the command "write gfilename;" (notice the "g" before the file name), for example.
You may also specify a set of options to tweak the performance of Couenne. These are found in the couenne.opt option file. A sample option file is given in the Couenne/src/ directory.
A user manual is available, with explanations on most options available in Couenne. Doxygen documentation is also available, and it can be generated by running
from the same build/ directory where you ran configure, make, and make install. Documentation in both html and LaTeX format can be found in the Doc/ subdirectory. Fire up your browser and take a look at Doc/html/index.html for documentation of Couenne.
Resources and links
Couenne is maintained by Pietro Belotti (couenne@…).
Improve this page, report a bug, contribute to Couenne
As an open-source code, contributions to Couenne are welcome. To submit a contribution to Couenne, please follow the COIN-OR guidelines.
In order to report a bug, use the ticket system. All you need to do is
In order to ensure that your ticket is addressed in a timely fashion, please try to be as exhaustive as you can in the bug report, for instance by reporting what version of Couenne you have downloaded and what operating system you are using, and again by attaching the model/data files with which the crash occurred.
- Pietro Belotti (Xpress Development Team, FICO, Birmingham UK)
- Timo Berthold (Xpress Development Team, FICO, Berlin)
- Pierre Bonami (IBM Cplex)
- Sonia Cafieri (École Nationale de l'Aviation Civile)
- François Margot (Carnegie Mellon University)
- Cameron Megaw (Clemson University)
- Stefan Vigerske (GAMS)
- Andreas Wächter (Northwestern University)
This project was initiated in 2006 within a collaboration between IBM and Carnegie Mellon University, aimed at developing algorithms for MINLP.
Credit should be given to our colleagues in this collaboration: Andreas, François, Pierre, Stefan, and Timo, who developed part of Couenne, and Larry T. Biegler, Gérard Cornuéjols, Ignacio E. Grossmann, and Jon Lee. Each has contributed an essential part of the development of Couenne.