Optimizers¶
Curve fitting is an iterative process of finding parameters of mathematical function that has the best fit to a series of experimental data points. In ESCAPE optimizer objects of type optimizer_obj do curve fitting in terms of several algorithms:
LevenbergMarquardt 1, 2 which belongs to nonlinear leastsquare algorithms,
Differential evolution 3  stochastic evultionary based algorithm which optiizes a model by maintaining a population of candidate solutions, iteratively combining them with a simple formulae and keeping a candidate with the best fitness.
 1
Levenberg, Kenneth (1944). A Method for the Solution of Certain NonLinear Problems in Least Squares, Quarterly of Applied Mathematics, 2 (2): 164168.
 2
Marquardt, Donald (1963). An Algorithm for LeastSquares Estimation of Nonlinear Parameters, SIAM Journal on Applied Mathematics, 11 (2): 431441.
 3
Storn, R and Price, K, Differential Evolution  a Simple and Efficient Heuristic for Global Optimization over Continuous Spaces, Journal of Global Optimization, 1997, 11, 341  359.

escape.core.optimizer.
levmar
(name, stack, ftol=1e10, xtol=1e10, gtol=1e10, maxiter=300, maxfev=5000, nupdate=1)¶ Creates LevenbergMarquardt optimizer.
 Parameters
 stack: modelstack_obj, list of models or model_obj
Models to be optimized.
 ftol: nonnegative double value
Measures the relative error desired in the sum of squares, i.e. cost function.
 xtol: nonnegative double value
Measures the relative error desired in the approximate solution.
 gtol: nonnegative double value
Measures the orthogonality desired between the cost function vector and the columns of the jacobian.
 maxiter: nonnegative integer
Maximum number of iterations.
 maxfev: nonnegative integer
Maximum number of cost function evaluations.
 nupdate: nonnegative integer
Controls calling of ‘on_iterate’ slot.
 Returns
instance of optimizer_obj

escape.core.optimizer.
diffevol
(name, stack, popsize=5, strategy='best1bin', maxiter=300, mincost=1e05, minconv=0.001, mutation=0.5, crossover=0.5, polish_candidate_maxiter=0, polish_final_maxiter=300, nupdate=1)¶ Differential Evolution is stochastic algorithm to find the minimum of cost function. It can search large areas of candidate space, but often requires larger numbers of function evaluations than conventional gradientbased techniques.
 Parameters
 stack: modelstack_obj, list of models or model_obj
Models to be optimized.
 popsizeint, optional
A multiplier for setting the total population size. The population has
popsize * num_params
individuals. strategystr, optional
 The differential evolution strategy to use. Should be one of:
‘best1bin’
‘best1exp’
‘rand1exp’
‘randtobest1exp’
‘best2exp’
‘rand2exp’
‘randtobest1bin’
‘best2bin’
‘rand2bin’
‘rand1bin’
The default is ‘best1bin’.
 maxiterint, optional
The maximum number of generations over which the entire population is evolved.
 mincost: double, optional
When cost function reaches this value, optimizer will be terminated.
 minconvfloat, optional
Relative tolerance for convergence.
 mutationfloat or tuple(float, float), optional
The mutation constant. In the literature this is also known as differential weight, being denoted by F. If specified as a float it should be in the range [0, 2]. Larger values increase searching radius, but slow down convergence.
 crossoverfloat, optional
The recombination constant, should be in the range [0, 1]. In the literature this is also known as the crossover probability, being denoted by CR. Increasing this value allows a larger number of mutants to progress into the next generation, but at the risk of population stability.
 polish_candidate_maxiterint, optional
Maximum number of iterations for LM algorithm after every iteration. LM algorithm improves quality of candidates in the population matrix bringing them closer to the minimum. If zero, no polishing is applied for each candidate.
 polish_final_maxiterint, optional
Maximum number of iterations for final polishing using LM optimizer.
 nupdate: nonnegative integer
Controls calling of ‘on_iterate’ slot.
 Returns
instance of optimizer_obj

class
escape.core.optimizer.
optimizer_obj
¶ Wrapper class for ESCAPE optimizers.

best_cost
¶  Returns
Best cost for stochastic methods or final cost for levnar

cost_history
¶ Returns cost history as a python list.

finalization_method
¶ Used to set custom finalization method.

initial_parameters
¶ Returns initial parameters values.

initialization_method
¶ Used to set custom initialization method.

iteration_method
¶ Used to set custom iteration method.

load_parameters
(self, fn)¶ Load parameters from ASCII file with name ‘fn’.

modelstack
¶  Returns
Modelstack instance.

name
¶  Returns
Name of optimizer object.

num_of_evaluations
¶  Returns
Number of function evaluations used for curve fitting.

num_of_iterations
¶  Returns
Number of iterations used for curve fitting.

num_of_params
¶  Returns
Number of parameters.

on_finalized
(self)¶ Slot which is activated after optimization.

on_initialized
(self)¶ Slot which is activated during optimizer’s initialization.

on_iteration
(self)¶ Slot which is activated every nth iteration. Iteration number ‘n’ is set with ‘nupdates’ setting.

parameter
(self, size_t i)¶

reset_to_initial
(self)¶ Reset parameters values to initial values.

save_parameters
(self, fn)¶ Saves parameters to ASCII file with name ‘fn’.

shake
(self)¶ Sets random values to all nonfixed independent parameters.

status_code
¶  Returns
Status code.

status_msg
¶  Returns
Status message.

stop
(self)¶ Interrupts optimization process.

wait
(self)¶ Waits with blocking for the optimizer to finish optimization process. Works if optimizer has been started asynchronously.
