where the sum is over the data points , is the number of data points, and the total number of parameters.
The mehtods employed by yanera include all those available to the GSL as well as an optional two more. In every case except NMSIMPLEX, it is possbile to hold any parameter value fixed. However, only with certain methods is it possible to constrain variables to be within certain minimum and maximum values.
The methods can be broken down into three catagories: non-linear least squares, multidimensional minimization, and simulated annealing. Also, the first two methods have constrained and uncontrained options.http://en.wikipedia.org/wiki/Levenberg-Marquardt_algorithm)
Implemented here are those Levenberg-Marquardt algorthims from the GSL, which are unconstrained in the library, or with naive constraints appplied. A robust Levenberg-Marquardt algotirhtm with parameter constraints comes form the
LMSDR - unconstrained, GSL LMDR - unconstrained, GSL CLMSDR - constrained, GSL CLMDR - constrained, GSL LEVMAR - constrained, LEVMAR library (Optional for Linux version, Standard with Windows version)
The iterations can be stopped by an error, or by successful completion. For the GSL Levenberg-Marquardt algorthims, there are two stopping criterion, and the iteration stops on the success of either one. The first is when the gradient falls below a tolerance level. The test can be summarized as,
The second stop test compares the residuals, , of the last step with the residuals of the current step according to,
Perhaps a later version will allow user configuration of the tolerances.
Implemented here are those minimization algorthims from the GSL, which are unconstrained. Optional constrained algotirhtms comes form the
ool library. As implimented, it is not exactly correct, since in the equation for above should be the number of parameters not being held fixed.
CONJUGATE_FR - unconstrained conjugate gradient, GSL CONJUGATE_PR - unconstrained conjugate gradient, GSL VECTOR_BFGS - unconstrained conjugate gradient, GSL STEEP_DESC - unconstrained steepest descent, GSL NMSIMPLEX - unconstrained steepest descent without gradients, GSL OOL_SPG - constrained steepest descent, optional OOL library, Linux only OOL_GENCAN - constrained steepest descent, optional OOL library, Linux only
The iteration can be stopped by an error, or by successful completion. The stopping criterion is the gradient falls below a tolerance level. The test can be summarized as,
The method here comes from the GSL, but it is always constrained.
SIMAN - constrained simulated annealing, GSL
When using this technique, it can be useful to direct the printout to be saved in a file. It will contain the system energy and parameter values over the course of the simulation, which can be analyzed later.
The initial temperature is set to be four times initial energy, which is just evaluated with the initial parameters, where is given above. The final temperature is times smaller. This works well when the Boltzmann constant is set to 1.
The difficulty is choosing the best step size, since there is only one that must be shared among all the variables. When the SLD and background is given in the scale of , then all variables hopefully are of the similar order of magnitude, and can be varied by a similar step size.