Class mmin_constr_spg (o2scl)

O2scl : Class List

template<class func_t = multi_funct, class dfunc_t = grad_funct, class vec_t = boost::numeric::ublas::vector<double>>
class mmin_constr_spg : public o2scl::mmin_constr<multi_funct, grad_funct, ool_hfunct, boost::numeric::ublas::vector<double>>

Constrained minimization by the spectral projected gradient method (OOL)

This class applies a non-monotone line search strategy to the classical projected gradient method.

As in [Birgin00], this class applies a nonmonotone Armijo sufficient decrease condition for accepting trial points as an improvement over the classical spectral projected gradient method. This method may be competitive with large problems because it has low memory requirements.

Default template arguments

  • func_t - multi_funct

  • dfunc_t - grad_funct

  • vec_t - boost::numeric::ublas::vector < double >

    Idea for Future:

    There is some memory allocation which isn’t deallocated until the destructor, and should be handled a bit more elegantly.

Public Functions

inline mmin_constr_spg()
inline ~mmin_constr_spg()
inline virtual int allocate(const size_t n)

Allocate memory.

inline virtual int free()

Free previously allocated memory.

inline virtual int set(func_t &fn, dfunc_t &dfn, vec_t &init)

Set the function, the initial guess, and the parameters.

inline virtual int restart()

Restart the minimizer.

inline virtual int iterate()

Perform an iteration.

inline virtual int is_optimal()

See if we’re finished.

inline const char *type()

Return string denoting type (“mmin_constr_spg”)

Public Members

double fmin

Minimum function value (default \( 10^{-99} \))

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

double tol

Tolerance on infinite norm (default \( 10^{-4} \))

double alphamin

Lower bound to spectral step size (default \( 10^{-30} \))

double alphamax

Upper bound to spectral step size (default \( 10^{30} \))

double gamma

Sufficient decrease parameter (default \( 10^{-4} \))

double sigma1

Lower bound to the step length reduction (default 0.1)

double sigma2

Upper bound to the step length reduction (default 0.9)

size_t M

Monotonicity parameter (M=1 forces monotonicity) (default 10)

Protected Types

typedef ool_hfunct hfunc_t

A convenient typedef for the unused Hessian product type.

Protected Functions

inline int line_search()

Line search.

inline int proj(vec_t &xt)

Project into feasible region.

Protected Attributes

double alpha

Armijo parameter.

vec_t xx

Temporary vector.

vec_t d

Temporary vector.

vec_t s

Temporary vector.

vec_t y

Temporary vector.

vec_t fvec

Temporary vector.

size_t m

Non-monotone parameter.

int tail

Desc.

Private Functions

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