BONMIN (Basic Opensource Nonlinear Mixed INteger
programming) is an opensource code for solving general MINLP (Mixed Integer
NonLinear Programming) problems. It is distributed on
COINOR under
the EPL (Eclipse Public License). The EPL is a license approved by the
OSI, (Open Source Initiative), thus
BONMIN is OSI Certified Open Source
Software.
There are several algorithmic choices that can be selected with BONMIN. BBB is a
NLPbased branchandbound algorithm, BOA is an outerapproximation
decomposition algorithm, BiFP is an iterated feasibility pump algorithm,
BQG is an implementation of Quesada and Grossmann’s branchandcut
algorithm, BHyb is a hybrid outerapproximation based branchandcut
algorithm and BEcp is a variant of BQG based on adding additional ECP
cuts.
Some of the algorithmic choices require the ability to solve MILP (Mixed Integer
Linear Programming) problems and NLP (NonLinear Programming) problems. The
default solvers for these are, respectively, the COINOR codes Cbc and Ipopt. In
turn, Cbc uses further COINOR modules: Clp (for LP (Linear Programming)
problems), Cgl (for generating MILP cutting planes), as well as various other
utilities. It is also possible to step outside the opensource realm and use Cplex as
the MILP solver and FilterSQP as the NLP solver.
Additional documentation can be found on the Bonmin
homepage and wiki.
BONMIN solves MINLPs of the form
 minf(x)  

 s.t.  

 g^{L} ≤ g(x) ≤ g^{U},  

 x^{L} ≤ x ≤ x^{U},  

 x ∈ ℝ^{n},x_{
i} ∈ ℤ∀i ∈ I,   
where the functions
f :
{x ∈ ℝ^{n} :
x^{L} ≤ x ≤ x^{U}} → ℝ and
g :
{x ∈ ℝ^{n} :
x^{L} ≤ x ≤ x^{U}} → ℝ^{m} are assumed to be twice continuously
differentiable, and
I ⊆{1
,…,n}. We emphasize that
BONMIN treats problems that are
cast in
minimization form.
The different methods that BONMIN implements are exact algorithms when the
functions f and g are convex but are only heuristics when this is not the case (i.e.,
BONMIN is not a global optimizer).
BONMIN implements six different algorithms for solving
MINLPs:
In this manual, we will not go into a further description of these algorithms.
Mathematical details of these algorithms and some details of their implementations
can be found in [Bonami et al. 2008] and [Bonami Klnc Linderoth 2009]
.
Whether or not you are interested in the details of the algorithms, you certainly
want to know which one of these six algorithms you should choose to solve your
particular problem. For convex MINLPs, experiments we have made on a reasonably
large test set of problems point in favor of using BHyb (it solved the most of the
problems in our test set in 3 hours of computing time). Nevertheless, there are cases
where BOA is much faster than BHyb and others where BBB is interesting. BQG and
BECP correspond mainly to a specific parameter setting of BHyb but they
can be faster in some case. BiFP is more tailored at finding quickly good
solutions to very hard convex MINLP. For nonconvex MINLPs, we strongly
recommend using BBB (the outerapproximation algorithms have not been tailored
to treat nonconvex problems at this point). Although even BBB is only a
heuristic for such problems, we have added several options to try and improve
the quality of the solutions it provides (see non convex options). Because
it is applicable to more classes problem BBB is the default algorithm in
BONMIN.
In order to run
BONMIN, you have to download
other external libraries (and pay attention to their licenses!):
 Lapack (Linear Algebra PACKage)
 Blas (Basic Linear Algebra Subroutines)
 a sparse linear solver that is supported by Ipopt, e.g., MA27 from the HSL
(Harwell Subroutine Library), MUMPS, or Pardiso.
Note that Lapack and the Blas are free for commercial use from the Netlib
Repository, but they are not OSI Certified Open Source Software. The linear solver
MA27 is freely available for noncommercial use.
The above software is sufficient to run BONMIN as a standalone C++ code, but it
does not provide a modeling language. For functionality from a modeling language,
BONMIN can be invoked from AMPL (no extra installation is required provided that you
have a licensed copy of AMPL installed), though you need the ASL (AMPL Solver
Library) which is obtainable from the Netlib.
BONMIN can use FilterSQP [FletcherLeyffer1998] as an alternative to Ipopt for
solving NLPs.
Also, in the outer approximation methods BOA and BiFP, some MILP problems
are solved. By default BONMIN uses Cbc to solve them, but it can also be set up to
use the commercial solver Cplex.