Version History

This section lists the different versions of DFO-LS and the updates between them.

Version 1.0 (6 Feb 2018)

  • Initial release of DFO-LS

Version 1.0.1 (20 Feb 2018)

  • Minor bug fix to trust region subproblem solver (the output crvmin is calculated correctly) - this has minimal impact on the performance of DFO-LS.

Version 1.0.2 (20 Jun 2018)

  • Extra optional input args which passes through arguments for objfun.

  • Bug fixes: default parameters for reduced initialization cost regime, returning correct value if exiting from within a safety step, retrieving dependencies during installation.

Version 1.1 (16 Jan 2019)

  • Use different default reduced initialization cost method for inverse problems to ensure whole space is searched correctly.

  • Bug fixes: default trust region radius when scaling feasible region, exit correctly when no Jacobian returned, handling overflow at initial value

Version 1.1.1 (5 Apr 2019)

  • Link code to Zenodo, to create DOI - no changes to the DFO-LS algorithm.

Version 1.2 (12 Feb 2020)

  • Use deterministic initialisation by default (so it is no longer necessary to set a random seed for reproducibility of DFO-LS results).

  • Full model Hessian stored rather than just upper triangular part - this improves the runtime of Hessian-based operations.

  • Faster trust-region and geometry subproblem solutions in Fortran using the trustregion package.

  • Faster interpolation solution for multiple right-hand sides.

  • Don’t adjust starting point if it is close to the bounds (as long as it is feasible).

  • Option to stop default logging behavior and/or enable per-iteration printing.

  • Bugfix: correctly handle 1-sided bounds as inputs, avoid divide-by-zero warnings when auto-detecting restarts.

Version 1.2.1 (13 Feb 2020)

  • Make the use of the trustregion package optional, not installed by default.

Version 1.2.2 (26 Feb 2021)

  • Minor update to remove NumPy deprecation warnings - no changes to the DFO-LS algorithm.

Version 1.2.3 (1 Jun 2021)

  • Minor update to customise handling of NaNs in objective evaluations - no changes to the DFO-LS algorithm.

Version 1.3.0 (8 Nov 2021)

  • Handle finitely many arbitrary convex constraints in addition to simple bound constraints.

  • Add module-level logging for more informative log outputs.

  • Only new functionality is added, so there is no change to the solver for unconstrained/bound-constrained problems.

Version 1.4.0 (29 Jan 2024)

  • Require newer SciPy version (at least 1.11) as a dependency - avoids occasional undetermined behavior but no changes to the DFO-LS algorithm.

  • Gracefully handle NaN objective value from evaluation at a new trial point (trust-region step).

Version 1.4.1 (11 Apr 2024)

  • Migrate package setup to pyproject.toml (required for Python version 3.12)

  • Drop support for Python 2.7 and <=3.8 in line with SciPy >=1.11 dependency (introduced v1.4.0)

Version 1.5.0 (11 Sep 2024)

  • Add support for (possibly nonsmooth) regularizer term.

  • Drop warning about infeasible initial point if the point is on an upper/lower bound.

Version 1.5.1 (10 Oct 2024)

  • Add return values soln.xmin_eval_num and soln.jacmin_eval_nums

  • Allow option for parallel initial evaluations for non-random directions if npt not too large