# Package: OPT++

The OPT++ library [MOHW07] contains primarily
gradient-based nonlinear programming optimizers for unconstrained,
bound-constrained, and nonlinearly constrained minimization:
Polak-Ribiere conjugate gradient (Dakota’s `optpp_cg`

method),
quasi-Newton (Dakota’s `optpp_q_newton`

method), finite difference
Newton (Dakota’s `optpp_fd_newton`

method), and full Newton (Dakota’s
`optpp_newton`

method).

The conjugate gradient method is strictly
unconstrained, and each of the Newton-based methods are automatically
bound to the appropriate OPT++ algorithm based on the user constraint
specification (unconstrained, bound-constrained, or
generally-constrained). In the generally-constrained case, the Newton
methods use a nonlinear interior-point approach to manage the
constraints.
The library also contains a direct search algorithm, PDS
(parallel direct search, Dakota’s `optpp_pds`

method), which supports
bound constraints.

*Controls*-#

`max_iterations`

-#`max_function_evaluations`

-#`convergence_tolerance`

-#`output`

-#`speculative`

*Concurrency*

OPT++’s gradient-based methods are not parallel algorithms and
cannot directly take advantage of concurrent function
evaluations. However, if `numerical_gradients`

with `method_source`

`dakota`

is specified, a parallel Dakota configuration can utilize
concurrent evaluations for the finite difference gradient
computations.

*Constraints*

Linear constraint specifications are supported by each of the
Newton methods ( `optpp_newton`

, `optpp_q_newton`

, `optpp_fd_newton`

,
and `optpp_g_newton`

)

`optpp_cg`

must be unconstrained

`optpp_pds`

can be, at most, bound-constrained.