Classes | |
| class | Objective |
| an object that defines a scalar objective function to be optimized. More... | |
| class | Optimizer |
| driver that optimizes an Objective using a chosen Algorithm. More... | |
Enumerations | |
| enum class | Algorithm { BOBYQA = 0 , COBYLA = 1 , NELDERMEAD = 2 , SBPLX = 3 , PRAXIS = 4 , MMA = 5 , SLSQP = 6 , LBFGS = 7 } |
| optimization algorithm selector. More... | |
| enum class | Status { SUCCESS = 0 , STOPVAL_REACHED = 1 , FTOL_REACHED = 2 , XTOL_REACHED = 3 , MAXEVAL_REACHED = 4 , MAXTIME_REACHED = 5 , FAILURE = 6 , INVALID_ARGS = 7 , OUT_OF_MEMORY = 8 , ROUNDOFF_LIMITED = 9 , FORCED_STOP = 10 } |
| outcome of an optimization run. More... | |
Functions | |
| string | error_message (const Status aStatus) |
| human-readable explanation of an optimizer status, suitable for a BELFEM_ERROR message when is_usable() is false. | |
| bool | is_success (const Status aStatus) |
| true if the status corresponds to a converged / usable result | |
| bool | is_usable (const Status aStatus) |
| true if the returned design point is usable, even when the solver did not terminate on a clean convergence criterion. | |
|
strong |
optimization algorithm selector.
The names are library-agnostic; the mapping to the concrete nlopt algorithm lives in cl_Optimizer.cpp so that no nlopt header leaks into the public interface.
Naming follows nlopt's own convention where L = local, N = no derivatives, D = uses derivatives.
| Enumerator | |
|---|---|
| BOBYQA | |
| COBYLA | |
| NELDERMEAD | |
| SBPLX | |
| PRAXIS | |
| MMA | |
| SLSQP | |
| LBFGS | |
|
strong |
outcome of an optimization run.
The success codes mirror the termination reasons reported by the underlying library so the caller can tell why the solver stopped without depending on nlopt headers.
| Enumerator | |
|---|---|
| SUCCESS | |
| STOPVAL_REACHED | |
| FTOL_REACHED | |
| XTOL_REACHED | |
| MAXEVAL_REACHED | |
| MAXTIME_REACHED | |
| FAILURE | |
| INVALID_ARGS | |
| OUT_OF_MEMORY | |
| ROUNDOFF_LIMITED | |
| FORCED_STOP | |
human-readable explanation of an optimizer status, suitable for a BELFEM_ERROR message when is_usable() is false.
Defined in cl_Optimizer.cpp. Analogous to MUMPS::error_message().
|
inline |
true if the status corresponds to a converged / usable result
|
inline |
true if the returned design point is usable, even when the solver did not terminate on a clean convergence criterion.
This is the MUMPS-style error/warning distinction: ROUNDOFF_LIMITED is the routine "converged as far as floating point allows" exit of the Powell-type algorithms ( BOBYQA/COBYLA ) under tight tolerances, and FORCED_STOP returns the best point found before the stop. Guard fatal aborts with this; use is_success() to detect a clean convergence.