weka.core
Class ConjugateGradientOptimization

java.lang.Object
  extended by weka.core.Optimization
      extended by weka.core.ConjugateGradientOptimization
All Implemented Interfaces:
RevisionHandler, TechnicalInformationHandler

public abstract class ConjugateGradientOptimization
extends Optimization
implements RevisionHandler

This subclass of Optimization.java implements conjugate gradient descent rather than BFGS updates, by overriding findArgmin(), with the same tests for convergence, and applies the same line search code. Note that constraints are NOT actually supported. Using this class instead of Optimization.java can reduce runtime when there are many parameters. Uses the second hybrid method proposed in "An Efficient Hybrid Conjugate Gradient Method for Unconstrained Optimization" by Dai and Yuan (2001). See also information in the getTechnicalInformation() method.

Version:
$Revision: 8078 $
Author:
Eibe Frank

Constructor Summary
ConjugateGradientOptimization()
          Constructor that sets MAXITS to 2000 by default and the parameter in the second weak Wolfe condition to 0.1.
 
Method Summary
 double[] findArgmin(double[] initX, double[][] constraints)
          Main algorithm.
 TechnicalInformation getTechnicalInformation()
          Returns an instance of a TechnicalInformation object, containing detailed information about the technical background of this class, e.g., paper reference or book this class is based on.
 
Methods inherited from class weka.core.Optimization
getMinFunction, getVarbValues, lnsrch, setDebug, setMaxIteration, solveTriangle
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface weka.core.RevisionHandler
getRevision
 

Constructor Detail

ConjugateGradientOptimization

public ConjugateGradientOptimization()
Constructor that sets MAXITS to 2000 by default and the parameter in the second weak Wolfe condition to 0.1.

Method Detail

getTechnicalInformation

public TechnicalInformation getTechnicalInformation()
Returns an instance of a TechnicalInformation object, containing detailed information about the technical background of this class, e.g., paper reference or book this class is based on.

Specified by:
getTechnicalInformation in interface TechnicalInformationHandler
Overrides:
getTechnicalInformation in class Optimization
Returns:
the technical information about this class

findArgmin

public double[] findArgmin(double[] initX,
                           double[][] constraints)
                    throws java.lang.Exception
Main algorithm. NOTE: constraints are not actually supported.

Overrides:
findArgmin in class Optimization
Parameters:
initX - initial point of x, assuming no value's on the bound!
constraints - both arrays must contain Double.NaN
Returns:
the solution of x, null if number of iterations not enough
Throws:
java.lang.Exception - if an error occurs