Optimist  0.0.0
A C++ library for optimization
Loading...
Searching...
No Matches
Optimist::Optimizer::NelderMead< Real, N > Class Template Reference

Class container for the Nelder-Mead's method. More...

#include <NelderMead.hh>

Inherits Optimist::Optimizer::Optimizer< Real, N, NelderMead< Real, N > >.

Public Types

using Vector = typename Optimizer<Real, N, NelderMead<Real, N>>::Vector
using Matrix = typename Optimizer<Real, N, NelderMead<Real, N>>::Matrix
using FunctionWrapper = typename Optimizer<Real, N, NelderMead<Real, N>>::FunctionWrapper
using Simplex = std::vector<Vector>
Public Types inherited from Optimist::Optimizer::Optimizer< Real, N, NelderMead< Real, N > >
using Vector
using RowVector
using Matrix
using FunctionWrapper
using GradientWrapper
using HessianWrapper

Public Member Functions

 NelderMead ()
std::string name_impl () const
void initialize (const Vector &x_ini, Real delta)
Vector centroid () const
void sort (FunctionWrapper function)
 Sort the points of the simplex based on the function values and updates the centroid.
Vector reflection () const
 Computes the reflection point.
Vector expansion (const Vector &x) const
 Computes the expansion point.
Vector outward_contraction (const Vector &x) const
Vector inward_contraction () const
void shrink ()
bool solve_impl (FunctionWrapper function, Vector const &x_ini, Vector &x_sol)
Public Member Functions inherited from Optimist::Optimizer::Optimizer< Real, N, NelderMead< Real, N > >
 Optimizer ()
std::string name () const
Integer gradient_evaluations () const
Integer max_gradient_evaluations () const
Integer hessian_evaluations () const
Integer max_hessian_evaluations () const
Public Member Functions inherited from Optimist::SolverBase< Real, N, 1, NelderMead< Real, N >, false >
 SolverBase ()
const InputTypelower_bound () const
const InputTypeupper_bound () const
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 iterations () const
Integer max_iterations () const
Real alpha () const
Integer relaxations () const
Integer max_relaxations () const
Real tolerance () const
void verbose_mode (bool t_verbose)
void enable_verbose_mode ()
void disable_verbose_mode ()
void damped_mode (bool t_damped)
void enable_damped_mode ()
void disable_damped_mode ()
std::string task () const
bool converged () const
const TraceTypetrace () const
std::ostream & ostream () const
bool solve (FunctionWrapper function, const InputType &x_ini, InputType &x_sol)
bool rootfind (FunctionBase< Real, FunInDim, FunOutDim, DerivedFunction, ForceEigen &&FunOutDim==1 > const &function, const InputType &x_ini, InputType &x_sol)
bool optimize (FunctionBase< Real, FunInDim, FunOutDim, DerivedFunction, ForceEigen &&FunOutDim==1 > const &function, const InputType &x_ini, InputType &x_sol)
std::string name () const

Static Public Attributes

static constexpr bool requires_function {true}
static constexpr bool requires_first_derivative {false}
static constexpr bool requires_second_derivative {false}
Static Public Attributes inherited from Optimist::Optimizer::Optimizer< Real, N, NelderMead< Real, N > >
static constexpr bool is_rootfinder
static constexpr bool is_optimizer
static constexpr bool requires_function
static constexpr bool requires_first_derivative
static constexpr bool requires_second_derivative

Private Attributes

Simplex m_s
Vector m_c
Real m_alpha {1.0}
Real m_gamma {2.0}
Real m_rho {0.5}
Real m_sigma {0.5}

Additional Inherited Members

Protected Types inherited from Optimist::SolverBase< Real, N, 1, NelderMead< Real, N >, false >
using InputType
using OutputType
using TraceType
using FirstDerivativeType
using SecondDerivativeType
using FunctionWrapper
using FirstDerivativeWrapper
using SecondDerivativeWrapper
Protected Member Functions inherited from Optimist::Optimizer::Optimizer< Real, N, NelderMead< Real, N > >
void evaluate_gradient (GradientWrapper gradient, const Vector &x, Matrix &out)
void evaluate_hessian (HessianWrapper hessian, const Vector &x, Matrix &out)
bool solve (FunctionWrapper function, Vector const &x_ini, Vector &x_sol)
Protected Member Functions inherited from Optimist::SolverBase< Real, N, 1, NelderMead< Real, N >, false >
Integer first_derivative_evaluations () const
Integer max_first_derivative_evaluations () const
Integer second_derivative_evaluations () const
Integer max_second_derivative_evaluations () const
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 &notes="-")
Protected Attributes inherited from Optimist::SolverBase< Real, N, 1, NelderMead< Real, N >, false >
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

Detailed Description

template<typename Real, Integer N>
class Optimist::Optimizer::NelderMead< Real, N >
Template Parameters
RealScalar number type.
NDimension of the root-finding problem.

Member Typedef Documentation

◆ FunctionWrapper

template<typename Real, Integer N>
using Optimist::Optimizer::NelderMead< Real, N >::FunctionWrapper = typename Optimizer<Real, N, NelderMead<Real, N>>::FunctionWrapper

◆ Matrix

template<typename Real, Integer N>
using Optimist::Optimizer::NelderMead< Real, N >::Matrix = typename Optimizer<Real, N, NelderMead<Real, N>>::Matrix

◆ Simplex

template<typename Real, Integer N>
using Optimist::Optimizer::NelderMead< Real, N >::Simplex = std::vector<Vector>

Simplex type.

◆ Vector

template<typename Real, Integer N>
using Optimist::Optimizer::NelderMead< Real, N >::Vector = typename Optimizer<Real, N, NelderMead<Real, N>>::Vector

Constructor & Destructor Documentation

◆ NelderMead()

template<typename Real, Integer N>
Optimist::Optimizer::NelderMead< Real, N >::NelderMead ( )
inline

Nelder-Mead shrink coefficient. Class constructor for the NelderMead solver.

Member Function Documentation

◆ centroid()

template<typename Real, Integer N>
Vector Optimist::Optimizer::NelderMead< Real, N >::centroid ( ) const
inline

Compute the centroid of the simplex.

Returns
The centroid of the simplex.

◆ expansion()

template<typename Real, Integer N>
Vector Optimist::Optimizer::NelderMead< Real, N >::expansion ( const Vector & x) const
inline
Parameters
xThe reflection point.
Returns
The expansion point.

◆ initialize()

template<typename Real, Integer N>
void Optimist::Optimizer::NelderMead< Real, N >::initialize ( const Vector & x_ini,
Real delta )
inline

Initialize the simplex around a given centroid.

Parameters
x_iniThe initial point.
deltaThe initial step size.

◆ inward_contraction()

template<typename Real, Integer N>
Vector Optimist::Optimizer::NelderMead< Real, N >::inward_contraction ( ) const
inline

Computes the inward contraction point.

Returns
The contraction point.

◆ name_impl()

template<typename Real, Integer N>
std::string Optimist::Optimizer::NelderMead< Real, N >::name_impl ( ) const
inline

Get the Nelder-Mead's solver name.

Returns
The Nelder-Mead's solver name.

◆ outward_contraction()

template<typename Real, Integer N>
Vector Optimist::Optimizer::NelderMead< Real, N >::outward_contraction ( const Vector & x) const
inline

Computes the outward contraction point.

Parameters
xThe reflection point.
Returns
The contraction point.

◆ reflection()

template<typename Real, Integer N>
Vector Optimist::Optimizer::NelderMead< Real, N >::reflection ( ) const
inline
Returns
The reflection point.

◆ shrink()

template<typename Real, Integer N>
void Optimist::Optimizer::NelderMead< Real, N >::shrink ( )
inline

Shrinks the simplex towards the best point.

◆ solve_impl()

template<typename Real, Integer N>
bool Optimist::Optimizer::NelderMead< Real, N >::solve_impl ( FunctionWrapper function,
Vector const & x_ini,
Vector & x_sol )
inline

Solve the nonlinear system of equations \( \mathbf{f}(\mathbf{x}) = 0 \), with \(\mathbf{f}: \mathbb{R}^n \rightarrow \mathbb{R}^n \).

Parameters
[in]functionFunction wrapper.
[in]x_iniInitialization point.
[out]x_solSolution point.
Returns
The convergence boolean flag.

◆ sort()

template<typename Real, Integer N>
void Optimist::Optimizer::NelderMead< Real, N >::sort ( FunctionWrapper function)
inline

Member Data Documentation

◆ m_alpha

template<typename Real, Integer N>
Real Optimist::Optimizer::NelderMead< Real, N >::m_alpha {1.0}
private

◆ m_c

template<typename Real, Integer N>
Vector Optimist::Optimizer::NelderMead< Real, N >::m_c
private

The centroid of the simplex (ex_cluding the worst point).

◆ m_gamma

template<typename Real, Integer N>
Real Optimist::Optimizer::NelderMead< Real, N >::m_gamma {2.0}
private

Nelder-Mead reflection coefficient.

◆ m_rho

template<typename Real, Integer N>
Real Optimist::Optimizer::NelderMead< Real, N >::m_rho {0.5}
private

Nelder-Mead expansion coefficient.

◆ m_s

template<typename Real, Integer N>
Simplex Optimist::Optimizer::NelderMead< Real, N >::m_s
private

Simplex representing the vertices of the simplex.

◆ m_sigma

template<typename Real, Integer N>
Real Optimist::Optimizer::NelderMead< Real, N >::m_sigma {0.5}
private

Nelder-Mead contraction coefficient.

◆ requires_first_derivative

template<typename Real, Integer N>
bool Optimist::Optimizer::NelderMead< Real, N >::requires_first_derivative {false}
staticconstexpr

◆ requires_function

template<typename Real, Integer N>
bool Optimist::Optimizer::NelderMead< Real, N >::requires_function {true}
staticconstexpr

◆ requires_second_derivative

template<typename Real, Integer N>
bool Optimist::Optimizer::NelderMead< Real, N >::requires_second_derivative {false}
staticconstexpr

The documentation for this class was generated from the following file: