flexiblesusy is hosted by Hepforge, IPPP Durham
FlexibleSUSY

Function minimizer. More...

#include <minimizer.hpp>

Inheritance diagram for flexiblesusy::Minimizer< dimension >:
Inheritance graph
Collaboration diagram for flexiblesusy::Minimizer< dimension >:
Collaboration graph

Public Types

using Function_t = std::function< double(const Vector_t &)>
 
enum  Solver_type { GSLSimplex , GSLSimplex2 , GSLSimplex2Rand }
 
using Vector_t = Eigen::Matrix< double, dimension, 1 >
 
- Public Types inherited from flexiblesusy::EWSB_solver
enum  Status : int { SUCCESS = 0 , FAIL = 1 }
 

Public Member Functions

double get_minimum_value () const
 
virtual Eigen::VectorXd get_solution () const override
 
int minimize (const Vector_t &)
 
 Minimizer ()=default
 
template<typename F >
 Minimizer (F &&, std::size_t, double, Solver_type solver_type_=GSLSimplex2)
 
virtual std::string name () const override
 
template<typename F >
void set_function (F &&f)
 
void set_max_iterations (std::size_t n)
 
void set_precision (double p)
 
void set_solver_type (Solver_type t)
 
virtual int solve (const Eigen::VectorXd &) override
 
virtual ~Minimizer ()=default
 
- Public Member Functions inherited from flexiblesusy::EWSB_solver
virtual Eigen::VectorXd get_solution () const =0
 
virtual std::string name () const =0
 
virtual int solve (const Eigen::VectorXd &)=0
 
virtual ~EWSB_solver ()=default
 

Private Member Functions

const gsl_multimin_fminimizer_type * solver_type_to_gsl_pointer () const
 

Static Private Member Functions

static double gsl_function (const gsl_vector *, void *)
 

Private Attributes

Function_t function {nullptr}
 function to minimize More...
 
std::size_t max_iterations {100}
 maximum number of iterations More...
 
Vector_t minimum_point {Vector_t::Zero()}
 vector of minimum point More...
 
double minimum_value {0.}
 minimum function value found More...
 
double precision {1.e-2}
 precision goal More...
 
Solver_type solver_type {GSLSimplex2}
 solver type More...
 

Detailed Description

template<std::size_t dimension>
class flexiblesusy::Minimizer< dimension >

Function minimizer.

The user has to provide the function to be minimized of the type Function_t. This function gets as arguments an Eigen vector of lenght ‘dimension’ and returns a double.

Example:

auto parabola = [](const Eigen::Matrix<double,2,1>& x) -> double {
const double y = x(0);
const double z = x(1);
return Sqr(y - 5.0) + Sqr(z - 1.0);
};
Minimizer<2> minimizer(parabola, 100, 1.0e-5);
const double start[2] = { 10, 10 };
const int status = minimizer.minimize(start);
Function minimizer.
Definition: minimizer.hpp:57
constexpr std::complex< T > Sqr(const std::complex< T > &a) noexcept
Definition: wrappers.hpp:631

Definition at line 57 of file minimizer.hpp.

Member Typedef Documentation

◆ Function_t

template<std::size_t dimension>
using flexiblesusy::Minimizer< dimension >::Function_t = std::function<double(const Vector_t&)>

Definition at line 60 of file minimizer.hpp.

◆ Vector_t

template<std::size_t dimension>
using flexiblesusy::Minimizer< dimension >::Vector_t = Eigen::Matrix<double,dimension,1>

Definition at line 59 of file minimizer.hpp.

Member Enumeration Documentation

◆ Solver_type

template<std::size_t dimension>
enum flexiblesusy::Minimizer::Solver_type
Enumerator
GSLSimplex 
GSLSimplex2 
GSLSimplex2Rand 

Definition at line 61 of file minimizer.hpp.

Constructor & Destructor Documentation

◆ Minimizer() [1/2]

template<std::size_t dimension>
flexiblesusy::Minimizer< dimension >::Minimizer ( )
default

◆ Minimizer() [2/2]

template<std::size_t dimension>
template<typename F >
flexiblesusy::Minimizer< dimension >::Minimizer ( F &&  function_,
std::size_t  max_iterations_,
double  precision_,
Solver_type  solver_type_ = GSLSimplex2 
)

Constructor

Parameters
function_pointer to the function to minimize
max_iterations_maximum number of iterations
precision_precision goal
solver_type_GSL multimin minimizer type

Definition at line 103 of file minimizer.hpp.

◆ ~Minimizer()

template<std::size_t dimension>
virtual flexiblesusy::Minimizer< dimension >::~Minimizer ( )
virtualdefault

Member Function Documentation

◆ get_minimum_value()

template<std::size_t dimension>
double flexiblesusy::Minimizer< dimension >::get_minimum_value ( ) const
inline

Definition at line 68 of file minimizer.hpp.

References flexiblesusy::Minimizer< dimension >::minimum_value.

◆ get_solution()

template<std::size_t dimension>
virtual Eigen::VectorXd flexiblesusy::Minimizer< dimension >::get_solution ( ) const
inlineoverridevirtual

◆ gsl_function()

template<std::size_t dimension>
double flexiblesusy::Minimizer< dimension >::gsl_function ( const gsl_vector *  x,
void *  params 
)
staticprivate

Definition at line 175 of file minimizer.hpp.

References flexiblesusy::arg(), and flexiblesusy::is_finite().

◆ minimize()

◆ name()

template<std::size_t dimension>
virtual std::string flexiblesusy::Minimizer< dimension >::name ( ) const
inlineoverridevirtual

Implements flexiblesusy::EWSB_solver.

Definition at line 77 of file minimizer.hpp.

◆ set_function()

template<std::size_t dimension>
template<typename F >
void flexiblesusy::Minimizer< dimension >::set_function ( F &&  f)
inline

◆ set_max_iterations()

template<std::size_t dimension>
void flexiblesusy::Minimizer< dimension >::set_max_iterations ( std::size_t  n)
inline

◆ set_precision()

template<std::size_t dimension>
void flexiblesusy::Minimizer< dimension >::set_precision ( double  p)
inline

Definition at line 71 of file minimizer.hpp.

References flexiblesusy::Minimizer< dimension >::precision.

◆ set_solver_type()

template<std::size_t dimension>
void flexiblesusy::Minimizer< dimension >::set_solver_type ( Solver_type  t)
inline

Definition at line 73 of file minimizer.hpp.

References flexiblesusy::Minimizer< dimension >::solver_type.

◆ solve()

template<std::size_t dimension>
int flexiblesusy::Minimizer< dimension >::solve ( const Eigen::VectorXd &  start)
overridevirtual

◆ solver_type_to_gsl_pointer()

template<std::size_t dimension>
const gsl_multimin_fminimizer_type * flexiblesusy::Minimizer< dimension >::solver_type_to_gsl_pointer
private

Definition at line 193 of file minimizer.hpp.

References flexiblesusy::to_string().

Member Data Documentation

◆ function

template<std::size_t dimension>
Function_t flexiblesusy::Minimizer< dimension >::function {nullptr}
private

function to minimize

Definition at line 86 of file minimizer.hpp.

Referenced by flexiblesusy::Minimizer< dimension >::set_function().

◆ max_iterations

template<std::size_t dimension>
std::size_t flexiblesusy::Minimizer< dimension >::max_iterations {100}
private

maximum number of iterations

Definition at line 82 of file minimizer.hpp.

Referenced by flexiblesusy::Minimizer< dimension >::set_max_iterations().

◆ minimum_point

template<std::size_t dimension>
Vector_t flexiblesusy::Minimizer< dimension >::minimum_point {Vector_t::Zero()}
private

vector of minimum point

Definition at line 85 of file minimizer.hpp.

Referenced by flexiblesusy::Minimizer< dimension >::get_solution().

◆ minimum_value

template<std::size_t dimension>
double flexiblesusy::Minimizer< dimension >::minimum_value {0.}
private

minimum function value found

Definition at line 84 of file minimizer.hpp.

Referenced by flexiblesusy::Minimizer< dimension >::get_minimum_value().

◆ precision

template<std::size_t dimension>
double flexiblesusy::Minimizer< dimension >::precision {1.e-2}
private

precision goal

Definition at line 83 of file minimizer.hpp.

Referenced by flexiblesusy::Minimizer< dimension >::set_precision().

◆ solver_type

template<std::size_t dimension>
Solver_type flexiblesusy::Minimizer< dimension >::solver_type {GSLSimplex2}
private

solver type

Definition at line 87 of file minimizer.hpp.

Referenced by flexiblesusy::Minimizer< dimension >::set_solver_type().


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