Graphing the Rastrigin Function using Python

The Rastrigin function is often used when exploring numerical optimization because the function has one true minimum value at (x=0, y=0) but many local minima nearby.


The Wikipedia article on the Rastrigin function. Click to enlarge.

I’ve graphed the Rastrigin function using R, MatLab and its clone SciLab, Excel, Python, and other tools. I’ve been using a lot of Python lately so I figured I’d take another look at graphing the function using Python.

No real moral to the story. I don’t enjoy writing code that displays graphs or UI. I was talking to a friend yesterday and he mentioned that he enjoyed coding with HTML and CSS to generate nice looking Web pages, but that he didn’t consider himself a programmer.

I suspect that people’s brains are wired differently and there’s a component that determines how much affinity a person has for coding in true programming languages versus coding for UI tasks.


# rastrigin_graph.py

import numpy as np
import matplotlib.pyplot as plt
from matplotlib import cm 
from mpl_toolkits.mplot3d import Axes3D 
 
X = np.linspace(-5.12, 5.12, 100)     
Y = np.linspace(-5.12, 5.12, 100)     
X, Y = np.meshgrid(X, Y) 

Z = (X**2 - 10 * np.cos(2 * np.pi * X)) + \
  (Y**2 - 10 * np.cos(2 * np.pi * Y)) + 20
 
fig = plt.figure() 
ax = fig.gca(projection='3d') 
ax.plot_surface(X, Y, Z, rstride=1, cstride=1,
  cmap=cm.nipy_spectral, linewidth=0.08,
  antialiased=True)    
# plt.savefig('rastrigin_graph.png')
plt.show()
Advertisements
This entry was posted in Miscellaneous. Bookmark the permalink.

One Response to Graphing the Rastrigin Function using Python

  1. alwagoner says:

    Very cool. I really dig Python! (I’m a Python00b)

    Thanks for sharing this!

Comments are closed.