This release improves optimizer robustness, input validation, and progress diagnostics.
check_mize_gradient(), which compares an analytic gradient with a
finite-difference approximation.mize() now returns status fields: converged, status, and message, plus explicit best/last
result fields (best_par, best_f, last_par, and last_f).mize(), mize_step(), mize_step_summary(), and stored progress now report accepted Hessian
and inverse-Hessian callback counts as nh and nhi.store_progress = TRUE, mize() now exposes optional line-search reason, selected-point
provenance, local callback counts, initial scale, and exact-Newton direction provenance.line_search_failed prematurely when small steps are
needed to reach the requested convergence tolerance.step0 after returning a zero step when step_next_init depends on
previous search results. This allows momentum methods to recover on the next iteration.step0 instead of always starting at 1. It requires a positive finite
numeric scalar, with NULL retaining the default of 1.cg_update = "HZ+" safeguard now uses Euclidean norms as specified by its formula. This
correction can change optimization trajectories and iteration counts.check_mize_gradient() rejects unrepresentable or non-finite coordinate perturbations and
dimensioned callback results instead of reporting misleading agreement or flattening matrices.store_progress = TRUE has lower time and allocation costs on long runs.mom_schedule = 0, and NAG with the "nsconvex" schedule,
nest_q = 1, and nest_convex_approx = FALSE, no longer make redundant function and gradient
calls. In these configurations, restart is ignored and progress no longer includes mu.fn_inf or gr_inf failures when a later objective or gradient is
non-finite, and par_inf if an update would produce non-finite parameters. Such an update is
rolled back before callbacks can observe it. DBD also validates its initial step controls and
safeguards named initial-step estimates using the current parameter scale."ramp" and "switch" schedules require numeric mom_init and mom_final values, and adaptive
restart safely rejects non-finite comparisons instead of raising a control-flow error.step0 to be a positive finite scalar;
string initializers are unchanged.line_search_failed instead of tolerance convergence. Bold Driver now follows this
contract, reports line-search diagnostics, and avoids callbacks at trial step lengths that
reproduce an evaluated parameter vector.alpha diagnostic reports the selected gradient step length, and is zero when no
gradient step was selected. Its ls_max_fn = 0 limit is handled consistently whether progress is
stored.mom_type = "nesterov" now applies to momentum schedules attached to methods other than
"Momentum", including DBD. These configurations previously used classical momentum silently.Bug fix release.
LazyData from the DESCRIPTION file.Bug fix release.
line_search = "backtracking" with a specified step_down
parameter, an incorrectly large number of gradient calculations was being
reported.step_down
argument with line_search = "backtracking", interpolation using function
and gradient evaluations is carried out. To get a typical Armijo-style
backtracking line search, specify a value for step_down (e.g.
step_down = 0.5 to halve the step size), and only function evaluations are
used.A patch release to fix an incompatibility with R-devel.
class was being checked directly and a scalar value was
assumed. The correct behavior is to use methods::is.A patch release for a bug fix.
ls_max_fn parameter), a
'bracket_step' not found error could result. Thank you to reporter Charles
Driver.A patch release to fix an incompatibility with R-devel.
method = "TN"). Can be controlled using the
tn_init and tn_exit options.method = "SR1"), falling back to the BFGS direction if a
descent direction is not found.preconditioner, which applies to the conjugate gradient and
truncated newton methods. The only value currently available is preconditioner = "L-BFGS" which uses L-BFGS to estimate the inverse Hessian for
preconditioning. The number of updates to store for this preconditioner is
controlled by the memory parameter, just as if you were using method = "L-BFGS".fg list, supply a function hi, that takes
the par vector as input. The function can return a matrix (obviously not a
great idea for memory use), or a vector, the latter of which is assumed to be
the diagonal of the matrix.ls_max_alpha (for line_search = "More-Thuente" only): sets maximum value
of alpha that can be attained during line search.ls_max_alpha_mult (for Wolfe-type line search only): sets maximum value that
can be attained by the ratio of the initial guess for alpha for the current line
search, to the final value of alpha of the previous line search. Used to stop
line searches diverging due to very large initial guesses.ls_safe_cubic (for line_search = "More-Thuente" only): if TRUE,
use the safe-guarded cubic modification suggested by Xie and Schlick.cg_update = "prfr", the "PR-FR" (Polak-Ribiere/Fletcher-Reeves) conjugate
gradient update suggested by Gilbert and Nocedal.cg_update = "hs"), Conjugate Descent (cg_update = "cd"),
Dai-Yuan (cg_update = "dy") and Liu-Storey (cg_update = "ls").Initial release.