Evolving worlds of colors

A few years ago I discovered Picbreeder: you see a grid of images, pick your favorites, and the computer breeds new variations from them. Repeat, and you end up with images neither you nor the machine would have created alone.
I wanted to build my own version and push it further. What if each image was a window into a mathematical universe, and instead of breeding images you could breed entire worlds?
The images come from small networks called Compositional Pattern Producing Networks (CPPNs). A CPPN does two things. It maps pixel coordinates to colors — feed it a position, it returns a color; feed it all positions and you get an image (left). And it builds complexity by composing simple functions (sine, cosine, gaussian) into a deeper computational graph (right).
A CPPN maps each pixel's (x, y) coordinates through composed functions to produce a color. Left, Right.
But why stop at pixel coordinates? In this project, each CPPN takes geographic coordinates too; latitude, longitude, altitude, on top of local pixel positions. The same CPPN produces a different image depending on where you open a window into it. Nearby locations produce similar views, distant ones reveal different patterns. A single CPPN defines an entire visual universe: you just need to decide where to look.
I opened windows at my own place and at friends’ houses closer and further away, creating a set of viewpoints into each universe.
I start with a population of random CPPNs, each one encoding a small, unique universe. For each of them I look through the 9 windows, then I pick my favorites. The selected networks reproduce: their structures combine, mutations add new nodes or connections, and the next generation appears. Repeat over many generations, and the patterns become increasingly intricate and beautiful.
This is interactive evolution: I act as the selection pressure, and the algorithm handles variation and reproduction.
Eighteen evolved universes, each shown through nine windows placed ok at different locations: