Version 38 (modified by pbonami, 13 years ago) (diff)


Welcome to the Bonmin homepage

Bonmin (Basic Open-source Nonlinear Mixed INteger programming) is an

experimental open-source C++ code for solving general MINLP (Mixed Integer NonLinear

Programming) problems of the form:

   min     f(x)

s.t.       g_L <= g(x) <= g_U
           x_L <=  x   <= x_U
           x_i in Z^n for all i in I and,
           x_i in R^n for all i not in I.

where f(x): R^n --> R, g(x): R^n --> R^m are twice continuously differentiable functions and I is a subset of {1,..,n}.

Bonmin is distributed under the Common Public License (CPL) on COIN-OR. The CPL is a license approved by the OSI (Open Source Initiative), thus Bonmin is OSI Certified Open Source Software.

Bonmin features several algorithms

  • B-BB is a NLP-based branch-and-bound algorithm,
  • B-OA is an outer-approximation decomposition algorithm,
  • B-QG is an implementation of Quesada and Grossmann's branch-and-cut algorithm,
  • B-Hyb is a hybrid outer-approximation based branch-and-cut algorithm.

The algorithms in Bonmin are exact when the functions f and g are convex; in the case where f or g or both are non-convex they are heuristics.

More information on Bonmin installation and usage can be found in the Bonmin User's Manual.

More information on the underlying algorithms in Bonmin can be found in: P. Bonami, L.T. Biegler, A.R. Conn, G. Cornuejols, I.E. Grossmann, C.D. Laird, J. Lee, A. Lodi, F. Margot, N.Sawaya and A. Waechter, An Algorithmic Framework for Convex Mixed Integer Nonlinear Programs by IBM Research Report RC23771, Oct. 2005.

Tested platforms

Bonmin has been installed and used on the following systems:

  • Linux using g++ version 3.* and 4.*
  • Windows using Cygwin version 1.5.18
  • Mac OS X using gcc 3.* and 4.*

Bonmin should be easy relatively easy to install on most un*x's provided that you have a C++ and a Fortran compiler. We don't know anybody who has yet tried to build it in the Microsoft Development Studio, the contribution of anybody who uses Microsoft Development Studio and has good knoweldge of it will be very appreciated.

Downloading Bonmin

Bonmin is preferably downloaded by using subversion.

In Un*x environments, to download the code via svn in a directory say coin-Bonmin issue the following command:

 svn co coin-Bonmin

This copies all the necessary COIN-OR files to compile Bonmin to coin-Bonmin.

Obtaining required third party code

Bonmin needs a few external packages which are not included in the Bonmin package:

  1. Lapack (Linear Algebra PACKage)
  2. Blas (Basic Linear Algebra Subroutines)
  3. the sparse linear solver MA27 from the Harwell Subroutine Library and optionally (but strongly recommended) MC19 to enable automatic scaling in \Ipopt.
  4. optionally ASL (the Ampl Solver Library), to be able to use Bonmin from Ampl.

Since these third-party software modules are released under licenses that are incompatible with the CPL (pay attention to their licenses), they cannot be included for distribution with Bonmin, but you will find scripts to help you download them in the subdirectory ThirdParty of the Bonmin distribution (Detailed instruction can be found in Ipopt manual or in ThirdParty

Instaling Bonmin

To install Bonmin issue the following command in the main Bonmin distribution (coin-Bonmin above) directory:

  1. mkdir build
  2. cd build
  3. ../configure -C
  4. make
  5. make test
  6. make install

Step 1 Create a directory used to build the code (note that this step is optional but is strongly recommended).

Step 3 Runs a configuration script which creates the Makefiles for Bonmin.

Step 4 Builds the Bonmin library and executable.

Step 5 Builds the test program and runs it (should finished with message All tests passed succesfully.

Step 6 Installs the Bonmin library libbonmin, the bonmin executable, and the required header file to use the Bonmin library.

The User's Manual and the BuildTools project have additional details on downloading, building, and installing.

Improve this page, report a bug, contribute to Bonmin

As all Wiki pages, this page is editable, this means that you can modify the contents of this page simply by using your web-browser. First register and login then simply click on the "Edit this page" link at the bottom of the page. WikiFormatting will give you a detailed description of available Wiki formatting commands.

The preferred way to report a bug is to use the ticket system. To report a bug using this system:

  1. Register and login,
  2. Report a bug.

Alternatively you can send an email to the project manager pbonami@….

As an open-source code, contributions to Bonmin are welcome. To submit a contribution to Bonmin please follow the COIN-OR guidelines.

Included Projects

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