weka.core
Class ConjugateGradientOptimization
java.lang.Object
weka.core.Optimization
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 java.lang.Object |
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
ConjugateGradientOptimization
public ConjugateGradientOptimization()
- Constructor that sets MAXITS to 2000 by default and the parameter
in the second weak Wolfe condition to 0.1.
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