Class OptimizerControl

Class Documentation

class OptimizerControl

Configuration object for Optimizer.

Many of these configuration options pertain to how the trust region is updated. It’s easiest to understand these together rather than separately. At each iteration, a quadratic model of the objective function is formed. We can use this model to predict how we expect the objective function to behave over a step, and compare it to how the actual objective function behaves. To do this, we’ll use the ratio of the actual reduction in the objective function to the predicted reduction in the objective function, and call this \(\rho\). Then,

  • the step is accepted, and the parameters updated, when \(\rho >\) stepAcceptThreshold.

  • if \(\rho > \) trustRegionGrowReductionRatio and the length of the step is greater than trustRegionGrowStepFraction times the current trust region radius, the trust region radius will be multiplied by trustRegionGrowFactor.

  • if trustRegionShrinkMinReductionRatio \(< \rho < \) trustRegionShrinkMaxReductionRatio, the trust region radius will be multiplied by trustRegionShrinkFactor.

Public Functions

lsst::meas::modelfit::OptimizerControl::LSST_CONTROL_FIELD(noSR1Term, bool, "If true, ignore the SR1 update term in the Hessian, resulting in a Levenberg-Marquardt-like method")
lsst::meas::modelfit::OptimizerControl::LSST_CONTROL_FIELD(skipSR1UpdateThreshold, double, "Skip the SR1 update if |v||s| / (|v||s|) is less than this threshold")
lsst::meas::modelfit::OptimizerControl::LSST_CONTROL_FIELD(minTrustRadiusThreshold, double, "If the trust radius falls below this threshold, consider the algorithm converged")
lsst::meas::modelfit::OptimizerControl::LSST_CONTROL_FIELD(gradientThreshold, double, "If the maximum of the gradient falls below this threshold, consider the algorithm converged")
lsst::meas::modelfit::OptimizerControl::LSST_CONTROL_FIELD(numDiffRelStep, double, "relative step size used for numerical derivatives (added to other steps)")
lsst::meas::modelfit::OptimizerControl::LSST_CONTROL_FIELD(numDiffAbsStep, double, "absolute step size used for numerical derivatives (added to other steps)")
lsst::meas::modelfit::OptimizerControl::LSST_CONTROL_FIELD(numDiffTrustRadiusStep, double, "step size (in units of trust radius) used for numerical derivatives (added to relative step)")
lsst::meas::modelfit::OptimizerControl::LSST_CONTROL_FIELD(stepAcceptThreshold, double, "steps with reduction ratio greater than this are accepted")
lsst::meas::modelfit::OptimizerControl::LSST_CONTROL_FIELD(trustRegionInitialSize, double, "the initial trust region will be set to this value")
lsst::meas::modelfit::OptimizerControl::LSST_CONTROL_FIELD(trustRegionGrowReductionRatio, double, "steps with reduction radio greater than this may increase the trust radius")
lsst::meas::modelfit::OptimizerControl::LSST_CONTROL_FIELD(trustRegionGrowStepFraction, double, "steps with length this fraction of the trust radius may increase the trust radius")
lsst::meas::modelfit::OptimizerControl::LSST_CONTROL_FIELD(trustRegionGrowFactor, double, "when increase the trust region size, multiply the radius by this factor")
lsst::meas::modelfit::OptimizerControl::LSST_CONTROL_FIELD(trustRegionShrinkReductionRatio, double, "steps with reduction radio less than this will decrease the trust radius")
lsst::meas::modelfit::OptimizerControl::LSST_CONTROL_FIELD(trustRegionShrinkFactor, double, "when reducing the trust region size, multiply the radius by this factor")
lsst::meas::modelfit::OptimizerControl::LSST_CONTROL_FIELD(trustRegionSolverTolerance, double, "value passed as the tolerance to solveTrustRegion")
lsst::meas::modelfit::OptimizerControl::LSST_CONTROL_FIELD(maxInnerIterations, int, "maximum number of iterations (i.e. function evaluations and trust region subproblems) per step")
lsst::meas::modelfit::OptimizerControl::LSST_CONTROL_FIELD(maxOuterIterations, int, "maximum number of steps")
lsst::meas::modelfit::OptimizerControl::LSST_CONTROL_FIELD(doSaveIterations, bool, "whether to save all iterations for debugging purposes")
OptimizerControl()