Package ffx.numerics.optimization
Class LineSearch
java.lang.Object
ffx.numerics.optimization.LineSearch
This class implements an algorithm for uni-dimensional line search. This file is a translation of
FORTRAN code written by Jay Ponder.
- Since:
- 1.0
- Author:
- Michael J. Schnieders
Derived from Jay Ponder's FORTRAN code (search.f).
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic enum
The six possible line search results: -
Method Summary
Modifier and TypeMethodDescriptiondouble
search
(int n, double[] x, double f, double[] g, double[] p, double[] angle, double fMove, LineSearch.LineSearchResult[] info, int[] functionEvaluations, OptimizationInterface optimizationSystem) Minimize a function along a search direction.
-
Method Details
-
search
public double search(int n, double[] x, double f, double[] g, double[] p, double[] angle, double fMove, LineSearch.LineSearchResult[] info, int[] functionEvaluations, OptimizationInterface optimizationSystem) Minimize a function along a search direction.This is a unidimensional line search based upon parabolic extrapolation and cubic interpolation using both function and gradient values; if forced to search in an uphill direction, return is after the initial step.
- Parameters:
n
- Number of variables.x
- Current variable values.f
- Current function value.g
- Current gradient values.p
- Search direction.angle
- Angle between the gradient and search direction.fMove
- Change in function value due to previous step.info
- Line search result.functionEvaluations
- Number of function evaluations.optimizationSystem
- Instance of thePotential
interface.- Returns:
- The final function value.
- Since:
- 1.0
-