Class mmin_constr (o2scl)

O2scl : Class List

template<class func_t, class dfunc_t = func_t, class hfunc_t = func_t, class vec_t = boost::numeric::ublas::vector<double>>
class o2scl::mmin_constr : public o2scl::mmin_base<func_t, func_t, boost::numeric::ublas::vector<double>>

Constrained multidimensional minimization (OOL) [abstract base].

Idea for Future:

Implement automatic computations of and Hessian

Idea for Future:

Construct a more difficult example for the “examples” directory

Idea for Future:

Finish mmin() interface

Idea for Future:

Implement a direct computation of the hessian as the jacobian of the gradient

Public Functions

mmin_constr()
~mmin_constr()
int allocate(const size_t n)

Allocate memory.

int restart()

Restart the minimizer.

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

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

int set_hess(func_t &fn, dfunc_t &dfn, hfunc_t &hfn, vec_t &init)

Set the function, the gradient, the Hessian product, and the initial guess.

int set_constraints(size_t nc, vec_t &lower, vec_t &upper)

Set the constraints.

int iterate() = 0

Perform an iteration.

int is_optimal() = 0

See if we’re finished.

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.

Note

This is unimplemented.

int mmin_hess(size_t nvar, vec_t &xx, double &fmin, func_t &ff, dfunc_t &df, hfunc_t &hf)

Calculate the minimum min of ff w.r.t. the array x of size nvar with gradient df and hessian vector product hf.

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”)

Protected Functions

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.

Protected Attributes

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.

hfunc_t *hfunc

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.

Private Functions

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