Graphing Ackley’s Function using SciLab

Ackley’s function is a standard benchmark mathematical function used to test numerical optimization algorithms. The function is defined in two dimensions as:

f(x,y) = -20 * exp(-0.2*sqrt(0.5*(x^2 + y^2))) -
           - exp(0.5*cos(2*pi*x) + cos(2*pi*y)))
           + 20 + e

The function has a minimum value of 0.0 located at x = 0, y = 0. I wanted to graph the function so I used SciLab, a free program that is similar to the very expensive MatLab program.

Here are the five SciLab commands I issued:

-->z=-20 * exp(-0.2*sqrt(0.5 * (x.^2 + y.^2)))
     - exp(0.5 * (cos(2*%pi*x) + cos(2*%pi*y)))
     + 20 + %e;

The first command sets up a matrix of (x,y) values from -4 to +4, 0.10 units apart. The second command is the definition of Ackley’s function for two variables. Note the use of the .^ operator rather than the ^ operator. The third through fifth commands create the graph.


Notice that Ackley’s function has many local minimum values, which makes finding the optimal solution at (0,0) a bit tricky for some numerical optimization algorithms.

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