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.

## ◆ 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 {}

## ◆ 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] parameters An array of parameters with shape (parameterSize). [out] residuals Output 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] parameters An array of parameters with shape (parameterSize). [out] gradient First derivative of the prior with respect to the parameters. Must be allocated to shape (parameterSize), but need not be initialized. [out] hessian Second 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  {
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] parameters An array of parameters with shape (parameterSize). [out] derivatives Output 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] parameters An array with shape (gridSize, parameterSize), specifying the parameter vector at points on the grid. [out] output Output 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 lsst::meas::modelfit::OptimizerObjective::makeFromLikelihood ( std::shared_ptr< Likelihood > likelihood, std::shared_ptr< Prior > prior = std::shared_ptr< Prior >() )
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.

## ◆ 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:
• /j/snowflake/release/lsstsw/stack/lsst-scipipe-0.7.0/Linux64/meas_modelfit/22.0.1-4-g44f2e3d+9e4ab0f4fa/include/lsst/meas/modelfit/optimizer.h