# MonCar

class sherpa.optmethods.MonCar(name='moncar')[source] [edit on github]

Bases: `OptMethod`

Monte Carlo optimization method.

This is an implementation of the differential-evolution algorithm from Storn and Price (1997) [1]. A population of fixed size - which contains n-dimensional vectors, where n is the number of free parameters - is randomly initialized. At each iteration, a new n-dimensional vector is generated by combining vectors from the pool of population, the resulting trial vector is selected if it lowers the objective function.

ftol

The function tolerance to terminate the search for the minimum; the default is sqrt(DBL_EPSILON) ~ 1.19209289551e-07, where DBL_EPSILON is the smallest number x such that ```1.0 != 1.0 + x```.

Type:

number

maxfev

The maximum number of function evaluations; the default value of `None` means to use `8192 * n`, where `n` is the number of free parameters.

Type:

int or `None`

verbose

The amount of information to print during the fit. The default is `0`, which means no output.

Type:

int

seed

The seed for the random number generator.

Type:

int

population_size

The population of potential solutions is allowed to evolve to search for the minimum of the fit statistics. The trial solution is randomly chosen from a combination from the current population, and it is only accepted if it lowers the statistics. A value of `None` means to use a value `16 * n`, where `n` is the number of free parameters.

Type:

int or `None`

xprob

The crossover probability should be within the range [0.5,1.0]; default value is 0.9. A high value for the crossover probability should result in a faster convergence rate; conversely, a lower value should make the differential evolution method more robust.

Type:

num

weighting_factor

The weighting factor should be within the range [0.5, 1.0]; default is 0.8. Differential evolution is more sensitive to the weighting_factor then the xprob parameter. A lower value for the weighting_factor, coupled with an increase in the population_size, gives a more robust search at the cost of efficiency.

Type:

num

numcores

The number of CPU cores to use. The default is `1`.

Type:

int

References

Attributes Summary

 `default_config` The default settings for the optimiser.

Methods Summary

 `fit`(statfunc, pars, parmins, parmaxes[, ...]) Run the optimiser.

Attributes Documentation

default_config

The default settings for the optimiser.

Methods Documentation

fit(statfunc, pars, parmins, parmaxes, statargs=(), statkwargs={}) [edit on github]

Run the optimiser.

Parameters:
• statfunc (function) – Given a list of parameter values as the first argument and, as the remaining positional arguments, `statargs` and `statkwargs` as keyword arguments, return the statistic value.

• pars (sequence) – The start position of the model parameter values.

• parmins (sequence) – The minimum allowed values for each model parameter. This must match the length of `pars`.

• parmaxes (sequence) – The maximum allowed values for each model parameter. This must match the length of `pars`.

• statargs (optional) – Additional positional arguments to send to `statfunc`.

• statkwargs (optional) – Additional keyword arguments to send to `statfunc`.

Returns:

newpars – The tuple contains: boolean indicating whether the optimization succeeded or not, the best fit parameters as a NumPy array, the statistic value at the best-fit location, a string message indicating the status, and a dictionary containing information about the optimisation (this depends on the optimiser).

Return type:

tuple