Nelder-Mead method
The Nelder-Mead method is popular and implementations exist in many optimisation software libraries. It is based on the idea of a simplex in parameter space of dimension , which is formed from the convex hull of points in . These points are ordered according to their function value so that
For each iteration of the algorithm, there are five different points of interest, the first of which is the centroid of the points with the lowest values
The other four points are defined by considering the line joining and the point with the highest value
The four points are the reflection, expanding, the inside contraction and outside contraction points, given by , , , and respectively.
The Nelder-Mead algorithm tries to replace by reflecting, expanding, or contracting the simplex to one of these points. If it cannot find a better point, then all the vertices on the simplex are shrunk towards the best vertex .
Algorithm
Scholarpedia and Wikipedia provide diagrams and pseudocode of the Nelder-Mead algorithm, as does Chapter 9.5 of the Nocedal and Write textbook given below
Initialisation and termination
It is not obvious how Nelder-Mead should be initialised, given a single starting point by the user. The (Gau 2012) paper provides an initialisation routine that was also used in MATLAB's fminsearch function. The point is used as one of the vertices, with the remaining vertices set to , where is a unit vector in the coordinate and
For termination, Nelder and Mead recommended stopping the iteration when the standard deviation of the function evaluations reduces below a certain tolerance. MATLAB's fminsearch terminates when and , or if the maximum number of iterations of function evaluations is reached.
Other Reading
Nelder, John A.; R. Mead (1965). "A simplex method for function minimization". Computer Journal. 7 (4): 308–313. doi:10.1093/comjnl/7.4.308.
Numerical optimization by Nocedal, Jorge; Wright, Stephen J., 1960-, Chapter 9
Problems
Nelder-Mead algorithm
Code up the Nelder-Mead algorithm and compare its performance against the steepest descent, Newton and dogleg algorithms you did in the last lesson. You can evaluate them on the 2D quadratic function , the 2D Rosenbrock function or on one of many different optimisation test functions