|
| ScalarOptimizer () |
|
std::string | name () const |
|
| Solver () |
|
| Solver (FunctionWrapper function, const InputType &x_ini, InputType &x_sol) |
|
| Solver (FunctionWrapper function, FirstDerivativeWrapper first_derivative, const InputType &x_ini, InputType &x_sol) |
|
| Solver (FunctionWrapper function, FirstDerivativeWrapper first_derivative, SecondDerivativeWrapper second_derivative, const InputType &x_ini, InputType &x_sol) |
|
const InputType & | lower_bound () const |
|
void | lower_bound (const InputType &t_lower_bound) |
|
const InputType & | upper_bound () const |
|
void | upper_bound (const InputType &t_upper_bound) |
|
void | bounds (const InputType &t_lower_bound, const InputType &t_upper_bound) |
|
constexpr Integer | input_dimension () const |
|
constexpr Integer | output_dimension () const |
|
Integer | function_evaluations () const |
|
void | max_function_evaluations (Integer t_max_function_evaluations) |
|
Integer | max_function_evaluations () const |
|
Integer | iterations () const |
|
Integer | max_iterations () const |
|
void | max_iterations (Integer t_max_iterations) |
|
Real | alpha () const |
|
void | alpha (Real t_alpha) |
|
Integer | relaxations () const |
|
Integer | max_relaxations () const |
|
void | max_relaxations (Integer t_max_relaxations) |
|
Real | tolerance () const |
|
void | tolerance (Real t_tolerance) |
|
void | verbose_mode (bool t_verbose) |
|
bool | verbose_mode () const |
|
void | enable_verbose_mode () |
|
void | disable_verbose_mode () |
|
void | damped_mode (bool t_damped) |
|
bool | damped_mode () const |
|
void | enable_damped_mode () |
|
void | disable_damped_mode () |
|
std::string | task () const |
|
void | task (std::string t_task) |
|
bool | converged () const |
|
const TraceType & | trace () const |
|
std::ostream & | ostream () const |
|
void | ostream (std::ostream &t_ostream) |
|
bool | solve (FunctionWrapper function, const InputType &x_ini, InputType &x_sol) |
|
bool | solve (FunctionWrapper function, FirstDerivativeWrapper first_derivative, const InputType &x_ini, InputType &x_sol) |
|
bool | solve (FunctionWrapper function, FirstDerivativeWrapper first_derivative, SecondDerivativeWrapper second_derivative, const InputType &x_ini, InputType &x_sol) |
|
bool | rootfind (Function< Real, FunInDim, FunOutDim, DerivedFunction > const &function, const InputType &x_ini, InputType &x_sol) |
|
bool | optimize (Function< Real, FunInDim, FunOutDim, DerivedFunction > const &function, const InputType &x_ini, InputType &x_sol) |
|
std::string | name () const |
|
|
using | InputType |
|
using | OutputType |
|
using | TraceType |
|
using | FirstDerivativeType |
|
using | SecondDerivativeType |
|
using | FunctionWrapper |
|
using | FirstDerivativeWrapper |
|
using | SecondDerivativeWrapper |
|
Integer | first_derivative_evaluations () const |
|
Integer | max_first_derivative_evaluations () const |
|
void | max_first_derivative_evaluations (Integer first_derivative_evaluations) |
|
Integer | second_derivative_evaluations () const |
|
Integer | max_second_derivative_evaluations () const |
|
void | max_second_derivative_evaluations (Integer second_derivative_evaluations) |
|
bool | solve (Function< Real, FunInDim, FunOutDim, DerivedFunction > const &function, const InputType &x_ini, InputType &x_sol, bool is_optimization) |
|
void | reset () |
|
void | evaluate_function (FunctionWrapper function, const InputType &x, OutputType &out) |
|
void | evaluate_first_derivative (FirstDerivativeWrapper function, const InputType &x, FirstDerivativeType &out) |
|
void | evaluate_second_derivative (SecondDerivativeWrapper function, const InputType &x, SecondDerivativeType &out) |
|
void | store_trace (const InputType &x) |
|
bool | damp (FunctionWrapper function, InputType const &x_old, InputType const &function_old, InputType const &step_old, InputType &x_new, InputType &function_new, InputType &step_new) |
|
void | header () |
|
void | bottom () |
|
void | info (Real residuals, std::string const ¬es="-") |
|
InputType | m_lower_bound |
|
InputType | m_upper_bound |
|
Integer | m_function_evaluations |
|
Integer | m_first_derivative_evaluations |
|
Integer | m_second_derivative_evaluations |
|
Integer | m_max_function_evaluations |
|
Integer | m_max_first_derivative_evaluations |
|
Integer | m_max_second_derivative_evaluations |
|
Integer | m_iterations |
|
Integer | m_max_iterations |
|
Real | m_alpha |
|
Integer | m_relaxations |
|
Integer | m_max_relaxations |
|
Real | m_tolerance |
|
bool | m_verbose |
|
bool | m_damped |
|
std::ostream * | m_ostream |
|
std::string | m_task |
|
bool | m_converged |
|
TraceType | m_trace |
|
template<typename Real, typename DerivedSolver>
class Optimist::ScalarOptimizer::ScalarOptimizer< Real, DerivedSolver >
Scalar optimizer
This section describes the scalar optimizers implemented in Optimist
. The available optimizers are derivative and non-derivative methods. Derivative methods employ the function's derivative to find the minimum with high accuracy, while non-derivative methods approximate the derivative for improved efficiency in certain scenarios.
Here, the solvers are implemented for solving problems of the form
\[ \min_{x} f(x) = 0 \quad \text{with} \quad f: \mathbb{R} \rightarrow \mathbb{R} \text{,}
\]
which consist in finding the minimum of the function \(f\) by iteratively updating the current iterate \(x_k\) until convergence is achieved. The solvers require the function \(f\) and its first derivative \(f^{\prime}(x)\) to be provided by the user. Alternatively, the derivative can be approximated numerically using finite differences, depending on the problem's complexity and the user's preference.
- Template Parameters
-
Real | Scalar number type. |
DerivedSolver | Derived solver class. |