LSST Applications  21.0.0-172-gfb10e10a+18fedfabac,22.0.0+297cba6710,22.0.0+80564b0ff1,22.0.0+8d77f4f51a,22.0.0+a28f4c53b1,22.0.0+dcf3732eb2,22.0.1-1-g7d6de66+2a20fdde0d,22.0.1-1-g8e32f31+297cba6710,22.0.1-1-geca5380+7fa3b7d9b6,22.0.1-12-g44dc1dc+2a20fdde0d,22.0.1-15-g6a90155+515f58c32b,22.0.1-16-g9282f48+790f5f2caa,22.0.1-2-g92698f7+dcf3732eb2,22.0.1-2-ga9b0f51+7fa3b7d9b6,22.0.1-2-gd1925c9+bf4f0e694f,22.0.1-24-g1ad7a390+a9625a72a8,22.0.1-25-g5bf6245+3ad8ecd50b,22.0.1-25-gb120d7b+8b5510f75f,22.0.1-27-g97737f7+2a20fdde0d,22.0.1-32-gf62ce7b1+aa4237961e,22.0.1-4-g0b3f228+2a20fdde0d,22.0.1-4-g243d05b+871c1b8305,22.0.1-4-g3a563be+32dcf1063f,22.0.1-4-g44f2e3d+9e4ab0f4fa,22.0.1-42-gca6935d93+ba5e5ca3eb,22.0.1-5-g15c806e+85460ae5f3,22.0.1-5-g58711c4+611d128589,22.0.1-5-g75bb458+99c117b92f,22.0.1-6-g1c63a23+7fa3b7d9b6,22.0.1-6-g50866e6+84ff5a128b,22.0.1-6-g8d3140d+720564cf76,22.0.1-6-gd805d02+cc5644f571,22.0.1-8-ge5750ce+85460ae5f3,master-g6e05de7fdc+babf819c66,master-g99da0e417a+8d77f4f51a,w.2021.48
LSST Data Management Base Package
Public Member Functions | Static Public Member Functions | Public Attributes | List of all members
lsst::meas::modelfit::OptimizerObjective Class Referenceabstract

Base class for objective functions for Optimizer. More...

#include <optimizer.h>

Public Member Functions

 OptimizerObjective (int dataSize_, int parameterSize_)
 Base class constructor; must be called by all subclasses. More...
 
void fillObjectiveValueGrid (ndarray::Array< Scalar const, 2, 1 > const &parameters, ndarray::Array< Scalar, 1, 1 > const &output) const
 Evaluate the Objective on a 1-d grid. More...
 
virtual void computeResiduals (ndarray::Array< Scalar const, 1, 1 > const &parameters, ndarray::Array< Scalar, 1, 1 > const &residuals) const =0
 Evaluate the residuals of the model for a given parameter vector. More...
 
virtual bool differentiateResiduals (ndarray::Array< Scalar const, 1, 1 > const &parameters, ndarray::Array< Scalar, 2,-2 > const &derivatives) const
 Evaluate analytic derivatives of the model or signal that they are not available. More...
 
virtual bool hasPrior () const
 Return true if the Objective has a Bayesian prior as well as a likelihood. More...
 
virtual Scalar computePrior (ndarray::Array< Scalar const, 1, 1 > const &parameters) const
 Compute the value of the Bayesian prior for the given parameter vector. More...
 
virtual void differentiatePrior (ndarray::Array< Scalar const, 1, 1 > const &parameters, ndarray::Array< Scalar, 1, 1 > const &gradient, ndarray::Array< Scalar, 2, 1 > const &hessian) const
 Compute the first and second derivatives of the Bayesian prior with respect to the parameters. More...
 
virtual ~OptimizerObjective ()
 

Static Public Member Functions

static std::shared_ptr< OptimizerObjectivemakeFromLikelihood (std::shared_ptr< Likelihood > likelihood, std::shared_ptr< Prior > prior=std::shared_ptr< Prior >())
 Return a concrete Objective object built from a Likelihood and Prior. More...
 

Public Attributes

int const dataSize
 
int const parameterSize
 

Detailed Description

Base class for objective functions for Optimizer.

Definition at line 44 of file optimizer.h.

Constructor & Destructor Documentation

◆ OptimizerObjective()

lsst::meas::modelfit::OptimizerObjective::OptimizerObjective ( int  dataSize_,
int  parameterSize_ 
)
inline

Base class constructor; must be called by all subclasses.

Definition at line 67 of file optimizer.h.

67  :
68  dataSize(dataSize_), parameterSize(parameterSize_)
69  {}

◆ ~OptimizerObjective()

virtual lsst::meas::modelfit::OptimizerObjective::~OptimizerObjective ( )
inlinevirtual

Definition at line 167 of file optimizer.h.

167 {}

Member Function Documentation

◆ computePrior()

virtual Scalar lsst::meas::modelfit::OptimizerObjective::computePrior ( ndarray::Array< Scalar const, 1, 1 > const &  parameters) const
inlinevirtual

Compute the value of the Bayesian prior for the given parameter vector.

The default implementation simply returns 1.0 (appropriate for an unnormalized constant prior, which is mathematically equivalent to no prior).

Definition at line 142 of file optimizer.h.

142 { return 1.0; }

◆ computeResiduals()

virtual void lsst::meas::modelfit::OptimizerObjective::computeResiduals ( ndarray::Array< Scalar const, 1, 1 > const &  parameters,
ndarray::Array< Scalar, 1, 1 > const &  residuals 
) const
pure virtual

Evaluate the residuals of the model for a given parameter vector.

Parameters
[in]parametersAn array of parameters with shape (parameterSize).
[out]residualsOutput array that will contain (model - data) on return. Must be allocated to shape (dataSize), but need not be initialized.

◆ differentiatePrior()

virtual void lsst::meas::modelfit::OptimizerObjective::differentiatePrior ( ndarray::Array< Scalar const, 1, 1 > const &  parameters,
ndarray::Array< Scalar, 1, 1 > const &  gradient,
ndarray::Array< Scalar, 2, 1 > const &  hessian 
) const
inlinevirtual

Compute the first and second derivatives of the Bayesian prior with respect to the parameters.

The default implementation simply sets the output arrays to 0.0 (appropriate for an constant prior, which is mathematically equivalent to no prior).

Parameters
[in]parametersAn array of parameters with shape (parameterSize).
[out]gradientFirst derivative of the prior with respect to the parameters. Must be allocated to shape (parameterSize), but need not be initialized.
[out]hessianSecond derivative of the prior with respect to the parameters. Must be allocated to shape (parameterSize, parameterSize), but need not be initialized. This is a symmetric matrix, and only the lower triangle is used.

Definition at line 158 of file optimizer.h.

162  {
163  gradient.deep() = 0.0;
164  hessian.deep() = 0.0;
165  }

◆ differentiateResiduals()

virtual bool lsst::meas::modelfit::OptimizerObjective::differentiateResiduals ( ndarray::Array< Scalar const, 1, 1 > const &  parameters,
ndarray::Array< Scalar, 2,-2 > const &  derivatives 
) const
inlinevirtual

Evaluate analytic derivatives of the model or signal that they are not available.

Subclasses that provide analytic derivatives should implement this method and return true. Subclasses that do not should return false to indicate to the optimizer that numeric derivatives must be used instead. Subclasses that can only sometimes compute analytic derivatives are not supported.

Parameters
[in]parametersAn array of parameters with shape (parameterSize).
[out]derivativesOutput array that will contain d(model - data)/d(parameters) on return. Must be allocated to shape (dataSize, parameterSize), but need not be initialized.

Definition at line 121 of file optimizer.h.

124  {
125  return false;
126  }

◆ fillObjectiveValueGrid()

void lsst::meas::modelfit::OptimizerObjective::fillObjectiveValueGrid ( ndarray::Array< Scalar const, 2, 1 > const &  parameters,
ndarray::Array< Scalar, 1, 1 > const &  output 
) const

Evaluate the Objective on a 1-d grid.

This delegates to computeResiduals, and hence need not be reimplemented by derived classes. It is intended mostly for diagnostic purposes; when investigating the behavior of the optimizer, it is frequently valuable to plot its path against the gridded objective function.

Parameters
[in]parametersAn array with shape (gridSize, parameterSize), specifying the parameter vector at points on the grid.
[out]outputOutput array for objective values with shape (gridSize). Must be allocated, but need not be initialized.

Frequently, the arguments to this function will be flattened views into higher dimensional arrays, allowing it to be used to construct N-d grids despite taking only a 1-d sequence of grid points.

◆ hasPrior()

virtual bool lsst::meas::modelfit::OptimizerObjective::hasPrior ( ) const
inlinevirtual

Return true if the Objective has a Bayesian prior as well as a likelihood.

The default implementation returns false.

Definition at line 134 of file optimizer.h.

134 { return false; }

◆ makeFromLikelihood()

static std::shared_ptr<OptimizerObjective> lsst::meas::modelfit::OptimizerObjective::makeFromLikelihood ( std::shared_ptr< Likelihood likelihood,
std::shared_ptr< Prior prior = std::shared_ptrPrior >() 
)
static

Return a concrete Objective object built from a Likelihood and Prior.

Most fitting problems that can be formulated in terms of (multi-shapelet) Models, Likelihoods, and Priors can just use this Objective. The returned Objective relies on numerical derivatives, however, so simple problems where analytic derivatives are easy to implement may merit a custom OptimizerObjective.

Member Data Documentation

◆ dataSize

int const lsst::meas::modelfit::OptimizerObjective::dataSize

Definition at line 47 of file optimizer.h.

◆ parameterSize

int const lsst::meas::modelfit::OptimizerObjective::parameterSize

Definition at line 48 of file optimizer.h.


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