BELFEM 0.9.0
Berkeley Lab Finite Element Framework
Loading...
Searching...
No Matches
belfem::opt Namespace Reference

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.

Enumeration Type Documentation

◆ Algorithm

enum class belfem::opt::Algorithm
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 

◆ Status

enum class belfem::opt::Status
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 

Function Documentation

◆ error_message()

string belfem::opt::error_message ( const Status aStatus)

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().

◆ is_success()

bool belfem::opt::is_success ( const Status aStatus)
inline

true if the status corresponds to a converged / usable result

◆ is_usable()

bool belfem::opt::is_usable ( const Status aStatus)
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.