Flash is broken: Unfortunately this project was written more than a decade ago, and the demo no longer runs in modern browsers. I am working on a way to bring it back to life without a full rewrite. In the meantime you can find a much advanced derivative of my original code (extended by multiple smart people) here.

Alex Mabee did a great job of explaining what is going on, in this video:


This program uses a genetic algorithm to design a two-dimensional car that is “optimal” for a particular terrain. The rules of the problem are as follows:

The optimality of a particular candidate solution (the fitness function) is determined by how far it travels before a) a mass touches the ground or b) time runs out.

Note that at the beginning, the algorithm doesn’t even know that wheels belong on the bottom. It is sometimes possible to see distinct species emerge and die - for instance, “unicycles” are often quite successful in the early stages of the algorithm’s progress.

The graph shows mean and maximum fitness values as a function of generation number.

This demo inspired Boxcar2D.

The GA could converge much faster than it does here. In choosing the fitness cutoff, population size etc. I have aimed for an interesting/fun simulation rather than a fast, useful optimization.

The timeout is fixed but arbitrary. It was a quick hack to remove cars which get stuck without dropping their load. It has the side-effect of making this program extremely frustrating to watch.