Powell's method

Powell's method, strictly Powell's conjugate direction method, is an algorithm proposed by Michael J. D. Powell for finding a local minimum of a function. The function need not be differentiable, and no derivatives are taken.

The function must be a real-valued function of a fixed number of real-valued inputs. The caller passes in the initial point. The caller also passes in a set of initial search vectors. Typically N search vectors (say$ \{s_1, \dots, s_N\}$ ) are passed in which are simply the normals aligned to each axis.

The method minimises the function by a bi-directional search along each search vector, in turn. The bi-directional line search along each search vector can be done by Golden-section search or Brent's method. Let the minima found during each bi-directional line search be $\{ x_0 + \alpha_1s_1, {x}_0 + \sum_{i=1}^{2}\alpha_i{s}_i, \dots, {x}_0 +\sum_{i=1}^{N}\alpha_i{s}_i \}$, where ${x}_0$ is the initial starting point and $\alpha_i$  is the scalar determined during bi-directional search along ${s}_i$. The new position ($x_1$ ) can then be expressed as a linear combination of the search vectors i.e. $x_1 = x_0 + \sum_{i=1}^N \alpha_i s_i$. The new displacement vector ($\sum_{i=1}^N \alpha_i s_i$ ) becomes a new search vector, and is added to the end of the search vector list. Meanwhile, the search vector which contributed most to the new direction, i.e. the one which was most successful ($i_{d} = \arg \max_{i=1}^N |\alpha_i| \|s_i\|$ ), is deleted from the search vector list. The new set of N search vectors is $\{ s_1, \dots, s_{i_d - 1}, s_{i_d + 1}, \dots, s_N, \sum_{i=1}^N \alpha_i s_i \}$. The algorithm iterates an arbitrary number of times until no significant improvement is made.

The method is useful for calculating the local minimum of a continuous but complex function, especially one without an underlying mathematical definition, because it is not necessary to take derivatives. The basic algorithm is simple; the complexity is in the linear searches along the search vectors, which can be achieved via Brent's method.