Public Member Functions | Public Attributes | Private Member Functions | List of all members
o2scl::mmin_conf< func_t, vec_t, dfunc_t, auto_grad_t, def_auto_grad_t > Class Template Reference

Multidimensional minimization by the Fletcher-Reeves conjugate gradient algorithm (GSL) More...

#include <mmin_conf.h>

Inheritance diagram for o2scl::mmin_conf< func_t, vec_t, dfunc_t, auto_grad_t, def_auto_grad_t >:
o2scl::mmin_gsl_base< func_t, vec_t, dfunc_t, auto_grad_t, def_auto_grad_t > o2scl::mmin_base< func_t, func_t, vec_t > o2scl::mmin_conp< func_t, vec_t, dfunc_t, auto_grad_t, def_auto_grad_t >

Public Member Functions

virtual const char * type ()
 Return string denoting type("mmin_conf")
 
GSL-like lower level interface
virtual int iterate ()
 Perform an iteration.
 
virtual int allocate (size_t n)
 Allocate the memory.
 
virtual int free ()
 Free the allocated memory.
 
int restart ()
 Reset the minimizer to use the current point as a new starting point.
 
virtual int set (vec_t &x, double u_step_size, double tol_u, func_t &ufunc)
 Set the function and initial guess. More...
 
virtual int set_de (vec_t &x, double u_step_size, double tol_u, func_t &ufunc, dfunc_t &udfunc)
 Set the function and initial guess.
 
Basic usage
virtual int mmin (size_t nn, vec_t &xx, double &fmin, func_t &ufunc)
 Calculate the minimum min of func w.r.t the array x of size nvar.
 
virtual int mmin_de (size_t nn, vec_t &xx, double &fmin, func_t &ufunc, dfunc_t &udfunc)
 Calculate the minimum min of func w.r.t the array x of size nvar.
 
- Public Member Functions inherited from o2scl::mmin_gsl_base< func_t, vec_t, dfunc_t, auto_grad_t, def_auto_grad_t >
int base_set (func_t &ufunc, auto_grad_t &u_def_grad)
 Set the function.
 
int base_set_de (func_t &ufunc, dfunc_t &udfunc)
 Set the function and the gradient.
 
int base_allocate (size_t nn)
 Allocate memory.
 
int base_free ()
 Clear allocated memory.
 
- Public Member Functions inherited from o2scl::mmin_base< func_t, func_t, vec_t >
 mmin_base (const mmin_base< func_t, func_t, vec_t > &mb)
 Copy constructor.
 
int set_verbose_stream (std::ostream &out, std::istream &in)
 Set streams for verbose I/O. More...
 
virtual int mmin_de (size_t nvar, vec_t &x, double &fmin, func_t &func, func_t &dfunc)
 Calculate the minimum min of func w.r.t. the array x of size nvar with gradient dfunc.
 
int print_iter (size_t nv, vec2_t &x, double y, int iter, double value, double limit, std::string comment)
 Print out iteration information. More...
 
const char * type ()
 Return string denoting type ("mmin_base")
 
mmin_base< func_t, func_t, vec_t > & operator= (const mmin_base< func_t, func_t, vec_t > &mb)
 Copy constructor from operator=.
 

Public Attributes

double lmin_tol
 Tolerance for the line minimization (default $ 10^{-4} $)
 
double step_size
 Size of the initial step (default 0.01)
 
- Public Attributes inherited from o2scl::mmin_gsl_base< func_t, vec_t, dfunc_t, auto_grad_t, def_auto_grad_t >
double deriv_h
 Stepsize for finite-differencing ( default $ 10^{-4} $ )
 
int nmaxiter
 Maximum iterations for line minimization (default 10)
 
def_auto_grad_t def_grad
 Default automatic gradient object.
 
- Public Attributes inherited from o2scl::mmin_base< func_t, func_t, vec_t >
int verbose
 Output control.
 
int ntrial
 Maximum number of iterations.
 
double tol_rel
 Function value tolerance.
 
double tol_abs
 The independent variable tolerance.
 
int last_ntrial
 The number of iterations for in the most recent minimization.
 
bool err_nonconv
 If true, call the error handler if the routine does not "converge".
 

Protected Attributes

The original variables from the GSL state structure
int iter
 Iteration number.
 
double step
 Stepsize.
 
double tol
 Tolerance.
 
vec_t x1
 Desc.
 
vec_t dx1
 Desc.
 
vec_t x2
 Desc.
 
double pnorm
 Desc.
 
vec_t p
 Desc.
 
double g0norm
 Desc.
 
vec_t g0
 Desc.
 
Store the arguments to set() so we can use them for iterate()
vec_t ugx
 Proposed minimum.
 
vec_t ugg
 Gradient.
 
vec_t udx
 Proposed step.
 
double it_min
 Desc.
 
- Protected Attributes inherited from o2scl::mmin_gsl_base< func_t, vec_t, dfunc_t, auto_grad_t, def_auto_grad_t >
func_t * func
 User-specified function.
 
dfunc_t * grad
 User-specified gradient.
 
auto_grad_t * agrad
 Automatic gradient object.
 
bool grad_given
 If true, a gradient has been specified.
 
size_t dim
 Memory size.
 
- Protected Attributes inherited from o2scl::mmin_base< func_t, func_t, vec_t >
std::ostream * outs
 Stream for verbose output.
 
std::istream * ins
 Stream for verbose input.
 

Private Member Functions

 mmin_conf (const mmin_conf< func_t, vec_t, dfunc_t, auto_grad_t, def_auto_grad_t > &)
 
mmin_conf< func_t, vec_t, dfunc_t, auto_grad_t, def_auto_grad_t > & operator= (const mmin_conf< func_t, vec_t, dfunc_t, auto_grad_t, def_auto_grad_t > &)
 

Additional Inherited Members

- Protected Types inherited from o2scl::mmin_gsl_base< func_t, vec_t, dfunc_t, auto_grad_t, def_auto_grad_t >
typedef boost::numeric::ublas::vector< double > ubvector
 
typedef boost::numeric::ublas::matrix< double > ubmatrix
 
- Protected Member Functions inherited from o2scl::mmin_gsl_base< func_t, vec_t, dfunc_t, auto_grad_t, def_auto_grad_t >
void take_step (const vec_t &x, const vec_t &px, double stepx, double lambda, vec_t &x1x, vec_t &dx)
 Take a step.
 
void intermediate_point (const vec_t &x, const vec_t &px, double lambda, double pg, double stepa, double stepc, double fa, double fc, vec_t &x1x, vec_t &dx, vec_t &gradient, double *stepx, double *f)
 Line minimization. More...
 
void min (const vec_t &x, const vec_t &xp, double lambda, double stepa, double stepb, double stepc, double fa, double fb, double fc, double xtol, vec_t &x1x, vec_t &dx1x, vec_t &x2x, vec_t &dx2x, vec_t &gradient, double *xstep, double *f, double *gnorm_u)
 Perform the minimization. More...
 

Detailed Description

template<class func_t = multi_funct11, class vec_t = boost::numeric::ublas::vector<double>, class dfunc_t = grad_funct11, class auto_grad_t = gradient<multi_funct11, boost::numeric::ublas::vector<double> >, class def_auto_grad_t = gradient_gsl<multi_funct11,boost::numeric::ublas::vector<double> >>
class o2scl::mmin_conf< func_t, vec_t, dfunc_t, auto_grad_t, def_auto_grad_t >

This class performs multidimensional minimization by the Fletcher-Reeves conjugate gradient algorithm (GSL). The functions mmin() and mmin_de() minimize a given function until the gradient is smaller than the value of mmin::tol_rel (which defaults to $ 10^{-4} $ ).

This class has a high-level interface using mmin() or mmin_de() which automatically performs the memory allocation and minimization, or a GSL-like interface using allocate(), free(), interate() and set() or set_simplex().

See an example for the usage of this class in Multidimensional minimizer example .

Default template arguments

Note that the state variable max_iter has not been included here, because it was not really used in the original GSL code for these minimizers.

Definition at line 409 of file mmin_conf.h.

Member Function Documentation

◆ set()

template<class func_t = multi_funct11, class vec_t = boost::numeric::ublas::vector<double>, class dfunc_t = grad_funct11, class auto_grad_t = gradient<multi_funct11, boost::numeric::ublas::vector<double> >, class def_auto_grad_t = gradient_gsl<multi_funct11,boost::numeric::ublas::vector<double> >>
virtual int o2scl::mmin_conf< func_t, vec_t, dfunc_t, auto_grad_t, def_auto_grad_t >::set ( vec_t &  x,
double  u_step_size,
double  tol_u,
func_t &  ufunc 
)
inlinevirtual

Evaluate the function and its gradient

Definition at line 608 of file mmin_conf.h.


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

Documentation generated with Doxygen. Provided under the GNU Free Documentation License (see License Information).