OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
Public Member Functions | Private Attributes | List of all members
ossimGDoptimizer Class Reference

Simple Gradient Descent optimizer for ossim. More...

#include <ossimGDoptimizer.h>

Public Member Functions

 ossimGDoptimizer ()
 Public Copy constructor. More...
 
 ossimGDoptimizer (const ossimGDoptimizer &src)
 Public Copy constructor. More...
 
 ~ossimGDoptimizer ()
 Destroys the object !DOES NOT DELETE FUNCTION! More...
 
 ossimGDoptimizer (ossimTerm *function)
 Public Constructor with a preset function. More...
 
bool setFunction (ossimTerm *function)
 Sets the function to be optimized. More...
 
std::vector< ossim_float64optimize (std::vector< ossim_float64 > startPoint, ossim_float64 gamma=0.001, ossim_float64 precision=0.0001, ossim_uint32 maxEpoch=10000) const
 Optimizes the function. More...
 

Private Attributes

ossimTermm_func
 

Detailed Description

Simple Gradient Descent optimizer for ossim.

Author
Dylan Thomas Cannisi
Date
07/24/2017
   See top level LICENSE.txt file.

Definition at line 19 of file ossimGDoptimizer.h.

Constructor & Destructor Documentation

◆ ossimGDoptimizer() [1/3]

ossimGDoptimizer::ossimGDoptimizer ( )

Public Copy constructor.

Simple Gradient Descent optimizer for ossim.

Author
Dylan Thomas Cannisi
Date
07/24/2017
See top level LICENSE.txt file.

Public Copy constructor

Definition at line 17 of file ossimGDoptimizer.cpp.

References m_func.

17  {
18  m_func = nullptr;
19 }
ossimTerm * m_func

◆ ossimGDoptimizer() [2/3]

ossimGDoptimizer::ossimGDoptimizer ( const ossimGDoptimizer src)

Public Copy constructor.

Parameters
[in]srcThe object to be copied (copies pointer not a copy of function)

Definition at line 27 of file ossimGDoptimizer.cpp.

References m_func.

27  {
28  m_func = src.m_func;
29 }
ossimTerm * m_func

◆ ~ossimGDoptimizer()

ossimGDoptimizer::~ossimGDoptimizer ( )

Destroys the object !DOES NOT DELETE FUNCTION!

Definition at line 35 of file ossimGDoptimizer.cpp.

35  {
36 }

◆ ossimGDoptimizer() [3/3]

ossimGDoptimizer::ossimGDoptimizer ( ossimTerm function)

Public Constructor with a preset function.

Parameters
functionThe function to be optimized

Definition at line 44 of file ossimGDoptimizer.cpp.

References m_func.

44  {
45  m_func = function;
46 }
ossimTerm * m_func

Member Function Documentation

◆ optimize()

std::vector< ossim_float64 > ossimGDoptimizer::optimize ( std::vector< ossim_float64 point,
ossim_float64  gamma = 0.001,
ossim_float64  precision = 0.0001,
ossim_uint32  maxEpoch = 10000 
) const

Optimizes the function.

Parameters
[in]startPointThe start point at which the algorithm starts its descent
[in]gammaDetermins the step size as a function of the gradient
[in]precisionThe stopping point at which the algorithm will no longer descend
[in]maxEpochThe stopping point to limit infinite loops.
Returns
the optimial minima

Definition at line 76 of file ossimGDoptimizer.cpp.

References ossimTerm::derivative(), and m_func.

76  {
77 
78  ossim_uint32 iter = 0;
79  ossim_float64 step = 10000;
80 
81  std::vector<ossimTerm*> derivative;
82  for(size_t i = 0; i < point.size(); ++i){
83  derivative.push_back(m_func->derivative(i));
84  }
85 
86  std::vector<ossim_float64> prevPoint;
87  while(step > precision && iter < maxEpoch){
88  step = 0;
89  prevPoint = point;
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);
93  }
94  step = sqrt(step);
95  }
96 
97  for(size_t i = 0; i < derivative.size(); ++i){
98  delete derivative[i];
99  }
100 
101 return point;
102 }
virtual ossimTerm * derivative(const ossim_uint32 &variable) const =0
Calculates the derivative of the term.
double ossim_float64
unsigned int ossim_uint32
ossimTerm * m_func

◆ setFunction()

bool ossimGDoptimizer::setFunction ( ossimTerm function)

Sets the function to be optimized.

Parameters
functionThe function to be optimized
Returns
whether or not the optimizer already contained a function

Definition at line 56 of file ossimGDoptimizer.cpp.

References m_func.

56  {
57  bool retVal = false;
58 
59  if(m_func != nullptr) retVal = true;
60  m_func = function;
61 
62 return retVal;
63 }
ossimTerm * m_func

Member Data Documentation

◆ m_func

ossimTerm* ossimGDoptimizer::m_func
private

Definition at line 68 of file ossimGDoptimizer.h.

Referenced by optimize(), ossimGDoptimizer(), and setFunction().


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