The Nelder–Mead Solver
The Nelder–Mead solver relies on a simplex of N+1 points, where N is the number of control variables. The solver does not use derivatives of the objective function. In a Nelder–Mead iteration, the solver uses reflections, expansions, and contractions to improve the worst point in the simplex.
The implementation in COMSOL Multiphysics includes a restart procedure for the case when the simplex shape degenerates (that is, the simplex collapses along a direction) and follows the discussion of the Nelder–Mead method in Ch. 8 in Ref. 1 employing the parallelization strategy described in Ref. 2. The sufficient-decrease condition used is a combination of the one used in Algorithm 8.2 and the one described on p. 160 (due to Kelley) with the regeneration. This implementation has been found to give somewhat better performance than the plain Algorithm 8.2 on a few test examples, in particular because the regeneration of a new simplex with equal lengths on edges gives better search directions. Moreover, the solver respects lower and upper bounds in the control variable space by suitably restricting the length of reflections.