59 if(
m_func !=
nullptr) retVal =
true;
81 std::vector<ossimTerm*> derivative;
82 for(
size_t i = 0; i < point.size(); ++i){
86 std::vector<ossim_float64> prevPoint;
87 while(step > precision && iter < maxEpoch){
90 for(
size_t i = 0; i < point.size(); ++i){
91 point[i] += -gamma * derivative[i]->evaluate(point);
92 step += pow(point[i]-prevPoint[i], 2);
97 for(
size_t i = 0; i < derivative.size(); ++i){
An abstract class to containing a multivariable function.
std::vector< ossim_float64 > optimize(std::vector< ossim_float64 > startPoint, ossim_float64 gamma=0.001, ossim_float64 precision=0.0001, ossim_uint32 maxEpoch=10000) const
Optimizes the function.
virtual ossimTerm * derivative(const ossim_uint32 &variable) const =0
Calculates the derivative of the term.
~ossimGDoptimizer()
Destroys the object !DOES NOT DELETE FUNCTION!
bool setFunction(ossimTerm *function)
Sets the function to be optimized.
ossimGDoptimizer()
Public Copy constructor.
unsigned int ossim_uint32
Simple Gradient Descent optimizer for ossim.