Skip to content

Commit 3808c4d

Browse files
authored
Update documentation on IPOPT options (#467)
* added notes for IPOPT options * fix format
1 parent 19ad2c8 commit 3808c4d

File tree

1 file changed

+14
-4
lines changed

1 file changed

+14
-4
lines changed

doc/optimizers/IPOPT.rst

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,8 @@
22

33
IPOPT
44
=====
5-
IPOPT (Interior Point OPTimizer) is an open source interior point optimizer, designed for large-scale nonlinear optimization.
6-
The source code can be found `here <https://www.coin-or.org/download/source/Ipopt/>`_.
7-
The latest version we support is 3.14.17.
5+
`IPOPT <https://coin-or.github.io/Ipopt/>`_ (Interior Point OPTimizer) is an open source interior point optimizer, designed for large-scale nonlinear optimization.
6+
The source code can be found `here <https://github.com/coin-or/Ipopt>`_.
87

98
Installation
109
------------
@@ -17,11 +16,22 @@ Options
1716
-------
1817
Please refer to the `IPOPT website <https://coin-or.github.io/Ipopt/OPTIONS.html>`__ for complete listing of options.
1918
The following are the options which are set by default within pyOptSparse.
20-
All other options take the default value with IPOPT unless specified by the user.
19+
All other options take the default value with IPOPT and cyipopt unless specified by the user.
2120

2221
.. optionstable:: pyoptsparse.pyIPOPT.pyIPOPT.IPOPT
2322
:filename: IPOPT_options.yaml
2423

24+
.. note::
25+
There are several options that significantly affect the IPOPT performance, and IPOPT's default values are not always the best depending on the problem characteristics.
26+
Here are several noteworthy options based on our experience, and users are encouraged to explore non-default values if needed.
27+
pyOptSparse does not override the default value for these options.
28+
29+
* ``nlp_scaling_method``: by default, IPOPT internally applies the scaling based on the gradient at the initial point. If the problem is already well scaled at pyOptSparse level, you may set this to `none` to disable IPOPT scaling.
30+
* ``hessian_approximation``: since pyOptSparse does not support the Hessian callback yet, cyipopt automatically sets this to `limited-memory`. pyOptSparse users do not need to set this option manually.
31+
* ``limited_memory_max_history``: this determines the number of most recent iterations that are used for the Hessian approximation. IPOPT's default is 6, but it is often better to set this to a larger value so the Hessian approximation can utilize more information.
32+
* ``mu_init``: this is the initial value for the barrier parameter, and IPOPT's default is 0.1. This parameter has a significant impact on the search path, especially when you have a lot of constraints. If the initial point is good (i.e., feasible or close to feasible), setting a smaller value (e.g., 1e-5) often accelerates convergence.
33+
* ``mu_strategy``: This controls the strategy for updating the barrier parameter, and the IPOPT's default is `monotone`. The other option is `adaptive`, which may accelerate the convergence, but `monotone` tends to be more robust.
34+
2535

2636
Informs
2737
-------

0 commit comments

Comments
 (0)