Couenne

Convex Over and Under ENvelopes for Nonlinear Estimation (Couenne) is an open-source library for solving global optimization problems, also termed mixed integer nonlinear optimization problems. A global optimization problem requires to minimize a function, called objective function, subject to a set of constraints. Both the objective function and the constraints might be nonlinear and nonconvex. For solving these problems, Couenne uses a reformulation procedure and provides a linear programming approximation of any nonconvex optimization problem.

Couenne is an implementation of a branch-and-bound where every subproblem is solved by constructing a linear programming relaxation to obtain a lower bound. Branching may occur at both continuous and integer variables, which is necessary in global optimization problems. It requires the input to be specified in A Mathematical Programming Language (AMPL) .nl format, so as to be used from AMPL, and writes as an output a file .sol containing the best solution found until that moment (if the optimization is interrupted) or the global optimum if it completes without interruption.

The development of Couenne began in 2006 within a collaboration between IBM and Carnegie Mellon University. It is open-source software and is currently released under the Eclipse Public License v1.0.

The source code is available for download in the Computational Infrastructure for Operations Research COIN-OR repository and on GitHub. Couenne uses other packages both in COIN-OR (CBC, CLP, COIN-OR OSI, COIN-OR Bonmin, COIN-OR Cgl, Interior Point OPTimizer (IPOPT)) and outside (LAPACK, Basic Linear Algebra Subprograms (BLAS), MUltifrontal Massively Parallel sparse direct Solver (MUMPS), Nauty, Solving Constraint Integer Programs (SCIP), SoPlex).