This section is used to declare the minimizers to use for each fitting software. If a fitting software has been selected in Fitting Options then a default set of minimizers for that solver will be run unless alternative minimizer options have been set. All minimizers for a software are included on the default list of minimizers unless otherwise stated.
Options set in this section will only have an effect if the related software is also set in Fitting Options (either explicitly, or as a default option).
Bumps is a set of data fitting (and Bayesian uncertainty analysis) routines. It came out of the University of Maryland and NIST as part of the DANSE (Distributed Data Analysis of Neutron Scattering Experiments) project.
FitBenchmarking currently supports the Bumps minimizers:
Nelder-Mead Simplex (
lm-bumps) This is mpfit, a translation of MINPACK to Python.
Quasi-Newton BFGS (
scipy’s leastsq (
scipy-leastsq) This calls scipy’s Levenberg-Marquardt method. Note that this was the default method for lm prior to Bumps v0.8.2.
Licence The main licence file for Bumps is here. Individual files have their own copyright and licence – if you plan to incorporate this in your own software you should first check that the licences used are compatible.
Links GitHub - bumps
The Bumps minimizers are set as follows:
[MINIMIZERS] bumps: amoeba lm-bumps newton de scipy-leastsq
The additional dependency Bumps must be installed for this to be available; See Extra dependencies.
de is not included in the default list of minimizers for bumps. To run this solver, you must explicitly set the minimizer as seen above.
There are two Derivative-Free Optimization packages, DFO-LS and DFO-GN. They are derivative free optimization solvers that were developed by Lindon Roberts at the University of Oxford, in conjunction with NAG. They are particularly well suited for solving noisy problems.
FitBenchmarking currently supports the DFO minimizers:
The DFO minimizers are set as follows:
[MINIMIZERS] dfo: dfols dfogn
Additional dependencies DFO-GN and DFO-LS must be installed for these to be available; See Extra dependencies.
GOFit is a package of C++ algorithms with Python interfaces designed for the global optimization of parameters in curve fitting, i.e. for nonlinear least-squares problems arising from curve fitting. It is also included with Mantid since release 6.5.
FitBenchmarking currently supports the GOFit minimizers:
Multistart Global Minimizer (
Alternating Multistart Global Minimizer (
Quadratic Regularisation Local Minimizer (
Licence GOFit is available under a 3-clause BSD Licence
The GOFit minimizers are set as follows:
[MINIMIZERS] gofit: multistart alternating regularisation
The alternating minimizer currently only supports Crystal Field problems.
The additional dependency GOFit must be installed to use these minimizers. See Extra dependencies.
Gradient-Free-Optimizers are a collection of gradient-free methods capable of solving various optimization problems. Please note that Gradient-Free-Optimizers must be run with problems that have finite bounds on all parameters.
Hill Climbing (
Repulsing Hill Climbing (
Simulated Annealing (
Random Search (
Random Restart Hill Climbing (
Random Annealing (
Parallel Tempering (
Particle Swarm (
Evolution Strategy (
Tree Structured Parzen Estimators (
Decision Tree (
Licence The Gradient-Free-Optimizers package is available under an MIT Licence .
The gradient_free minimizers are set as follows:
[MINIMIZERS] gradient_free: HillClimbingOptimizer RepulsingHillClimbingOptimizer SimulatedAnnealingOptimizer RandomSearchOptimizer RandomRestartHillClimbingOptimizer RandomAnnealingOptimizer ParallelTemperingOptimizer ParticleSwarmOptimizer EvolutionStrategyOptimizer BayesianOptimizer TreeStructuredParzenEstimators DecisionTreeOptimizer
The additional dependency Gradient-Free-Optimizers must be installed for this to be available; See Extra dependencies.
BayesianOptimizer, TreeStructuredParzenEstimators and DecisionTreeOptimizer may be slow running and so are not run by default when gradient_free software is selected. To run these minimizers you must explicity set them as seen above.
The GSL routines have a number of parameters that need to be chosen, often without default suggestions. We have taken the values as used by Mantid.
Levenberg-Marquardt (unscaled) (
Levenberg-Marquardt (scaled) (
Nelder-Mead Simplex Algorithm (
Nelder-Mead Simplex Algorithm (version 2) (
Polak-Ribiere Conjugate Gradient Algorithm (
Fletcher-Reeves Conjugate-Gradient (
The vector quasi-Newton BFGS method (
The vector quasi-Newton BFGS method (version 2) (
Steepest Descent (
Links SourceForge PyGSL
Licence The GNU Scientific Library is available under the GPL-3 licence .
The GSL minimizers are set as follows:
[MINIMIZERS] gsl: lmsder lmder nmsimplex nmsimplex2 conjugate_pr conjugate_fr vector_bfgs vector_bfgs2 steepest_descent
The external packages GSL and pygsl must be installed to use these minimizers.
Horace is described as a suite of programs for the visiualization and analysis from time-of-flight neutron inelastic scattering spectrometers. We currently support:
The Horace Toolbox and MATLAB must be installed for this to be available; see Installing External Software.
Mantid is a framework created to manipulate and analyze neutron scattering and muon spectroscopy data. It has support for a number of minimizers, most of which are from GSL.
Conjugate gradient (Fletcher-Reeves) (
Conjugate gradient (Fletcher-Reeves imp.))
Conjugate gradient (Polak-Ribiere) (
Conjugate gradient (Polak-Ribiere imp.))
Damped GaussNewton (
Levenberg-Marquardt algorithm (
Levenberg-Marquardt MD (
Levenberg-MarquardtMD) - An implementation of Levenberg-Marquardt intended for MD workspaces, where work is divided into chunks to achieve a greater efficiency for a large number of data points.
Trust Region (
Trust Region) - An implementation of one of the algorithms available in RALFit.
Licence Mantid is available under the GPL-3 licence .
The Mantid minimizers are set as follows:
[MINIMIZERS] mantid: BFGS Conjugate gradient (Fletcher-Reeves imp.) Conjugate gradient (Polak-Ribiere imp.) Damped GaussNewton FABADA Levenberg-Marquardt Levenberg-MarquardtMD Simplex SteepestDescent Trust Region
The external package Mantid must be installed to use these minimizers.
Levenberg-Marquardt with supplied Jacobian (
levmar) - the Levenberg-Marquardt method
The levmar minimizer is set as follows:
[MINIMIZERS] levmar: levmar
The additional dependency levmar must be installed for this to be available; See Extra dependencies. This package also requires the BLAS and LAPACK libraries to be present on the system.
Nelder-Mead Simplex (
Licence Matlab is a proprietary product .
The matlab minimizer is set as follows:
[MINIMIZERS] matlab: Nelder-Mead Simplex
MATLAB must be installed for this to be available; See Installing External Software.
Matlab Curve Fitting Toolbox (
Licence Matlab and the Curve Fitting Toolbox are both proprietary products .
The matlab_curve minimizers are set as follows:
[MINIMIZERS] matlab_curve: Levenberg-Marquardt Trust-Region
MATLAB Curve Fitting Toolbox must be installed for this to be available; See Installing External Software.
Matlab Optimization Toolbox (
Licence Matlab and the Optimization Toolbox are both proprietary products .
The matlab_opt minimizers are set as follows:
[MINIMIZERS] matlab_opt: levenberg-marquardt trust-region-reflective
MATLAB Optimization Toolbox must be installed for this to be available; See Installing External Software.
Matlab Statistics Toolbox (
Licence Matlab and the Statistics Toolbox are both proprietary products .
The matlab_stats minimizer is set as follows:
[MINIMIZERS] matlab_stats: Levenberg-Marquardt
MATLAB Statistics Toolbox must be installed for this to be available; See Installing External Software.
CERN developed the Minuit 2 package to find the minimum value of a multi-parameter function, and also to compute the uncertainties. We interface via the python interface iminuit with support for the 2.x series.
Minuit’s MIGRAD (
Links Github - iminuit
The Minuit minimizers are set as follows:
[MINIMIZERS] minuit: minuit
The additional dependency Minuit must be installed for this to be available; See Extra dependencies.
RALFit is a nonlinear least-squares solver, the development of which was funded by the EPSRC grant Least-Squares: Fit for the Future. RALFit is designed to be able to take advantage of higher order derivatives, although only first order derivatives are currently utilized in FitBenchmarking.
Gauss-Newton, trust region method (
Hybrid Newton/Gauss-Newton, trust region method (
Gauss-Newton, regularization (
Hybrid Newton/Gauss-Newton, regularization (
Licence RALFit is available under a 3-clause BSD Licence
The RALFit minimizers are set as follows:
[MINIMIZERS] ralfit: gn gn_reg hybrid hybrid_reg
The external package RALFit must be installed to use these minimizers.
SciPy is the standard python package for mathematical software. In particular, we use the minimize solver for general minimization problems from the optimization chapter of SciPy’s library. Currently we only use the algorithms that do not require Hessian information as inputs.
Nelder-Mead algorithm (
Powell algorithm (
BFGS algorithm (
Newton-CG algorithm (
L-BFGS-B algorithm (
Links Github - SciPy minimize
The SciPy minimizers are set as follows:
[MINIMIZERS] scipy: Nelder-Mead Powell CG BFGS Newton-CG L-BFGS-B TNC SLSQP
SciPy LS (
SciPy is the standard python package for mathematical software. In particular, we use the least_squares solver for Least-Squares minimization problems from the optimization chapter of SciPy’s library.
Levenberg-Marquardt with supplied Jacobian (
lm-scipy) - a wrapper around MINPACK
The Trust Region Reflective algorithm (
A dogleg algorithm with rectangular trust regions (
The SciPy least squares minimizers are set as follows:
[MINIMIZERS] scipy_ls: lm-scipy trf dogbox
SciPy GO (
SciPy is the standard python package for mathematical software. In particular, we use the Global Optimization solvers for global optimization problems from the optimization chapter of SciPy’s library.
Differential Evolution (derivative-free) (
Dual Annealing (
The SciPy global optimization minimizers are set as follows:
[MINIMIZERS] scipy_go: differential_evolution shgo dual_annealing
The shgo solver is particularly slow running and should generally be avoided. As a result, this solver is not run by default when scipy_go software is selected. In order to run this minimizer, you must explicitly set it as above.