Public Member Functions | Public Attributes | Protected Types | Protected Member Functions | Protected Attributes | Private Member Functions | List of all members
o2scl::mmin_constr_pgrad< func_t, dfunc_t, vec_t > Class Template Reference

Constrained minimization by the projected gradient method (OOL) More...

#include <mmin_constr_pgrad.h>

Inheritance diagram for o2scl::mmin_constr_pgrad< func_t, dfunc_t, vec_t >:
o2scl::mmin_constr< func_t, dfunc_t, ool_hfunct11, vec_t > o2scl::mmin_base< func_t, dfunc_t, vec_t >

Public Member Functions

virtual int allocate (const size_t n)
 Allocate memory.
 
virtual int free ()
 Free previously allocated memory.
 
virtual int set (func_t &fn, dfunc_t &dfn, vec_t &init)
 Set the function, the initial guess, and the parameters.
 
virtual int restart ()
 Restart the minimizer.
 
virtual int iterate ()
 Perform an iteration.
 
virtual int is_optimal ()
 See if we're finished.
 
const char * type ()
 Return string denoting type ("mmin_constr_pgrad")
 
- Public Member Functions inherited from o2scl::mmin_constr< func_t, dfunc_t, ool_hfunct11, vec_t >
virtual int set_hess (func_t &fn, dfunc_t &dfn, ool_hfunct11 &hfn, vec_t &init)
 Set the function, the gradient, the Hessian product, and the initial guess.
 
virtual int set_constraints (size_t nc, vec_t &lower, vec_t &upper)
 Set the constraints.
 
virtual int mmin (size_t nvar, vec_t &xx, double &fmin, func_t &ff)
 Calculate the minimum min of func w.r.t. the array x of size nvar. More...
 
virtual int mmin_hess (size_t nvar, vec_t &xx, double &fmin, func_t &ff, dfunc_t &df, ool_hfunct11 &hf)
 Calculate the minimum min of ff w.r.t. the array x of size nvar with gradient df and hessian vector product hf.
 
virtual int mmin_de (size_t nvar, vec_t &xx, double &fmin, func_t &ff, dfunc_t &df)
 Calculate the minimum min of func w.r.t. the array x of size nvar with gradient dfunc.
 
const char * type ()
 Return string denoting type ("mmin_constr")
 
- Public Member Functions inherited from o2scl::mmin_base< func_t, dfunc_t, vec_t >
int set_verbose_stream (std::ostream &out, std::istream &in)
 Set streams for verbose I/O. More...
 
template<class vec2_t >
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 (const mmin_base< func_t, dfunc_t, vec_t > &mb)
 Copy constructor.
 
mmin_base< func_t, dfunc_t, vec_t > & operator= (const mmin_base< func_t, dfunc_t, vec_t > &mb)
 Copy constructor from operator=.
 

Public Attributes

double fmin
 Minimum function value (default $ 10^{-99} $) More...
 
double tol
 Tolerance on infinite norm.
 
double alpha
 Constant for the sufficient decrease condition (default $ 10^{-4} $)
 
double sigma1
 Lower bound to the step length reduction.
 
double sigma2
 Upper bound to the step length reduction.
 
- Public Attributes inherited from o2scl::mmin_base< func_t, dfunc_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 Types

typedef ool_hfunct11 hfunc_t
 A convenient typedef for the unused Hessian product type.
 

Protected Member Functions

int proj (vec_t &xt)
 Project into feasible region.
 
int line_search ()
 Line search.
 
- Protected Member Functions inherited from o2scl::mmin_constr< func_t, dfunc_t, ool_hfunct11, vec_t >
void shrink (const size_t nind, gsl_vector_uint *Ind, const vec_t &V)
 Shrink vector V from the full to the reduced space.
 
void expand (const size_t nind, gsl_vector_uint *Ind, const vec_t &V)
 Expand vector V from the reduced to the full space.
 
double calc_f (const size_t nind, gsl_vector_uint *Ind, vec_t &X, vec_t &Xc)
 Evaluate the objective function from the reduced space.
 
int calc_g (const size_t nind, gsl_vector_uint *Ind, vec_t &X, vec_t &Xc, vec_t &G)
 Compute gradient in the reduced space.
 
int calc_Hv (const size_t nind, gsl_vector_uint *Ind, vec_t &X, vec_t &Xc, vec_t &V, vec_t &Hv)
 Evaluate a hessian times a vector from the reduced space. More...
 

Protected Attributes

vec_t xx
 Temporary vector.
 
- Protected Attributes inherited from o2scl::mmin_constr< func_t, dfunc_t, ool_hfunct11, vec_t >
double f
 The current function value.
 
double size
 Desc.
 
vec_t x
 The current minimum vector.
 
vec_t gradient
 The current gradient vector.
 
vec_t dx
 Desc.
 
size_t fcount
 Number of function evaluations.
 
size_t gcount
 Number of gradient evaluations.
 
size_t hcount
 Number of Hessian evaluations.
 
size_t dim
 Number of parameters.
 
size_t nconstr
 Number of constraints.
 
func_t * func
 User-supplied function.
 
dfunc_t * dfunc
 Gradient function.
 
ool_hfunct11hfunc
 Hessian function.
 
vec_t L
 Lower bound constraints.
 
vec_t U
 Upper bound constraints.
 
bool requires_hess
 If true, the algorithm requires the hessian vector product.
 
- Protected Attributes inherited from o2scl::mmin_base< func_t, dfunc_t, vec_t >
std::ostream * outs
 Stream for verbose output.
 
std::istream * ins
 Stream for verbose input.
 

Private Member Functions

 mmin_constr_pgrad (const mmin_constr_pgrad< func_t, dfunc_t, vec_t > &)
 
mmin_constr_pgrad< func_t, dfunc_t, vec_t > & operator= (const mmin_constr_pgrad< func_t, dfunc_t, vec_t > &)
 

Detailed Description

template<class func_t = multi_funct11, class dfunc_t = grad_funct11, class vec_t = boost::numeric::ublas::vector<double>>
class o2scl::mmin_constr_pgrad< func_t, dfunc_t, vec_t >

This is the simple extension of the steepest descent algorithm to constrained minimization. Each step is a line search is performed along the projected gradient direction subject to the specified constraints.

This algorithm is likely not ideal for most problems and is provided mostly for demonstration and educational purposes. Based on implementation of Kelley99 in OOL.

Default template arguments

Idea for Future:

Replace the explicit norm computation below with the more accurate dnrm2 from linalg

Replace the generic variable 'tol' with 'tolf' or 'tolx' from o2scl::mmin_base.

Definition at line 86 of file mmin_constr_pgrad.h.

Member Data Documentation

◆ fmin

template<class func_t = multi_funct11, class dfunc_t = grad_funct11, class vec_t = boost::numeric::ublas::vector<double>>
double o2scl::mmin_constr_pgrad< func_t, dfunc_t, vec_t >::fmin

If the function value is below this value, then the algorithm assumes that the function is not bounded and exits.

Definition at line 182 of file mmin_constr_pgrad.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).