class HCL_UMinGradMethod_d : public HCL_UMinGrad_d

HCL_UMinGradMethod provides easy access to the UMinGrad methods

Inheritance:


Public Methods

HCL_UMinAlternationGrad_d ( int n, char * fname=NULL )
Usual constructor
HCL_UMinAlternationHess_d ( int n, char * fname=NULL )
Usual constructor
virtual HCL_EvalFunctionalProductDomainGrad_d& LastEval ()
LastEval returns a reference to the functional's evaluation object at the most recent point
virtual HCL_EvalFunctionalProductDomainHess_d& LastEval ()
LastEval returns a reference to the functional's evaluation object at the most recent point
virtual int Minimize ( HCL_FunctionalProductDomainGrad_d & f, HCL_ProductVector_d & x )
Minimize attempts to find a local minimizer of the functional f, using x as a starting guess
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
virtual Table& Parameters ()
Access to parameter table
virtual Table& Parameters ()
Access to parameter table
void SetNext ( HCL_UMinHess_d * um )
SetNext sets the next minimization algorithm to be set
void SetNext ( HCL_UMinGrad_d * um )
SetNext sets the next minimization algorithm to be set
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_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 void UnSetScaling ()
UnSetScaling returns the inner product to the default.

Public

Constructors and destructor
HCL_UMinGradMethod_d ()
Default constructor.
HCL_UMinGradMethod_d ( const HCL_UMinGradMethod_d & um )
Copy constructor - disabled.
HCL_UMinGradMethod_d ( char * UpdateMethod, char * LineSearchMethod, char * ParameterFile)
Usual constructor
virtual ~HCL_UMinGradMethod_d ()
Destructor

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 DispFlag
(0) Display level
int DumpFlag
(0) Dump level
char DumpFile [81]
(HCL_UMinAlternation
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_UMinAlternation
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_UMinAlternation
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_UMinAlternation

Inherited from HCL_UMinGrad_d:

Public Classes

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

Public

enum
PossibleMinimizer
Possible local 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

HCL_UMinGradMethod provides easy access to the UMinGrad methods. The available choices of direction update and line search, by name, form the parameter list of the constructor, which invokes the appropriate constructor for the method combination chosen by the user.

Since the base class for unconstrained minimization, HCL_UMin, is divided explicitly into a base class for functions with gradient only and another for functions with Hessian also, this method-chooser class perforce splits in the same way.

IMPORTANT NOTE: this version (9/97) does not enable specification of various sorts of preconditioning options offered by the UMin constructors. For the moment users wishing to use these features will need to use the UMin constructors directly.

Input Parameters
In a parameter file, the names may be prepended by "UMinAlternation::" 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 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_UMinAlternation.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_UMinAlternation.StepFile) File name for recording iterates.

HCL_UMinAlternationGrad_d( int n, 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_EvalFunctionalProductDomainGrad_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.

void SetNext( HCL_UMinGrad_d * um )
SetNext sets the next minimization algorithm to be set. The program creating the HCL_UMinAlternationGrad_d object is responsible for defining a minimization algorithm for each coordinate direction using this method.

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_FunctionalProductDomainGrad_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 "UMinAlternation::" 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_UMinAlternation.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_UMinAlternation.StepFile) File name for recording iterates.

HCL_UMinAlternationHess_d( int n, 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.

void SetNext( HCL_UMinHess_d * um )
SetNext sets the next minimization algorithm to be set. The program creating the HCL_UMinAlternationHess_d object is responsible for defining a minimization algorithm for each coordinate direction using this method.

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.

Constructors and destructor

HCL_UMinGradMethod_d()
Default constructor.

HCL_UMinGradMethod_d( const HCL_UMinGradMethod_d & um )
Copy constructor - disabled.

HCL_UMinGradMethod_d( char * UpdateMethod, char * LineSearchMethod, char * ParameterFile)
Usual constructor. Legal choices of UpdateMethod:
  • BFGS (limited memory BFGS, following Nocedal)
  • NLCG (nonlinear conjugate gradient algorithm following Fletcher)
Legal choices of LineSearchMethod:
  • DennisSchnabel
  • Fletcher
  • MoreThuente
See the documentation for the classes implementing these algorithms for more information (HCL_UMin_d, HCL_LineSearch_d).

virtual ~HCL_UMinGradMethod_d()
Destructor


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