SuanShu, a Java numerical and statistical library

com.numericalmethod.suanshu.optimization.unconstrained.linesearch
Class Fletcher

java.lang.Object
  extended by com.numericalmethod.suanshu.optimization.unconstrained.linesearch.Fletcher

public class Fletcher
extends java.lang.Object

This is the Fletcher's inexact line search method.

An inexact search is usually used in conjunction with a multi-dimensional optimization algorithm. It trades off the accuracy of the search result with the amount of computation. A lot of optimization algorithms are shown to be quite tolerant to line search imprecision.

See Also:

Field Summary
 double chi
          parameter chi ensures that the result is not too close to the boundary
 int maxIterations
          the maximum number of iterations
 double rho
          the precision parameter rho The smaller it is, e.g., 0.1, the more accurate the result is.
 double sigma
          the precision parameter sigma The smaller it is, e.g., 0.1, the more accurate the result is.
 double tau
          parameter tau ensures that the result is not too close to the boundary
 double tol
          the convergence tolerance
 
Constructor Summary
Fletcher(double rho, double sigma, double tau, double chi, RealScalarFunction f, RealVectorFunction gradient, double tol, int maxIterations)
          Construct a Fletcher instance to minimize a function f.
Fletcher(RealScalarFunction f, RealVectorFunction gradient)
          Construct a Fletcher instance to minimize a function f with the default control parameters.
 
Method Summary
 double search(Vector x, Vector d)
          Get a so that f(x + a * d) is (approximately) minimized.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

rho

public final double rho
the precision parameter rho

The smaller it is, e.g., 0.1, the more accurate the result is.


sigma

public final double sigma
the precision parameter sigma

The smaller it is, e.g., 0.1, the more accurate the result is.


tau

public final double tau
parameter tau ensures that the result is not too close to the boundary


chi

public final double chi
parameter chi ensures that the result is not too close to the boundary


tol

public final double tol
the convergence tolerance


maxIterations

public final int maxIterations
the maximum number of iterations

Constructor Detail

Fletcher

public Fletcher(double rho,
                double sigma,
                double tau,
                double chi,
                RealScalarFunction f,
                RealVectorFunction gradient,
                double tol,
                int maxIterations)
Construct a Fletcher instance to minimize a function f.

Parameters:
rho - precision parameter; smaller rho gives better accuracy
sigma - precision parameter; smaller sigma gives better accuracy
tau - control parameter to avoid result too close to boundary
chi - control parameter to avoid result too close to boundary
f - the function to be minimized
gradient - the gradient of f
tol - the convergence tolerance. This affects the precision of the result.
maxIterations - the maximum number of iterations. This affects the precision of the result.

Fletcher

public Fletcher(RealScalarFunction f,
                RealVectorFunction gradient)
Construct a Fletcher instance to minimize a function f with the default control parameters.

Parameters:
f - the function to be minimized
gradient - the gradient of f
Method Detail

search

public double search(Vector x,
                     Vector d)
Get a so that f(x + a * d) is (approximately) minimized.

Parameters:
x - the initial position
d - the search direction
Returns:
a
See Also:
  • "Algorithm 4.6. Practical Optimization: Algorithms and Engineering Applications. Andreas Antoniou, Wu-Sheng Lu."
  • "Section 2.6. Practical Optimization: Algorithms and Engineering Applications. Andreas Antoniou, Wu-Sheng Lu."

SuanShu, a Java numerical and statistical library

Copyright © 2011 Numerical Method Inc. Ltd. All Rights Reserved.