# Fitting Options

Options that control the benchmarking process are set here.

## Software (`software`

)

Software is used to select the fitting software to benchmark, this should be a newline-separated list. Available options are:

`bumps`

(default software)`ceres`

(external software – see Installing External Software)`CUTEst`

(external software – see Installing External Software)`dfo`

(external software – see Extra dependencies)`gofit`

(external software – see Extra dependencies)`gradient_free`

(external software – see Extra dependencies)`gsl`

(external software – see Installing External Software)`horace`

(external software – see Installing External Software)`levmar`

(external software – see Extra dependencies)`lmfit`

(external software – see Extra dependencies)`mantid`

(external software – see Installing External Software)`matlab`

(external software – see Installing External Software)`matlab_curve`

(external software – see Installing External Software)`matlab_opt`

(external software – see Installing External Software)`matlab_stats`

(external software – see Installing External Software)`minuit`

(external software – see Extra dependencies)`nlopt`

(external software – see Extra dependencies)`paramonte`

(external software – see Extra dependencies)`ralfit`

(external software – see Installing External Software)`scipy`

(default software)`scipy_ls`

(default software)`scipy_go`

`theseus`

(external software – see Installing External Software)

Default software options are `scipy`

and `scipy_ls`

```
[FITTING]
software: bumps
dfo
minuit
scipy
scipy_ls
scipy_go
```

Warning

Software must be listed to be here to be run. Any minimizers set in Minimizer Options will not be run if the software is not also present in this list.

## Number of minimizer runs (`num_runs`

)

Sets the number of runs to average each fit over.

Default is `5`

```
[FITTING]
num_runs: 5
```

## Algorithm type (`algorithm_type`

)

This is used to select what type of algorithm is used within a specific software. For a full list of available minimizers for each algorithm type, see Algorithm Types of Available Minimizers. The options are:

`all`

- all minimizers`ls`

- least-squares fitting algorithms`deriv_free`

- derivative free algorithms (these are algorithms that cannot use information about derivatives – e.g., the`Simplex`

method in`Mantid`

), see Derivative Free.`general`

- minimizers which solve a generic min f(x)`simplex`

- derivative free simplex based algorithms e.g. Nelder-Mead, see Simplex`trust_region`

- algorithms which employ a trust region approach, see Trust Region`levenberg-marquardt`

- minimizers that use the Levenberg Marquardt algorithm, see Levenberg-Marquardt.`gauss_newton`

- minimizers that use the Gauss Newton algorithm, see Gauss-Newton`bfgs`

- minimizers that use the BFGS algorithm, see BFGS`conjugate_gradient`

- Conjugate Gradient algorithms, see Conjugate Gradient`steepest_descent`

- Steepest Descent algorithms, see Steepest Descent`global_optimization`

- Global Optimization algorithms`MCMC`

- Markov Chain Monte Carlo algorithms

Default is `all`

```
[FITTING]
algorithm_type: all
```

Warning

Choosing an option other than `all`

may deselect certain
minimizers set in the options file

## Jacobian method (`jac_method`

)

This sets the Jacobian used. Choosing multiple options via a new line seperated list will result in all combinations being benchmarked. Current Jacobian methods are:

`analytic`

- uses the analytic Jacobian extracted from the fitting problem.`scipy`

- uses SciPy’s finite difference Jacobian approximations.`default`

- uses the default derivative approximation implemented in the minimizer.`numdifftools`

- uses the python package numdifftools.`best_available`

- uses the analytic jacobian if it is available, otherwise uses a Scipy jacobian.

Default is `best_available`

```
[FITTING]
jac_method: best_available
```

Warning

Currently analytic Jacobians are only available for problems that use the cutest and NIST parsers.

## Hessian method (`hes_method`

)

This sets the Hessian used. Choosing multiple options via a new line seperated list will result in all combinations being benchmarked. Current Hessian methods are:

`default`

- Hessian information is not passed to minimizers`analytic`

- uses the analytic Hessian extracted from the fitting problem.`scipy`

- uses SciPy’s finite difference approximations.`numdifftools`

- uses the python package numdifftools.`best_available`

- uses the analytic hessian if it is available, otherwise uses a Scipy hessian.

Default is `best_available`

```
[FITTING]
hes_method: best_available
```

Warning

Currently analytic Hessians are only available for problems that use the cutest and NIST parsers.

## Cost function (`cost_func_type`

)

This sets the cost functions to be used for the given data. Choosing multiple options via a new line seperated list will result in all combinations being benchmarked. Currently supported cost functions are:

`nlls`

- This sets the cost function to be non-weighted non-linear least squares,`NLLSCostFunc`

.`weighted_nlls`

- This sets the cost function to be weighted non-linear least squares,`WeightedNLLSCostFunc`

.`hellinger_nlls`

- This sets the cost function to be the Hellinger cost function,`HellingerNLLSCostFunc`

.`poisson`

- This sets the cost function to be the Poisson Deviation cost function,`PoissonCostFunc`

.

Default is `weighted_nlls`

```
[FITTING]
cost_func_type: weighted_nlls
```

## Maximum Runtime (`max_runtime`

)

This sets the maximum runtime a minimizer has to solve one benchmark problem num_runs number of times, where num_runs is another option a user can set. If the minimizer is still running after the maximum time has elapsed, then this result will be skipped and FitBenchmarking will move on to the next minimizer / benchmark dataset combination. The main purpose of this option is to get to result tables quicker by limit the runtime.

max_runtime is set by specifying a number in unit of seconds. Please note that depending on platform the time specified with max_runtime may not match entirely with the absolute run-times specified in tables. Hence you may have to experiment a bit with this option to get the cutoff you want.

Default is 600 seconds

```
[FITTING]
max_runtime: 600
```