NeuralEngine A Game Engine with embeded Machine Learning algorithms based on Gaussian Processes. |

Public Member Functions | Protected Member Functions | List of all members
NeuralEngine::MachineLearning::ScaledConjugateGradient< Scalar, LSType > Class Template Reference

Conjugate Gradient exit codes. More...

`#include <FgSCG.h>`

Inheritance diagram for NeuralEngine::MachineLearning::ScaledConjugateGradient< Scalar, LSType >:
[legend]
Collaboration diagram for NeuralEngine::MachineLearning::ScaledConjugateGradient< Scalar, LSType >:
[legend]

## Public Member Functions
| ScaledConjugateGradient (int numberOfVariables)
| Creates a new instance of the CG optimization algorithm. More...
| ScaledConjugateGradient (int numberOfVariables, std::function< Scalar(const af::array &, af::array &)> function)
| Creates a new instance of the CG optimization algorithm. More...
| ScaledConjugateGradient (NonlinearObjectiveFunction< Scalar > *function)
| Creates a new instance of the CG optimization algorithm. More...
Public Member Functions inherited from NeuralEngine::MachineLearning::BaseGradientOptimizationMethod< Scalar, MoreThuente >
Scalar | GetTolerance ()
| Gets the relative difference threshold to be used as stopping criteria between two iterations. Default is 0 (iterate until convergence). More...
void | SetTolerance (Scalar tolerance)
| Sets the relative difference threshold to be used as stopping criteria between two iterations. Default is 0 (iterate until convergence). More...
int | GetMaxIterations ()
| Gets the maximum number of iterations to be performed during optimization. Default is 0 (iterate until convergence). More...
void | SetMaxIterations (int iter)
| Sets the maximum number of iterations to be performed during optimization. Default is 0 (iterate until convergence). More...
int | GetIterations ()
| Gets the number of iterations performed in the last call to IOptimizationMethod.Minimize(). More...
Public Member Functions inherited from NeuralEngine::MachineLearning::BaseOptimizationMethod< Scalar >
virtual int | GetNumberOfVariables ()
| Gets the number of variables (free parameters) in the optimization problem. More...
virtual af::array | GetSolution ()
| Gets the current solution found, the values of the parameters which optimizes the function. More...
virtual void | SetSolution (af::array &x)
| Sets the current solution found, the values of the parameters which optimizes the function. More...
virtual Scalar | GetValue ()
| Gets the output of the function at the current Solution. More...
virtual bool | Maximize (af::array &values, int *cycle=nullptr)
| Finds the maximum value of a function. The solution vector will be made available at the Solution property. More...
virtual bool | Minimize (af::array &values, int *cycle=nullptr)
| Finds the minimum value of a function. The solution vector will be made available at the Solution property. More...
virtual bool | Maximize (int *cycle=nullptr)
| Finds the maximum value of a function. The solution vector will be made available at the Solution property. More...
virtual bool | Minimize (int *cycle=nullptr)
| Finds the minimum value of a function. The solution vector will be made available at the Solution property. More...
void | Display (bool display)
| Set to display optimization information. More...
virtual int | GetNumberOfVariables ()=0
| Gets the number of variables (free parameters) in the optimization problem. More...
virtual af::array | GetSolution ()=0
| Gets the current solution found, the values of the parameters which optimizes the function. More...
virtual void | SetSolution (af::array &x)=0
| Gets a solution. More...
virtual Scalar | GetValue ()=0
| Gets the output of the function at the current Solution. More...
virtual bool | Minimize (int *cycle=nullptr)=0
| Finds the minimum value of a function. The solution vector will be made available at the Solution property. More...
virtual bool | Maximize (int *cycle=nullptr)=0
| Finds the maximum value of a function. The solution vector will be made available at the Solution property. More...

## Protected Member Functions
virtual bool | Optimize (int *cycle=nullptr) override
| Implements the actual optimization algorithm. This method should try to minimize the objective function. More...
Protected Member Functions inherited from NeuralEngine::MachineLearning::BaseGradientOptimizationMethod< Scalar, MoreThuente >
| BaseGradientOptimizationMethod (int numberOfVariables)
| Initializes a new instance of the BaseGradientOptimizationMethod class. More...
| BaseGradientOptimizationMethod (int numberOfVariables, std::function< Scalar(const af::array &, af::array &)> function)
| Initializes a new instance of the BaseGradientOptimizationMethod class. More...
| BaseGradientOptimizationMethod (NonlinearObjectiveFunction< Scalar > *function)
| Initializes a new instance of the BaseGradientOptimizationMethod class. More...
void | InitLinesearch ()
| Inits linesearch. More...
Protected Member Functions inherited from NeuralEngine::MachineLearning::BaseOptimizationMethod< Scalar >
void | SetValue (Scalar v)
| Sets the output of the function at the current Solution. More...
void | SetNumberOfVariables (int n)
| Sets the number of variables (free parameters) in the optimization problem. More...
| BaseOptimizationMethod (int numberOfVariables)
| Initializes a new instance of the BaseOptimizationMethod class. More...
| BaseOptimizationMethod (int numberOfVariables, std::function< Scalar(const af::array &, af::array &)> function)
| Initializes a new instance of the BaseOptimizationMethod class. More...
| BaseOptimizationMethod (NonlinearObjectiveFunction< Scalar > *function)
| Initializes a new instance of the BaseOptimizationMethod class. More...
virtual bool | Optimize (int *cycle=nullptr)=0
| Implements the actual optimization algorithm. This method should try to minimize the objective function. More...

## Additional Inherited Members
Protected Attributes inherited from NeuralEngine::MachineLearning::BaseGradientOptimizationMethod< Scalar, MoreThuente >
int | maxIterations
Scalar | _tolerance
int | iterations
ILineSearch< Scalar > * | linesearch
Protected Attributes inherited from NeuralEngine::MachineLearning::BaseOptimizationMethod< Scalar >
NonlinearObjectiveFunction< Scalar > * | _function
af::array | _x
bool | _display
af::dtype | m_dtype

## Detailed Description

template<typename Scalar, LineSearchType LSType = MoreThuente>
class NeuralEngine::MachineLearning::ScaledConjugateGradient< Scalar, LSType >

Conjugate Gradient exit codes.

Admin, 3/27/2017.

Scaled Conjugate Gradient (SCG) optimization method.

In mathematics, the conjugate gradient method is an algorithm for the numerical solution of particular systems of linear equations, namely those whose matrix is symmetric and positive- definite. The conjugate gradient method is an iterative method, so it can be applied to sparse systems that are too large to be handled by direct methods. Such systems often arise when numerically solving partial differential equations. The nonlinear conjugate gradient method generalizes the conjugate gradient method to nonlinear optimization (Wikipedia, 2011).

The framework implementation of this method is based on the original FORTRAN source code by Jorge Nocedal (see references below). The original FORTRAN source code of CG+ (for large scale unconstrained problems) is available at http://users.eecs.northwestern.edu/~nocedal/CG+.html and had been made freely available for educational or commercial use. The original authors expect that all publications describing work using this software quote the (Gilbert and Nocedal, 1992) reference given below.

References:

- J. C. Gilbert and J. Nocedal. Global Convergence Properties of Conjugate Gradient Methods for Optimization, (1992) SIAM J. on Optimization, 2, 1.
- Wikipedia contributors, "Nonlinear conjugate gradient method," Wikipedia, The Free Encyclopedia, http://en.wikipedia.org/w/index.php?title=Nonlinear_conjugate_gradient_method (accessed December 22, 2011).
- Wikipedia contributors, "Conjugate gradient method," Wikipedia, The Free Encyclopedia, http://en.wikipedia.org/w/index.php?title=Conjugate_gradient_method (accessed December 22, 2011).

See also
  BroydenFletcherGoldfarbShanno, ResilientBackpropagation, BoundedBroydenFletcherGoldfarbShanno, TrustRegionNewtonMethod

Definition at line 144 of file FgSCG.h.

## Constructor & Destructor Documentation

## ◆ ScaledConjugateGradient() [1/3]

template<typename Scalar , LineSearchType LSType = MoreThuente>

NeuralEngine::MachineLearning::ScaledConjugateGradient< Scalar, LSType >::ScaledConjugateGradient | ( | int | numberOfVariables | ) |

Creates a new instance of the CG optimization algorithm.

Admin, 3/27/2017.

Parameters

  numberOfVariables | The number of free parameters in the optimization problem.

## ◆ ScaledConjugateGradient() [2/3]

template<typename Scalar , LineSearchType LSType = MoreThuente>

NeuralEngine::MachineLearning::ScaledConjugateGradient< Scalar, LSType >::ScaledConjugateGradient | ( | int | numberOfVariables,
|  | std::function< Scalar(const af::array &, af::array &)> | function
| ) |  |

Creates a new instance of the CG optimization algorithm.

Admin, 3/27/2017.

Parameters

  numberOfVariables | The number of free parameters in the function to be optimized.
  function | [in,out] The function to be optimized.
  gradient | [in,out] The gradient of the function.

## ◆ ScaledConjugateGradient() [3/3]

template<typename Scalar , LineSearchType LSType = MoreThuente>

NeuralEngine::MachineLearning::ScaledConjugateGradient< Scalar, LSType >::ScaledConjugateGradient | ( | NonlinearObjectiveFunction< Scalar > * | function | ) |

Creates a new instance of the CG optimization algorithm.

Admin, 3/27/2017.

Parameters

  function | The objective function and gradients whose optimum values should be found.

## Member Function Documentation

## ◆ Optimize()

template<typename Scalar , LineSearchType LSType = MoreThuente>

virtual bool NeuralEngine::MachineLearning::ScaledConjugateGradient< Scalar, LSType >::Optimize | ( | int * | cycle = `nullptr` | ) |
| override protected virtual

Implements the actual optimization algorithm. This method should try to minimize the objective function.

Hmetal T, 11.04.2017.

Returns
  true if it succeeds, false if it fails.

Implements NeuralEngine::MachineLearning::BaseOptimizationMethod< Scalar >.

The documentation for this class was generated from the following file:

- FgSCG.h