#include <apop.h>
Data Fields | |
double | delta |
double | dim_cycle_tolerance |
int | iters_fixed_T |
double | k |
int | max_iterations |
char * | method |
double | mu_t |
int | n_tries |
apop_data ** | path |
gsl_rng * | rng |
double * | starting_pt |
double | step_size |
double | t_initial |
double | t_min |
double | tolerance |
int | verbose |
The settings for maximum likelihood estimation (including simulated annealing).
double apop_mle_settings::dim_cycle_tolerance |
If zero (the default), the usual procedure. If
int apop_mle_settings::max_iterations |
Ignored by simulated annealing. Other methods halt (and set the "status"
element of the output estimate's info page) if they do this many iterations without finding an optimum.
char * apop_mle_settings::method |
The method to be used for the optimization. All strings are case-insensitive.
String | Name | Notes |
"NM simplex" | Nelder-Mead simplex | Does not use gradients at all. Can sometimes get stuck. |
"FR cg" | Conjugate gradient (Fletcher-Reeves) (default) | CG methods use derivatives. The converge to the optimum of a quadratic function in one step; performance degrades as the objective digresses from quadratic. |
"BFGS cg" | Broyden-Fletcher-Goldfarb-Shanno conjugate gradient | |
"PR cg" | Polak-Ribiere conjugate gradient | |
"Annealing" | simulated annealing | Slow but works for objectives of arbitrary complexity, including stochastic objectives. |
"Newton" | Newton's method | Search by finding a root of the derivative. Expects that gradient is reasonably well-behaved. |
"Newton hybrid" | Newton's method/gradient descent hybrid | Find a root of the derivative via the Hybrid method If Newton proposes stepping outside of a certain interval, use an alternate method. See the GSL manual for discussion. |
"Newton hybrid no scale" | Newton's method/gradient descent hybrid with spherical scale | As above, but use a simplified trust region. |
apop_data ** apop_mle_settings::path |
If not NULL
, record each vector tried by the optimizer as one row of this apop_data set. Each row of the matrix
element holds the vector tried; the corresponding element in the vector
is the evaluated value at that vector (after out-of-constraints penalties have been subtracted). A new apop_data set is allocated at the pointer you send in. This data set has no names; add them as desired. For a sample use, see Optimization.
double * apop_mle_settings::starting_pt |
An array of doubles (e.g., (double*){2,4,6,8}
) suggesting a starting point. If NULL, use an all-ones vector. If startv
is a gsl_vector
and is not a view of a matrix, use .starting_pt=startv->data
.
double apop_mle_settings::step_size |
The initial step size.
double apop_mle_settings::tolerance |
The precision the minimizer uses in its stopping rule. Only vaguely related to the precision of the actual MLE.
int apop_mle_settings::verbose |
Give status updates as we go. This is orthogonal to the apop_opts.verbose
setting.