COUENNE#
The COIN Couenne solver (COUENNE, Convex Over and Under ENvelopes for Nonlinear Estimation) is a spatial branch & bound algorithm that implements linearization, bound reduction, and branching techniques for Mixed-integer, Nonlinear Programming (MINLP) problems. The purpose of Couenne is to find global optima of nonconvex MINLPs.
Learn More | Features | Options
How to use it#
How to install using amplpy:
# Install Python API for AMPL:
$ python -m pip install amplpy --upgrade
# Install AMPL & solver modules:
$ python -m amplpy.modules install couenne # install COUENNE
# Activate your license (e.g., free ampl.com/ce or ampl.com/academia licenses):
$ python -m amplpy.modules activate <your-license-uuid>
How to use:
from amplpy import AMPL
ampl = AMPL()
...
ampl.solve(solver="couenne", couenne_options="option1=value1 option2=value2")
Learn more about what we have to offer to implement and deploy Optimization in Python.
ampl: option solver couenne; # change the solver
ampl: option couenne_options 'option1=value1 option2=value2'; # specify options
ampl: solve; # solve the problem
Resources#
Features#
Algorithms#
Global: spatial branch-and-bound
Couenne builds convex relaxations of the nonconvex terms and branches on
continuous and integer variables to find a global optimum. Time limit:
bonmin.time_limit; Ipopt options apply to its local NLP solves.
Modeling with MP expressions#
MP expressions: logic, counting, complementarity (MP2NL)
Natively, Couenne solves nonlinear models with continuous and integer variables. MP’s expressions (==>, or, atmost, count, alldiff, piecewise-linear terms, …) and complements are not part of its native model type: through MP2NL, MP reformulates them into it first.
Call MP2NL as the solver and name Couenne inside it; MP’s options go into mp2nl_options, Couenne’s own into couenne_options.
MP reformulates logic with binary variables, which Couenne handles as integer variables.
ampl.solve(solver="mp2nl", mp2nl_options="solver=couenne cvt:compl=1")
ampl: option solver mp2nl;
ampl: option mp2nl_options 'solver=couenne cvt:compl=1';
ampl: solve;
More: Meta-driver MP2NL.
Solver options#
Full list of solver options:
Retrieving solutions#
The outcome of the last optimization is stored in the AMPL parameter solve_result_num and the relative message in
solve_result.
display solve_result_num, solve_result;
COUENNE solve result codes:
Solve result table (AMPL default ranges)
0- 99 solved: optimal for an optimization problem, feasible for a satisfaction problem
100-199 solved? solution candidate returned but error likely
200-299 infeasible
300-399 unbounded
400-499 limit
500-999 failure, no solution returned