Skip to content

Latest commit

 

History

History
51 lines (38 loc) · 1.53 KB

README.md

File metadata and controls

51 lines (38 loc) · 1.53 KB

Nelder-Mead

This is an implementation of the Nelder-Mead multidimensional cost minimization algorithm. It is implemented in Python.

Example

The above example plot can be generated using this code, which takes a cost function and attempts to find local minima.

The plot's mesh indicates the cost function, and scatter plot points represent the values searched by the algorithm. The blue points indicate the results from the beginning of the search, and the red points show the end results.

Sample Code

import nelder_mead as nm

# A cost function to be minimized
def cost(x,y):
    return (pow(x,4) + pow(y,4) - 4*x*y)

# Randomly sample the cost function to provide a starting point for Nelder Mead method
# The number of initial points is equal to the dimensionality + 1
dimension = 2
points = []
for i in range (0, dimension+1):
    x = random.uniform(-2,2)
    y = random.uniform(-2,2)
    c = cost(x,y)
    points.append(nm.Point([x,y],c))

# Initializing the Nelder-Mead model
model = nm.NelderMead(dimension,points)

# Iteratively minimizing cost
for i in range (0, 30):
    # 1: Fetch a suggested next point from the model
    point = model.get_next_point()

    # 2 : Compute the result cost of the proposed point
    point.cost = cost(point.coordinates[0],point.coordinates[1])

    # 3 : Return the point with updated cost back to the model
    model.set_next_point(point)

    print point