class HCL_UMinTR_d : public HCL_UMinHess_d

The class HCL_UMinTR_d implements a generic algorithm for solving unconstrained minimization problems using a trust region method

Inheritance:


Public Methods

HCL_UMinSubspaceHess_d ( char * fname=NULL )
Usual constructor
HCL_UMinTR_d ( HCL_TrustRegionSolver_d * trs, char * fname = NULL )
Usual constructor
virtual HCL_EvalFunctionalProductDomainHess_d& LastEval ()
LastEval returns a reference to the functional's evaluation object at the most recent point
virtual HCL_EvaluateFunctionalHess_d& LastEval ()
LastEval returns a reference to the functional's evaluation object at the most recent point
virtual int Minimize ( HCL_FunctionalProductDomainHess_d & f, HCL_ProductVector_d & x )
Minimize attempts to find a local minimizer of the functional f, using x as a starting guess
int Minimize ( HCL_FunctionalHess_d & f, HCL_Vector_d & x0 )
Minimize attempts to find a local minimizer of the functional f, using x as a starting guess
virtual Table& Parameters ()
Access to parameter table
Table& Parameters ()
Access to parameter table
virtual void SetScaling ( HCL_LinearOpAdjInv_d * S )
Alternate version of SetScaling.
virtual void SetScaling ( HCL_LinearOpAdj_d * S, HCL_LinearSolver_d * lsolver )
SetScaling defines a new inner product in terms of a symmetric, positive definite operator S: <x,y> = (x,Sy)
virtual void SetScaling ( HCL_LinearOpAdjInv_d * S )
Alternate version of SetScaling.
virtual void SetScaling ( HCL_LinearOpAdj_d * S, HCL_LinearSolver_d * lsolver )
SetScaling defines a new inner product in terms of a symmetric, positive definite operator S: <x,y> = (x,Sy)
virtual void UnSetScaling ()
UnSetScaling returns the inner product to the default.
virtual void UnSetScaling ()
UnSetScaling returns the inner product to the default.

Private Methods

HCL_BasisProductSpace_d* Basis ()
Compute the basis for the subspace
void ProjectedProblem ( HCL_BasisProductSpace_d & Bas, HCL_SymMat_d* & B, HCL_RnVector_d* & g )
Compute the projected operator and gradient

Private

Input Parameters
int MaxItn
(100) maximum number of iterations
double Typf
(1) Typical value of the functional near the solution
double TypxNorm
(1) Typical norm of the unknown vector x near the solution
double GradTol
(1e-2) Gradient tolerance
double MinStep
(1e-20) Minimum allowable step
double MaxStep
(1e+20) Maximum allowable step
int CscMaxLimit
(5) Maximum number of steps of length MaxStep allowed before the algorithm decides that the iterates are diverging
int DumpFlag
(0) Dump level
char DumpFile [81]
(HCL_UMin_lbfgs
int DispPrecision
(6) Display precision---the number of digits sent to the screen
int DumpPrecision
(6) Dump precision---the number of digits sent to the file
int TraceSteps
(0) If nonzero, the iterates are sent to a file using the Write method from the vector class
char StepFile [81]
(HCL_UMinTR
double LowerTol
(1e-1) Tolerance for reducing the trust region radius
double UpperTol
(9e-1) Tolerance for increasing the trust region radius
double Delta
(1) Initial trust region radius
Input Parameters
int MaxItn
(100) Maximum number of iterations.
double Typf
(1) Typical value of the functional near the solution
double TypxNorm
(1) Typical norm of the unknown vector x near the solution
double GradTol
(1e-2) Gradient tolerance
double MinStep
(1e-20) Minimum allowable step
double MaxStep
(1e+20) Maximum allowable step
int CscMaxLimit
(5) Maximum number of steps of length MaxStep allowed before the algorithm decides that the iterates are diverging
int DispFlag
(0) Display level
int DumpFlag
(0) Dump level
char DumpFile [81]
(HCL_UMinSubspace
int DispPrecision
(6) Display precision---the number of digits sent to the screen
int DumpPrecision
(6) Dump precision---the number of digits sent to the file
int TraceSteps
(0) If nonzero, the iterates are sent to a file using the Write method from the vector class
char StepFile [81]
(HCL_UMinSubspace
int KrylovSubspaceLevel
(2) This number determines the dimension of the subspace generated from the components of the gradient by applying the Hessian
double LowerTol
(1e-1) Tolerance for reducing the trust region radius
double UpperTol
(9e-1) Tolerance for increasing the trust region radius
int Reorthogonalize
(0) Flag indicating whether the basis for subspace is to be re-orthogonalized
double Delta
(1

Inherited from HCL_UMinHess_d:

Public

enum return codes (TermCode)

PossibleMinimizer
Possible minimizer
PossibleConvergence
Possible convergence
LineSearchFailed
Line search failed
PossibleDivergence
Possible divergence
IterationLimit
Iteration limit reached
InaccurateGradient
Possible inaccurate gradient calculation

Inherited from HCL_Base:

Public Methods

int Count()
void DecCount()
void IncCount()

Private Fields

int ReferenceCount

Documentation

The class HCL_UMinTR_d implements a generic algorithm for solving unconstrained minimization problems using a trust region method. A HCL_TrustRegionSolver_d, which implements an algorithm for solving the trust region subproblem, is required to construct the minimizer. If the user does not provide a trust region solver, the HCL_TRCG_d, which implements the Steihaug-Toint algorithm, is used by default.

The three important methods of this class are:

Input Parameters
In a parameter file, the names may be prepended by "UMinSubspace::" or "UMinProductDomain::".

int MaxItn
(100) Maximum number of iterations.

double Typf
(1) Typical value of the functional near the solution. Setting this makes the gradient stopping tolerance more meaningful.

double TypxNorm
(1) Typical norm of the unknown vector x near the solution. Setting this makes the gradient stopping tolerance more meaningful.

double GradTol
(1e-2) Gradient tolerance. The algorithm attempts to locate a point where the relative gradient norm (i.e. the norm of the gradient scaled by the size of the vector x and by f(x)) is less than this value.

double MinStep
(1e-20) Minimum allowable step. If the algorithm takes a (relative) step less than this value in norm, it halts and reports "Possible convergence".

double MaxStep
(1e+20) Maximum allowable step. If the algorithm takes too many consecutive steps of length MaxStep, it assumes that the iterates are diverging and reports "Possible divergence".

int CscMaxLimit
(5) Maximum number of steps of length MaxStep allowed before the algorithm decides that the iterates are diverging

int DispFlag
(0) Display level. This determines how much information should be displayed during the execution of the algorithm. Possible values are: 0 - No output; 1 - Function value and gradient norm after final iteration; 2 - Function value and gradient norm after every iteration.

int DumpFlag
(0) Dump level. This determines how much information should be sent to the dump file during the execution of the algorithm. Possible values are: 0 - No output; 1 - Function value and gradient norm after final iteration; 2 - Function value and gradient norm after every iteration.

char DumpFile[81]
(HCL_UMinSubspace.DumpFile) Dump file name.

int DispPrecision
(6) Display precision---the number of digits sent to the screen

int DumpPrecision
(6) Dump precision---the number of digits sent to the file

int TraceSteps
(0) If nonzero, the iterates are sent to a file using the Write method from the vector class

char StepFile[81]
(HCL_UMinSubspace.StepFile) File name for recording iterates.

int KrylovSubspaceLevel
(2) This number determines the dimension of the subspace generated from the components of the gradient by applying the Hessian

double LowerTol
(1e-1) Tolerance for reducing the trust region radius. If the ratio of the actual to the predicted reduction falls below LowerTol, the radius is cut in half.

double UpperTol
(9e-1) Tolerance for increasing the trust region radius. If the ratio of the actual to the predicted reduction is greater than UpperTol, the radius is doubled.

int Reorthogonalize
(0) Flag indicating whether the basis for subspace is to be re-orthogonalized

double Delta
(1.0) Initial trust region radius.

HCL_BasisProductSpace_d* Basis()
Compute the basis for the subspace

void ProjectedProblem( HCL_BasisProductSpace_d & Bas, HCL_SymMat_d* & B, HCL_RnVector_d* & g )
Compute the projected operator and gradient

HCL_UMinSubspaceHess_d( char * fname=NULL )
Usual constructor. The arguments are the number of factors in the domain of the functional to be minimized, and an optional parameter file.

virtual Table& Parameters()
Access to parameter table. Algorithmic parameters can be accessed with Parameters().GetValue( "NAME",val ) or changed with Parameters().PutValue( "NAME",val ).

virtual HCL_EvalFunctionalProductDomainHess_d& LastEval()
LastEval returns a reference to the functional's evaluation object at the most recent point. Thus, after the minimization has completed, the calling routine has access to the last function value and gradient.

virtual void SetScaling( HCL_LinearOpAdj_d * S, HCL_LinearSolver_d * lsolver )
SetScaling defines a new inner product in terms of a symmetric, positive definite operator S: <x,y> = (x,Sy)

virtual void SetScaling( HCL_LinearOpAdjInv_d * S )
Alternate version of SetScaling.

virtual void UnSetScaling()
UnSetScaling returns the inner product to the default.

virtual int Minimize( HCL_FunctionalProductDomainHess_d & f, HCL_ProductVector_d & x )
Minimize attempts to find a local minimizer of the functional f, using x as a starting guess. The return value is the termination code, as given above.

Input Parameters
In a parameter file, the names may be prepended by "UMinlbfgs::" or simply "UMin::".

int MaxItn
(100) maximum number of iterations

double Typf
(1) Typical value of the functional near the solution. Setting this makes the gradient stopping tolerance more meaningful.

double TypxNorm
(1) Typical norm of the unknown vector x near the solution. Setting this makes the gradient stopping tolerance more meaningful.

double GradTol
(1e-2) Gradient tolerance. The algorithm attempts to locate a point where the relative gradient norm (i.e. the norm of the gradient scaled by the size of the vector x and by f(x)) is less than this value.

double MinStep
(1e-20) Minimum allowable step. If the algorithm takes a (relative) step less than this value in norm, it halts and reports "Possible convergence".

double MaxStep
(1e+20) Maximum allowable step. If the algorithm takes too many consecutive steps of length MaxStep, it assumes that the iterates are diverging and reports "Possible divergence".

int CscMaxLimit
(5) Maximum number of steps of length MaxStep allowed before the algorithm decides that the iterates are diverging

int DumpFlag
(0) Dump level. This determines how much information should be sent to the dump file during the execution of the algorithm. Possible values are: 0 - No output; 1 - Function value and gradient norm after final iteration; 2 - Function value and gradient norm after every iteration.

char DumpFile[81]
(HCL_UMin_lbfgs.DumpFile) Dump file name.

int DispPrecision
(6) Display precision---the number of digits sent to the screen

int DumpPrecision
(6) Dump precision---the number of digits sent to the file

int TraceSteps
(0) If nonzero, the iterates are sent to a file using the Write method from the vector class

char StepFile[81]
(HCL_UMinTR.StepFile) File name for recording iterates.

double LowerTol
(1e-1) Tolerance for reducing the trust region radius. If the ratio of the actual to the predicted reduction falls below LowerTol, the radius is cut in half.

double UpperTol
(9e-1) Tolerance for increasing the trust region radius. If the ratio of the actual to the predicted reduction is greater than UpperTol, the radius is doubled.

double Delta
(1) Initial trust region radius

HCL_UMinTR_d( HCL_TrustRegionSolver_d * trs, char * fname = NULL )
Usual constructor
Parameters:
trs - TrustRegionSolver class (optional). If no trust region solver is specified, then the Steihaug-Toint algorithm (HCL_TRCG_d) will be used.
fname - Parameter file name or NULL. If given, this file contains algorithmic parameters (such as stopping tolerances), a full list of which is given elsewhere in the documentation of this class. For example, to set the maximum number of iterations to 100, the file should contain a line of the form UMinTR::MaxItn = 100 or, alternately, UMin::MaxItn = 100. If the line seach is not provided, then this file will also be passed to the line search constructor, and so can contain entries such as TRSolver::DispFlag = 1.

Table& Parameters()
Access to parameter table. Algorithmic parameters can be accessed with Parameters().GetValue( "NAME",val ) or changed with Parameters().PutValue( "NAME",val ).

virtual HCL_EvaluateFunctionalHess_d& LastEval()
LastEval returns a reference to the functional's evaluation object at the most recent point. Thus, after the minimization has completed, the calling routine has access to the last function value, gradient, and Hessian.

virtual void SetScaling( HCL_LinearOpAdj_d * S, HCL_LinearSolver_d * lsolver )
SetScaling defines a new inner product in terms of a symmetric, positive definite operator S: <x,y> = (x,Sy)

virtual void SetScaling( HCL_LinearOpAdjInv_d * S )
Alternate version of SetScaling.

virtual void UnSetScaling()
UnSetScaling returns the inner product to the default.

int Minimize( HCL_FunctionalHess_d & f, HCL_Vector_d & x0 )
Minimize attempts to find a local minimizer of the functional f, using x as a starting guess


This class has no child classes.

alphabetic index hierarchy of classes


this page has been generated automatically by doc++

(c)opyright by Malte Zöckler, Roland Wunderling
contact: doc++@zib.de