Genetic Clock Gears

For my final project in Culture, Art, and Technology, I was asked to do something relevant to time, time management, and how we as a race have evolved to view temporality.  Of course I had to find some fun way to mix genetic algorithms into it, and decided that this was my chance to take a stab at what the guy from Evolution is a Blind Watchmaker did (great video, by the way).

Basically, I wrote my own clock genetic algorithm in java, which overnight managed to get to the 1-handed clock stage.  I never bothered to see if it would get farther than that, because my final project deadline was looming.  Instead I wrote a program which only evolved the clock gear ratios, letting gears connect to each other's rims or shafts.  This was executed in a nice tree structure, each node having a linked list of rim connections and a linked list of shaft connections to gears farther down the line.  It actually works very well, and finds a perfect solution after 15 minutes.

The parameters can be adjusted, such as the number of available gears, teeth, hands, ect.

It is nice to be reminded how amazing these algorithms are.

Here is my project video, enjoy!