Skip to content

Commit

Permalink
Add Ipopt, Bonmin, Couenne
Browse files Browse the repository at this point in the history
  • Loading branch information
glebbelov committed Aug 29, 2024
1 parent 462daa3 commit 3e64581
Show file tree
Hide file tree
Showing 9 changed files with 701 additions and 0 deletions.
3 changes: 3 additions & 0 deletions docs/source/solvers/_tables/slv_nonlin.csv
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,7 @@
:ref:`loqo`,|y|,|y|,|n|,|n|
:ref:`minos`,|y|,|y|,|n|,|n|
:ref:`snopt`,|y|,|y|,|n|,|n|
:ref:`ipopt`,|y|,|y|,|n|,|n|
:ref:`bonmin`,|y|,|y|,|y|,|n|
:ref:`couenne`,|y|,|y|,|y|,|y|

106 changes: 106 additions & 0 deletions docs/source/solvers/bonmin/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
(bonmin)=

# BONMIN

The [COIN Bonmin solver (BONMIN)](https://coin-or.github.io/Bonmin/) Bonmin 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 for all i in I and,
x_i in R 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}`.

[[Read More](https://ampl.com/products/solvers/open-source-solvers/)]
[[Options](#solver-options)]
[[Download BONMIN](https://portal.ampl.com/user/ampl/download/coin)]

## How to use it

```{eval-rst}
.. tabs::
.. tab:: AMPL
.. code-block:: ampl
ampl: option solver bonmin; # change the solver
ampl: option bonmin_options 'option1=value1 option2=value2'; # specify options
ampl: solve; # solve the problem
.. tab:: Python
How to install using `amplpy <https://amplpy.ampl.com>`_:
.. code-block:: bash
# Install Python API for AMPL:
$ python -m pip install amplpy --upgrade
# Install AMPL & solver modules:
$ python -m amplpy.modules install coin # install BONMIN
# Activate your license (e.g., free ampl.com/ce or ampl.com/courses licenses):
$ python -m amplpy.modules activate <your-license-uuid>
How to use:
.. code-block:: python
from amplpy import AMPL
ampl = AMPL()
...
ampl.solve(solver="bonmin", bonmin_options="option1=value1 option2=value2")
Learn more about what we have to offer to implement and deploy `Optimization in Python <https://ampl.com/python/>`_.
.. tab:: Other APIs
`AMPL APIs <https://ampl.com/apis/>`_ are interfaces that allow developers to access the features of the AMPL interpreter from within a programming language. We have APIs available for:
- `Python <https://ampl.com/api/latest/python>`_
- `R <https://ampl.com/api/latest/R>`_
- `C++ <https://ampl.com/api/latest/cpp>`_
- `C#/.NET <https://ampl.com/api/latest/dotnet>`_
- `Java <https://ampl.com/api/latest/java>`_
- `MATLAB <https://ampl.com/api/latest/matlab>`_
```

## Resources

* [Solver options](#solver-options)
* [Solve result codes](#retrieving-solutions)

## Solver options

Full list of solver options:
```{toctree}
options.md
```

More details on solver options: [Features guide](https://mp.ampl.com/features-guide.html).


## Retrieving solutions

The outcome of the last optimization is stored in the AMPL parameter `solve_result_num` and the relative message in
`solve_result`.

```ampl
display solve_result_num, solve_result;
```

BONMIN solve result codes:
```
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
```

173 changes: 173 additions & 0 deletions docs/source/solvers/bonmin/options.md

Large diffs are not rendered by default.

96 changes: 96 additions & 0 deletions docs/source/solvers/couenne/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
(couenne)=

# COUENNE

The [COIN Couenne solver (COUENNE, Convex Over and Under ENvelopes for Nonlinear Estimation)](https://github.com/coin-or/Couenne) 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.

[[Read More](https://ampl.com/products/solvers/open-source-solvers/)]
[[Options](#solver-options)]
[[Download COUENNE](https://portal.ampl.com/user/ampl/download/coin)]

## How to use it

```{eval-rst}
.. tabs::
.. tab:: AMPL
.. code-block:: ampl
ampl: option solver couenne; # change the solver
ampl: option couenne_options 'option1=value1 option2=value2'; # specify options
ampl: solve; # solve the problem
.. tab:: Python
How to install using `amplpy <https://amplpy.ampl.com>`_:
.. code-block:: bash
# Install Python API for AMPL:
$ python -m pip install amplpy --upgrade
# Install AMPL & solver modules:
$ python -m amplpy.modules install coin # install COUENNE
# Activate your license (e.g., free ampl.com/ce or ampl.com/courses licenses):
$ python -m amplpy.modules activate <your-license-uuid>
How to use:
.. code-block:: python
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 <https://ampl.com/python/>`_.
.. tab:: Other APIs
`AMPL APIs <https://ampl.com/apis/>`_ are interfaces that allow developers to access the features of the AMPL interpreter from within a programming language. We have APIs available for:
- `Python <https://ampl.com/api/latest/python>`_
- `R <https://ampl.com/api/latest/R>`_
- `C++ <https://ampl.com/api/latest/cpp>`_
- `C#/.NET <https://ampl.com/api/latest/dotnet>`_
- `Java <https://ampl.com/api/latest/java>`_
- `MATLAB <https://ampl.com/api/latest/matlab>`_
```

## Resources

* [Solver options](#solver-options)
* [Solve result codes](#retrieving-solutions)

## Solver options

Full list of solver options:
```{toctree}
options.md
```

More details on solver options: [Features guide](https://mp.ampl.com/features-guide.html).


## Retrieving solutions

The outcome of the last optimization is stored in the AMPL parameter `solve_result_num` and the relative message in
`solve_result`.

```ampl
display solve_result_num, solve_result;
```

COUENNE solve result codes:
```
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
```

Loading

0 comments on commit 3e64581

Please sign in to comment.