MC Fitting Algorithms

Levenberg-Marquardt

This is the well known fitting algorithm. It uses partial derivatives to determine the direction to the optimum. Numerical or model limitations can cause it to be trapped in a local minimum under some conditions, but this has been nearly eliminated with code improvements. The increment for the numerical partial derivative computation is defined by options (on the options tab). Convergence of Levenberg Marquardt  is typically significantly faster compared with the other algorithms.

Since all spectra needed for numerical partial derivatives can be calculated in parallel, a large speedup is possible on multicore hardware. Additional code options are available on the LM tab.

This is the recommended algorithm for typical problems. It converges very fast.

Nelder-Mead (downhill simplex)

This is another well know fitting algorithm. For N parameters, a N dimensional simplex with N+1 vertices is constructed and the function evaluated at each vertex. At each step, the worst vertex is transformed geometrically (reflection, expansion, contraction, reduction) until it is no longer the worst. The dimension of the initial simplex is defined by options. It will auto-tune in subsequent iterations.

The main advantage is that it does not require the calculation of partial derivatives. However, convergence is typically significantly slower. The current implementation does not parallelize well (except for the parallel calculation of MOMD orientations).

Monte Carlo

For each iteration, A random subset of the current best parameters are mutated using a Gaussian model with a width defined by option settings.

Parallel Monte Carlo

Same as above, except that with each iteration, N random parameter sets centered around the current best are generated at once, followed by parallel computation of all resulting spectra. The best fit is retained for the next iteration.

The number of concurrent calculations is automatically determined based on the CPU hardware and it runs very well or computers with many processor cores. If there are suspicions that Levenberg Marqardt is trapped in a local minimum, it is recommended to run this algorithms for a few minutes. By default it runs for a very long time, so it should be stopped manually if not progress has been made in a while.