Nelder-Mead method
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