The OptimizationLogic trait specifies the requirements for the logic to be used in each step of a L-BFGS variable minimization done by the lbfgsMain method of the LBFGS object. The methods provided in this trait are called directly by the code used by the LBFGS class.
Classes mixing in this trait must implement two methods: evaluate and progress. The evaluate method is used to evaluate the gradients and objective function for a given state of the variables. The progress method is used to report on how the minimization process is progressing.
Receives the progress of each iteration of the optimization process. Can be used to display or record said progress and to determine if the optimization should continue or be cancelled. A default implementation is provided to just print the contents of the current iteration of the optimization.
Receives the progress of each iteration of the optimization process. Can be used to display or record said progress and to determine if the optimization should continue or be cancelled. A default implementation is provided to just print the contents of the current iteration of the optimization.
Value parameters
fx
Current value of the objective function.
g
VectorD with the current value of the gradient vector.
gnorm
Euclidean norm of the gradient vector.
instance
an optional user data segment that may be provided when calling the LBFGS.lbfgsMain method and may have Any type, but must be the same type used by the evaluate method of classes extending this trait. Note, has type MemorySegmentin OptimizationLogicC.
k
Iteration count.
ls
The number of evaluations called for this iteration.
n
The number of variables.
step
Step used by the line search routine in this iteration.
x
VectorD with the current values of the variables.
xnorm
Euclidean norm of the variables.
Attributes
Returns
int Determines if optimization should continue. Zero continues optimization. Non-zero values cancel the optimization.