Amoeba Method Optimization using C#

I wrote an article titled “Amoeba Method Optimization using C#” and it appears in the June 2013 issue of Microsoft’s MSDN Magazine. See Amoeba method optimization is a technique for solving problems where to goal is to minimize (or more rarely, maximize) some mathematical function in situations where classical matrix or calculus based techniques aren’t feasible. One example where amoeba method optimization can be used is the problem of determining the best weights and bias values for a neural network.

The technique is called amoeba method optimization, not because it is based on the behavior of real amoebas. In amoeba method optimization, a virtual amoeba consists of three possible solutions to the problem at hand. The technique gets its name because if you graph amoeba method optimization in action, you see a triangle that moves around searching for the optimal solution in a way that vaguely resembles a real amoeba’s movement. The technique is also called the simplex method (because a triangle is a kind of simplex in math terminology), and also called the Nelder-Mead algorithm, after the two researchers who first published the idea in 1965.

At least among my colleagues, amoeba method optimization is not well known and not used very often. More common numerical optimization alternatives seem to be particle swarm, optimization and real-valued genetic algorithms. Amoeba method optimization has a certain elegance to it. When I get some free time I intend to explore variations such as creating multiple amoebas that can interact with each other.


This entry was posted in Machine Learning. Bookmark the permalink.