NeuralEngine
A Game Engine with embeded Machine Learning algorithms based on Gaussian Processes.
NonlinearObjectiveFunction.h
1
11#pragma once
12
13#include <MachineLearning/IObjectiveFunction.h>
14
15namespace NeuralEngine
16{
17 namespace MachineLearning
18 {
19 template<typename Scalar>
20 class NE_IMPEXP NonlinearObjectiveFunction : virtual public IObjectiveFunction<Scalar>
21 {
22 public:
23
31 NonlinearObjectiveFunction(int numberOfVariables);
32
43 NonlinearObjectiveFunction(int numberOfVariables, std::function<Scalar(const af::array&, af::array&)> function);
44
59 //NonlinearObjectiveFunction(int numberOfVariables,
60 // std::function<Scalar(const af::array&)> function, std::function<af::array(const af::array&)> gradient);
61
68
76 std::function<Scalar(const af::array&, af::array&)> GetFunction();
77
85 void SetFunction(std::function<Scalar(const af::array&, af::array&)> func);
86
96 Scalar Value(const af::array& x);
97
107 af::array Gradient(const af::array& x);
108
117
125 void CheckGradient(const af::array& probe);
126
137 af::array FiniteGradient(const af::array& x, int accuracy = 0);
138
146 af::array& LowerBound();
147
155 af::array& UpperBound();
156
157 protected:
158
167
168 int _numVariables;
169 std::function<Scalar(const af::array&, af::array&)> _function;
170 //std::function<af::array(const af::array&)> _gradient;
171 af::array _gradient;
172
173 af::array afLowerBound;
174 af::array afUpperBound;
175
176 private:
177 af::dtype _dtype;
178 };
179 }
180}
af::array FiniteGradient(const af::array &x, int accuracy=0)
Finite gradient computation.
std::function< Scalar(const af::array &, af::array &)> GetFunction()
Gets the objective function.
void SetFunction(std::function< Scalar(const af::array &, af::array &)> func)
Gets the objective function.
Scalar Value(const af::array &x)
Computes function value of given x.
NonlinearObjectiveFunction()
Initializes a new instance of the NonlinearObjectiveFunction class.
void CheckGradient(const af::array &probe)
Checks the gradient.
int GetNumberOfVariables()
Gets the number of input variables for the function.
af::array Gradient(const af::array &x)
Gradient of given x.
NonlinearObjectiveFunction(int numberOfVariables)
Constructor.
NonlinearObjectiveFunction(int numberOfVariables, std::function< Scalar(const af::array &, af::array &)> function)
Creates a new objective function specified through a string.