SG++-Doxygen-Documentation
Loading...
Searching...
No Matches
sgpp::optimization::optimizer::LevenbergMarquardt Class Reference

Levenberg-Marquardt algorithm for least squares optimization. More...

#include <LevenbergMarquardt.hpp>

Inheritance diagram for sgpp::optimization::optimizer::LevenbergMarquardt:
sgpp::optimization::optimizer::LeastSquaresOptimizer

Public Member Functions

void clone (std::unique_ptr< LeastSquaresOptimizer > &clone) const override
 
double getAcceptanceThreshold () const
 
double getEffectivenessThreshold () const
 
double getInitialDamping () const
 
base::VectorFunctionGradientgetPhiGradient () const
 
double getTolerance () const
 
 LevenbergMarquardt (const base::VectorFunction &phi, const base::VectorFunctionGradient &phiGradient, size_t maxItCount, double tolerance, double initialDamping, double acceptanceThreshold, double effectivenessThreshold, const base::sle_solver::SLESolver &sleSolver)
 Constructor.
 
 LevenbergMarquardt (const base::VectorFunction &phi, const base::VectorFunctionGradient &phiGradient, size_t maxItCount=DEFAULT_N, double tolerance=DEFAULT_TOLERANCE, double initialDamping=DEFAULT_INITIAL_DAMPING, double acceptanceThreshold=DEFAULT_ACCEPTANCE_THRESHOLD, double effectivenessThreshold=DEFAULT_EFFECTIVENESS_THRESHOLD)
 Constructor.
 
 LevenbergMarquardt (const LevenbergMarquardt &other)
 Copy constructor.
 
void optimize () override
 Pure virtual method for optimization of the objective function.
 
void setAcceptanceThreshold (double acceptanceThreshold)
 
void setEffectivenessThreshold (double effectivenessThreshold)
 
void setInitialDamping (double initialDamping)
 
void setTolerance (double tolerance)
 
 ~LevenbergMarquardt () override
 Destructor.
 
- Public Member Functions inherited from sgpp::optimization::optimizer::LeastSquaresOptimizer
const base::DataMatrixgetHistoryOfOptimalPoints () const
 
const base::DataVectorgetHistoryOfOptimalValues () const
 
size_t getN () const
 
const base::DataVectorgetOptimalPoint () const
 
double getOptimalValue () const
 
base::VectorFunctiongetPhiFunction () const
 
const base::DataVectorgetStartingPoint () const
 
 LeastSquaresOptimizer (const base::VectorFunction &phi, size_t N=DEFAULT_N)
 Constructor.
 
 LeastSquaresOptimizer (const LeastSquaresOptimizer &other)
 Copy constructor.
 
void setN (size_t N)
 
void setPhiFunction (const base::VectorFunction &phi)
 
void setStartingPoint (const base::DataVector &startingPoint)
 
virtual ~LeastSquaresOptimizer ()
 Destructor.
 

Static Public Attributes

static constexpr double DEFAULT_ACCEPTANCE_THRESHOLD = 0.3
 default acceptance threshold
 
static constexpr double DEFAULT_EFFECTIVENESS_THRESHOLD = 0.9
 default effectiveness threshold
 
static constexpr double DEFAULT_INITIAL_DAMPING = 1.0
 default initial damping
 
static constexpr double DEFAULT_TOLERANCE = 1e-6
 default tolerance
 
- Static Public Attributes inherited from sgpp::optimization::optimizer::LeastSquaresOptimizer
static const size_t DEFAULT_N = 1000
 default maximal number of iterations or function evaluations
 

Protected Attributes

double beta0
 acceptance threshold
 
double beta1
 effectiveness threshold
 
const base::sle_solver::GaussianElimination defaultSleSolver
 default linear solver
 
double mu0
 initial damping
 
std::unique_ptr< base::VectorFunctionGradientphiGradient
 phi gradient
 
const base::sle_solver::SLESolversleSolver
 linear solver
 
double tol
 tolerance
 
- Protected Attributes inherited from sgpp::optimization::optimizer::LeastSquaresOptimizer
base::DataVector fHist
 search history vector (optimal values)
 
double fOpt
 result of optimization (optimal function value)
 
size_t N
 maximal number of iterations or function evaluations
 
std::unique_ptr< base::VectorFunctionphi
 phi function
 
base::DataVector x0
 starting point
 
base::DataMatrix xHist
 search history matrix (optimal points)
 
base::DataVector xOpt
 result of optimization (location of optimum)
 

Detailed Description

Levenberg-Marquardt algorithm for least squares optimization.

Constructor & Destructor Documentation

◆ LevenbergMarquardt() [1/3]

sgpp::optimization::optimizer::LevenbergMarquardt::LevenbergMarquardt ( const base::VectorFunction phi,
const base::VectorFunctionGradient phiGradient,
size_t  maxItCount = DEFAULT_N,
double  tolerance = DEFAULT_TOLERANCE,
double  initialDamping = DEFAULT_INITIAL_DAMPING,
double  acceptanceThreshold = DEFAULT_ACCEPTANCE_THRESHOLD,
double  effectivenessThreshold = DEFAULT_EFFECTIVENESS_THRESHOLD 
)

Constructor.

By default, GaussianElimination is used to solve the linear systems.

Parameters
phibase function
phiGradientJacobian of phi
maxItCountmaximal number of function evaluations
tolerancetolerance
initialDampinginitial damping
acceptanceThresholdacceptance threshold
effectivenessThresholdeffectiveness threshold

References sgpp::optimization::optimizer::LeastSquaresOptimizer::clone(), and phiGradient.

◆ LevenbergMarquardt() [2/3]

sgpp::optimization::optimizer::LevenbergMarquardt::LevenbergMarquardt ( const base::VectorFunction phi,
const base::VectorFunctionGradient phiGradient,
size_t  maxItCount,
double  tolerance,
double  initialDamping,
double  acceptanceThreshold,
double  effectivenessThreshold,
const base::sle_solver::SLESolver sleSolver 
)

Constructor.

Do not destruct the solver before this object!

Parameters
phiphi function
phiGradientJacobian of phi
maxItCountmaximal number of function evaluations
tolerancetolerance
initialDampinginitial damping
acceptanceThresholdacceptance threshold
effectivenessThresholdeffectiveness threshold
sleSolverreference to linear solver for solving the linear systems

References phiGradient.

◆ LevenbergMarquardt() [3/3]

sgpp::optimization::optimizer::LevenbergMarquardt::LevenbergMarquardt ( const LevenbergMarquardt other)

Copy constructor.

Parameters
otheroptimizer to be copied

References phiGradient.

◆ ~LevenbergMarquardt()

sgpp::optimization::optimizer::LevenbergMarquardt::~LevenbergMarquardt ( )
override

Destructor.

Member Function Documentation

◆ clone()

void sgpp::optimization::optimizer::LevenbergMarquardt::clone ( std::unique_ptr< LeastSquaresOptimizer > &  clone) const
overridevirtual
Parameters
[out]clonepointer to cloned object

Implements sgpp::optimization::optimizer::LeastSquaresOptimizer.

References clone().

Referenced by clone().

◆ getAcceptanceThreshold()

double sgpp::optimization::optimizer::LevenbergMarquardt::getAcceptanceThreshold ( ) const
Returns
acceptanceThreshold

References beta0.

◆ getEffectivenessThreshold()

double sgpp::optimization::optimizer::LevenbergMarquardt::getEffectivenessThreshold ( ) const
Returns
effectiveness threshold

References beta1.

◆ getInitialDamping()

double sgpp::optimization::optimizer::LevenbergMarquardt::getInitialDamping ( ) const
Returns
initial damping

References mu0.

◆ getPhiGradient()

base::VectorFunctionGradient & sgpp::optimization::optimizer::LevenbergMarquardt::getPhiGradient ( ) const
Returns
phi gradient

References phiGradient.

◆ getTolerance()

double sgpp::optimization::optimizer::LevenbergMarquardt::getTolerance ( ) const
Returns
tolerance

References tol.

◆ optimize()

◆ setAcceptanceThreshold()

void sgpp::optimization::optimizer::LevenbergMarquardt::setAcceptanceThreshold ( double  acceptanceThreshold)
Parameters
acceptanceThresholdacceptance threshold

References beta0.

◆ setEffectivenessThreshold()

void sgpp::optimization::optimizer::LevenbergMarquardt::setEffectivenessThreshold ( double  effectivenessThreshold)
Parameters
effectivenessThresholdeffectiveness threshold

References beta1.

◆ setInitialDamping()

void sgpp::optimization::optimizer::LevenbergMarquardt::setInitialDamping ( double  initialDamping)
Parameters
initialDampinginitial damping

References mu0.

◆ setTolerance()

void sgpp::optimization::optimizer::LevenbergMarquardt::setTolerance ( double  tolerance)
Parameters
tolerancetolerance

References tol.

Member Data Documentation

◆ beta0

double sgpp::optimization::optimizer::LevenbergMarquardt::beta0
protected

acceptance threshold

Referenced by getAcceptanceThreshold(), optimize(), and setAcceptanceThreshold().

◆ beta1

double sgpp::optimization::optimizer::LevenbergMarquardt::beta1
protected

effectiveness threshold

Referenced by getEffectivenessThreshold(), optimize(), and setEffectivenessThreshold().

◆ DEFAULT_ACCEPTANCE_THRESHOLD

constexpr double sgpp::optimization::optimizer::LevenbergMarquardt::DEFAULT_ACCEPTANCE_THRESHOLD = 0.3
staticconstexpr

default acceptance threshold

◆ DEFAULT_EFFECTIVENESS_THRESHOLD

constexpr double sgpp::optimization::optimizer::LevenbergMarquardt::DEFAULT_EFFECTIVENESS_THRESHOLD = 0.9
staticconstexpr

default effectiveness threshold

◆ DEFAULT_INITIAL_DAMPING

constexpr double sgpp::optimization::optimizer::LevenbergMarquardt::DEFAULT_INITIAL_DAMPING = 1.0
staticconstexpr

default initial damping

◆ DEFAULT_TOLERANCE

constexpr double sgpp::optimization::optimizer::LevenbergMarquardt::DEFAULT_TOLERANCE = 1e-6
staticconstexpr

default tolerance

◆ defaultSleSolver

const base::sle_solver::GaussianElimination sgpp::optimization::optimizer::LevenbergMarquardt::defaultSleSolver
protected

default linear solver

◆ mu0

double sgpp::optimization::optimizer::LevenbergMarquardt::mu0
protected

initial damping

Referenced by getInitialDamping(), optimize(), and setInitialDamping().

◆ phiGradient

std::unique_ptr<base::VectorFunctionGradient> sgpp::optimization::optimizer::LevenbergMarquardt::phiGradient
protected

◆ sleSolver

const base::sle_solver::SLESolver& sgpp::optimization::optimizer::LevenbergMarquardt::sleSolver
protected

linear solver

Referenced by optimize().

◆ tol

double sgpp::optimization::optimizer::LevenbergMarquardt::tol
protected

tolerance

Referenced by getTolerance(), optimize(), and setTolerance().


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