SuanShu, a Java numerical and statistical library

com.numericalmethod.suanshu.optimization.unconstrained.conjugatedirection
Class ConjugateGradient

java.lang.Object
  extended by com.numericalmethod.suanshu.optimization.unconstrained.steepestdescent.SteepestDescent
      extended by com.numericalmethod.suanshu.optimization.unconstrained.conjugatedirection.ConjugateGradient
All Implemented Interfaces:
Minimizer, UnconstrainedMinimizer
Direct Known Subclasses:
FletcherReeves

public class ConjugateGradient
extends SteepestDescent

Conjugate-gradient method generates a new search direction by adding a vector βkdk to the negative gradient -gk+1.

The algorithm is originally developed for quadratic problems. For convex quadratic problems, the algorithm converges in n iterations, where n is the number of variables. It still has good convergence properties when applied to non-quadratic problems.

A conjugate direction optimization method is performed by using sequential search directions that bear a strict mathematical relationship to one another.

See Also:

Nested Class Summary
 
Nested classes/interfaces inherited from class com.numericalmethod.suanshu.optimization.unconstrained.steepestdescent.SteepestDescent
SteepestDescent.LineSearch
 
Field Summary
 
Fields inherited from class com.numericalmethod.suanshu.optimization.unconstrained.steepestdescent.SteepestDescent
f, g, tol
 
Constructor Summary
ConjugateGradient()
           
 
Method Summary
protected  SteepestDescent.LineSearch getLineSearch()
           
 void solve(RealScalarFunction f, RealVectorFunction g, double tol)
           
 void solve(RealScalarFunction f, RealVectorFunction g, RntoMatrix H, double tol)
           
 
Methods inherited from class com.numericalmethod.suanshu.optimization.unconstrained.steepestdescent.SteepestDescent
minimum, search, solve, solve
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ConjugateGradient

public ConjugateGradient()
Method Detail

solve

public void solve(RealScalarFunction f,
                  RealVectorFunction g,
                  RntoMatrix H,
                  double tol)

solve

public void solve(RealScalarFunction f,
                  RealVectorFunction g,
                  double tol)
Overrides:
solve in class SteepestDescent

getLineSearch

protected SteepestDescent.LineSearch getLineSearch()
Specified by:
getLineSearch in class SteepestDescent

SuanShu, a Java numerical and statistical library

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