Nelder-Mead Search for a Minimum
The Nelder-Mead method is a simplex method for finding a local minimum of a function of several variables. It's discovery is attributed to J. A. Nelder and R. Mead. For two variables, a simplex is a triangle, and the method is a pattern search that compares function values at the three vertices of a triangle. The worst vertex, where is largest, is rejected and replaced with a new vertex. A new triangle is formed and the search is continued. The process generates a sequence of triangles (which might have different shapes), for which the function values at the vertices get smaller and smaller. The size of the triangles is reduced and the coordinates of the minimum point are found.
The algorithm is stated using the term simplex (a generalized triangle in n dimensions) and will find the minimum of a function of n variables. It is effective and computationally compact.
Let be the function that is to be minimized. To start, we are given three vertices of a triangle: , for . The function is then evaluated at each of the three points: , for . The subscripts are then reordered so that . We use the notation
(1) , , and .
to help remember that is the best vertex, is good (next to best), and is the worst vertex.
Midpoint of the Good
The construction process uses the midpoint of the line segment joining and . It is found by averaging the coordinates:
Reflection Using the
The function decreases as we move along the side of the triangle from to , and it decreases as we move along the side from to. Hence it is feasible that takes on smaller values at points that lie away from on the opposite side of the line between and. We choose a test point that is obtained by “reflecting” the triangle through the side . To determine , we first find the midpoint of the side . Then draw the line segment from to and call its length d. This last segment is extended a distance d through to locate the point . The vector formula for is
Expansion Using the
If the function value at is smaller than the function value at , then we have moved in the correct direction toward the minimum. Perhaps the minimum is just a bit farther than the point . So we extend the line segment through and to the point . This forms an expanded triangle . The point is found by moving an additional distance d along the line joining and . If the function value at is less than the function value at , then we have found a better vertex than . The vector formula for is
Contraction Using the
If the function values at and are the same, another point must be tested. Perhaps the function is smaller at , but we cannot replace with because we must have a triangle. Consider the two midpoints and of the line segments and , respectively. The point with the smaller function value is called , and the new triangle is .
Note: The choice between and might seem inappropriate for the two-dimensional case, but it is important in higher dimensions.
If the function value at is not less than the value at , the points and must be shrunk toward . The point is replaced with , and is replaced with , which is the midpoint of the line segment joining with .
Logical Decisions for
A computationally efficient algorithm should perform function evaluations only if needed. In each step, a new vertex is found, which replaces . As soon as it is found, further investigation is not needed, and the iteration step is completed. The logical details for two-dimensional cases are given in the proof.
Proof Nelder-Mead Search Nelder-Mead Search
(Nelder-Mead Search for a
approximate a local minimum of , where is
a continuous function of n real
variables, and given the initial
starting points for .
Remark. This is also known as the polytope method.
Computer Programs Nelder-Mead Search Nelder-Mead Search
Mathematica Subroutine (Nelder-Mead Search for a Minimum). To approximate a local minimum of , where is a continuous function of 2 real variables, and given the initial starting points for .
Example 1. Use the
Nelder-Mead method to find the minimum of .
A more efficient
The following subroutine stores the function values in the variables and the convergence criterion is used to terminate the algorithm when
Example 2. Use the
Nelder-Mead method to find the minimum of ,
This example is referred to as Rosenbrock's parabolic valley, circa 1960.
Exercise 3. Graph
the function .
Looking at your graphs, estimate the location of the local minima.
Various Scenarios and Animations for the Nelder-Mead Method.
Program (Nelder-Mead's minimization method). Including graphics commands to draw the vertices and triangles used in finding the solution.
Example 4. Use the
Nelder-Mead method to find the minimum of .
Use the modified program listed above that includes graphics commands to draw the vertices and triangles used in finding the solution.
Animations (Nelder-Mead Search Nelder-Mead Search). Internet hyperlinks to animations.
Research Experience for Undergraduates
Nelder-Mead Search Nelder-Mead Search Internet hyperlinks to web sites and a bibliography of articles.
Download this Mathematica Notebook Nelder-Mead Search
(c) John H. Mathews 2004