Multidimensional minimization by the BFGS algorithm (GSL) More...
#include <mmin_bfgs2.h>
The functions mmin() and mmin_de() min a given function until the gradient is smaller than the value of mmin::tol_rel (which defaults to
).
See an example for the usage of this class in Multidimensional minimizer example .
This class includes the optimizations from the GSL minimizer vector_bfgs2.
Default template arguments
func_t - multi_functvec_t - boost::numeric::ublas::vector <double >dfunc_t - mm_functauto_grad_t - gradient<func_t, boost::numeric::ublas::vector <double > >def_auto_grad_t - gradient_gsl<func_t, boost::numeric::ublas::vector < double > >
ex_mmin example with the initial guess of
it seems to converge more poorly for the spring function than the other minimizers with other initial guesses, and I think this will happen in the GSL versions too. I need to examine this more closely with some code designed to clearly show this.Definition at line 387 of file mmin_bfgs2.h.
Protected Attributes | |
The original variables from the GSL state structure | |
| int | iter |
| double | step |
| double | g0norm |
| double | pnorm |
| double | delta_f |
| double | fp0 |
| vec_t | x0 |
| vec_t | g0 |
| vec_t | p |
| vec_t | dx0 |
| vec_t | dg0 |
| mmin_wrapper_gsl< func_t, vec_t, dfunc_t, auto_grad_t > | wrap |
| double | rho |
| double | sigma |
| double | tau1 |
| double | tau2 |
| double | tau3 |
| int | order |
| mmin_linmin_gsl | lm |
| The line minimizer. | |
Protected Attributes inherited from o2scl::mmin_base< multi_funct, multi_funct, boost::numeric::ublas::vector< double > > | |
| std::ostream * | outs |
| Stream for verbose output. | |
| std::istream * | ins |
| Stream for verbose input. | |
Store the arguments to set() so we can use them for iterate() | |
| vec_t * | st_x |
| vec_t | st_dx |
| vec_t | st_grad |
| double | st_f |
| size_t | dim |
| Memory size. | |
| auto_grad_t * | agrad |
| Automatic gradient object. | |
| double | step_size |
| The size of the first trial step (default 0.01) | |
| double | lmin_tol |
| The tolerance for the 1-dimensional minimizer. | |
| def_auto_grad_t | def_grad |
| Default automatic gradient object. | |
| mmin_bfgs2 () | |
| virtual | ~mmin_bfgs2 () |
| virtual int | iterate () |
| Perform an iteration. | |
| virtual const char * | type () |
| Return string denoting type("mmin_bfgs2") | |
| 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. | |
| virtual int | set_de (vec_t &x, double u_step_size, double tol_u, func_t &ufunc, dfunc_t &udfunc) |
| Set the function, the gradient, and the initial guess. | |
| 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 nn. | |
| 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 nn. | |
| mmin_bfgs2 (const mmin_bfgs2< func_t, vec_t, dfunc_t, auto_grad_t, def_auto_grad_t > &) | |
| mmin_bfgs2< func_t, vec_t, dfunc_t, auto_grad_t, def_auto_grad_t > & | operator= (const mmin_bfgs2< func_t, vec_t, dfunc_t, auto_grad_t, def_auto_grad_t > &) |
Additional Inherited Members | |
Public Member Functions inherited from o2scl::mmin_base< multi_funct, multi_funct, boost::numeric::ublas::vector< double > > | |
| mmin_base (const mmin_base< multi_funct, multi_funct, boost::numeric::ublas::vector< double > > &mb) | |
| Copy constructor. | |
| int | set_verbose_stream (std::ostream &out, std::istream &in) |
| Set streams for verbose I/O. More... | |
| virtual int | mmin (size_t nvar, boost::numeric::ublas::vector< double > &x, double &fmin, multi_funct &func)=0 |
Calculate the minimum min of func w.r.t. the array x of size nvar. | |
| virtual int | mmin_de (size_t nvar, boost::numeric::ublas::vector< double > &x, double &fmin, multi_funct &func, multi_funct &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< multi_funct, multi_funct, boost::numeric::ublas::vector< double > > & | operator= (const mmin_base< multi_funct, multi_funct, boost::numeric::ublas::vector< double > > &mb) |
| Copy constructor from operator=. | |
Public Attributes inherited from o2scl::mmin_base< multi_funct, multi_funct, boost::numeric::ublas::vector< double > > | |
| 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". | |
Documentation generated with Doxygen. Provided under the
GNU Free Documentation License (see License Information).