JDFTx  1.7.0
MinimizeParams Struct Reference

Parameters to control the minimization algorithm. More...

#include <MinimizeParams.h>

Public Types

enum  DirectionUpdateScheme {
  PolakRibiere , FletcherReeves , HestenesStiefel , LBFGS ,
  SteepestDescent
}
 Search direction update scheme. More...
 
enum  LinminMethod { DirUpdateRecommended , Relax , Quad , CubicWolfe }
 Line minimization method. More...
 

Public Member Functions

 MinimizeParams ()
 Set the default values.
 

Public Attributes

enum MinimizeParams::DirectionUpdateScheme dirUpdateScheme
 
enum MinimizeParams::LinminMethod linminMethod
 
int nIterations
 Maximum number of iterations (default 100)
 
size_t nDim
 Dimension of optimization space; used only for knormThreshold (default 1)
 
int history
 Number of past variables and residuals to store (BFGS only)
 
FILE * fpLog
 Stream to log iterations to.
 
const char * linePrefix
 prefix for each output line of minimizer, useful for nested minimizations (default "CG\t")
 
const char * energyLabel
 Label for the minimized quantity (default "E")
 
const char * energyFormat
 printf format for the minimized quantity (default "%22.15le")
 
double knormThreshold
 stop when norm of residual against preconditioner falls below this (default: 0)
 
bool maxThreshold
 use max component instead of knorm for knormThreshold (default: False)
 
double(* maxCalculator )(const void *)
 function to calculate max component, needed if maxThreshold = True.
 
double energyDiffThreshold
 stop when energy change is below this for nEnergyDiff successive iterations (default: 0)
 
int nEnergyDiff
 number of successive iterations for energyDiffThreshold check (default: 2)
 
double alphaTstart
 initial value for the test-step size (default: 1.0)
 
double alphaTmin
 minimum value of the test-step size (algorithm gives up when difficulties cause alphaT to fall below this value) (default:1e-10)
 
bool updateTestStepSize
 set alphaT=alpha after every iteration if true (default: true)
 
double alphaTreduceFactor
 Factor to reduce alphaT on difficulties (default 0.1)
 
double alphaTincreaseFactor
 Max ratio of alpha to alphaT, increase alphaT by this factor otherwise (default 3.0)
 
int nAlphaAdjustMax
 maximum number of times to alpha adjust attempts (default 3)
 
double wolfeEnergy
 Wolfe criterion dimensionless threshold for energy.
 
double wolfeGradient
 Wolfe criterion dimensionless threshold for gradient.
 
bool fdTest
 whether to perform a finite difference test before each minimization (default false)
 

Detailed Description

Parameters to control the minimization algorithm.

Member Enumeration Documentation

◆ DirectionUpdateScheme

Search direction update scheme.

Enumerator
PolakRibiere 

Polak-Ribiere (preconditioned) conjugate gradients (default)

FletcherReeves 

Fletcher-Reeves (preconditioned) conjugate gradients.

HestenesStiefel 

Hestenes-Stiefel (preconditioned) conjugate gradients.

LBFGS 

Limited memory version of the BFGS algorithm.

SteepestDescent 

Steepest Descent (always along negative (preconditioned) gradient)

◆ LinminMethod

Line minimization method.

Enumerator
DirUpdateRecommended 

default method recommended by the direction update scheme

Relax 

move by a constant multiple (=alphaTstart) of the search direction (not recommended for CG)

Quad 

use the energy at a test step location to find the minimum along the line (default)

CubicWolfe 

Cubic line search terminated by Wolfe conditions, possibly without a test step.


The documentation for this struct was generated from the following file: