About Evolve

Creative Commons License
This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.

Evolutionary art uses genetic programming to produce art. It produces an initial population of random pictures, throws out the bad ones, and mixes the good ones together to form even better pictures in the hope that something aesthetically pleasing will appear. This is a project of Josh Lee, and it started running in April 2006.

The best designs may end up on ties or wallpaper. ☺

Download the source code (117 KB)

How it works

Example tree representing the expression RGB(Sin(3*x), x-y, 3/y)
Figure 1: A tree analogous to the maturity of my theoretical computer science education at the time of writing.

Each organism is represented by an expression tree. The expression takes two parameters, x and y, and manipulates them to create a color. The expression is evaluated for each point on the canvas, and together these points form an image.

Once enough votes have been collected, the genetic algorithm gets to work. It picks the good images and breeds them using either mutation or crossing-over. Since the images' genes are just trees, it is simple to cross-over two of them and produce new ones. It also inserts new organisms into the mix, to keep things fresh.

While the next generation is being prepared, you can still vote on the current generation, since it takes those votes into account.

Note: Python places an artificial limit on how deeply nested an expression can be, which limits how complicated the patterns can get. Which may be good or bad.

Powered by

About this server

It's a Pentium III 450 MHz with 440 MiB of RAM, and it lives in my living room. It runs Debian Etch.