NeuralEngine
A Game Engine with embeded Machine Learning algorithms based on Gaussian Processes.
BaseGradientOptimizationMethod.h
1
11#pragma once
12
13#include <NeMachineLearningLib.h>
14#include <MachineLearning/BaseOptimizationMethod.h>
15#include <MachineLearning/FgILineSearch.h>
16
17namespace NeuralEngine
18{
19 namespace MachineLearning
20 {
21
22 enum LineSearchType
23 {
24 ArmijoBacktracking,
25 ArmijoBracketing,
26 MoreThuente,
27 StrongWolfeBacktracking,
28 StrongWolfeBracketing,
29 WolfeBacktracking,
30 WolfeBracketing
31 };
32
38 template<typename Scalar, LineSearchType LSType = MoreThuente>
39 class NE_IMPEXP BaseGradientOptimizationMethod : public BaseOptimizationMethod<Scalar>//, public IGradientOptimizationMethod<Scalar>
40 {
41 public:
42 /*/// <summary>
47 public CancellationToken Token{ get; set; }*/
48
57 //virtual int GetNumberOfVariables() override;
58
69 //virtual af::array GetSolution() override;
70
81 //virtual void SetSolution(af::array& x) override;
82
99 //virtual bool Maximize(af::array& values) override;
100
117 //virtual bool Minimize(af::array& values) override;
118
134 //virtual bool Maximize() override;
135
151 //virtual bool Minimize() override;
152
164
175 void SetTolerance(Scalar tolerance);
176
188
199 void SetMaxIterations(int iter);
200
212
214
215 protected:
216
228 BaseGradientOptimizationMethod(int numberOfVariables);
229
247 BaseGradientOptimizationMethod(int numberOfVariables,
248 std::function<Scalar(const af::array&, af::array&)> function);//, std::function<af::array(const af::array&)> gradient);
249
260
267
268 //std::function<af::array(af::array&)> _gradient;
269
270 int maxIterations;
271 Scalar _tolerance;
272 int iterations;
273
274 ILineSearch<Scalar>* linesearch;
275 };
276 }
277}
BaseGradientOptimizationMethod(int numberOfVariables, std::function< Scalar(const af::array &, af::array &)> function)
Initializes a new instance of the BaseGradientOptimizationMethod class.
int GetMaxIterations()
Gets the maximum number of iterations to be performed during optimization. Default is 0 (iterate unti...
Scalar GetTolerance()
Gets the relative difference threshold to be used as stopping criteria between two iterations....
void SetMaxIterations(int iter)
Sets the maximum number of iterations to be performed during optimization. Default is 0 (iterate unti...
void SetTolerance(Scalar tolerance)
Sets the relative difference threshold to be used as stopping criteria between two iterations....
BaseGradientOptimizationMethod(NonlinearObjectiveFunction< Scalar > *function)
Initializes a new instance of the BaseGradientOptimizationMethod class.
BaseGradientOptimizationMethod(int numberOfVariables)
Initializes a new instance of the BaseGradientOptimizationMethod class.
int GetIterations()
Gets the number of iterations performed in the last call to IOptimizationMethod.Minimize().