30 Jan 2013

Generative Art

Genetic Algorithm

The concept of a genetic algorithm in my opinion is best summarized by “survival of the fittest”. The idea is that you have some heuristic for success for a given task. You spawn a bunch of mutations that try to accomplish the task. The mutations that suck are eliminated  The ones that don’t however, breed, and evolve. Doing this generation over generation can be automated through the computer and will “naturally” optimize the set over time.

Genetic algorithms are not only cool because of how elegantly they solve problems, they somewhat mimic they way nature solves them too. This makes them a very powerful concept.

Genetic AlgorithmFlow Chart

Electric Sheep

Electric sheep lets people leverage unused power of their computers when they are asleep to generate some amazing high-detail animations. These animations are voted on by anyone who is watching them. The top voted animations are bred as per the genetic algorithm process, and thus spawn more and more art that is visually appealing to humans.

I am a big fan of abstract art, and find it interesting that people can judge something so undefined and far from reality. The fact that people can and do do this in electric sheep makes the end goal appealing – an abstract art piece generated by computers that everyone will love. A renaissance in your computer!

Being an engineer, admittedly this example of generatively is really awesome. When cars are built they are built around a set of requirements. The car must move X mph or the car must have Y mpg. Meeting these requirements takes a long time with trial and error and testing.

BoxCar2d shows how genetic algorithms can be used to solve problems in the physical world. Over the course of time, different variations of cars will evolve over time to go the maximum distance over a rugged course. The simulation relies heavily on physics, and takes into account both structural integrity as as well as specialization in movement. Something I like is that users can also up-vote certain designs to personalize the process.