Genetic Fractals

As a project for a software engineering class, our group (me, Alp Sendil, Enda Sullivan, and Lynn Bacher) chose to implement a genetic algorithm that evolves interesting fractals. A fractal is represented as a formula that is iterated many times to produce a picture. Several pictures of fractals are put on a web page. Real humans look at the page and select the ones they like. The formulas of the ones that people like are mixed up and switched around and jumbled together to make new formulas. These new formulas are then used to make the new pictures. Then the process repeats. This results in a progression toward interesting fractals.

My role in the group was programming. I implemented the genetic algorithm and wrote C++ classes to represent a fractal formula as a tree. Breeding, then, became simply switching around subtrees of the main fractal formula trees. Since the class was software engineering, we were required to produce verbose documentation about every minute step of the software development process. Our project notebook is online. It includes our Schedule, Project Plan, Requirements Document, Test Plan, Design Document, Installation Manual/User Guide, and Final Presentation. The installation manual contains all the source code for the project.

Unfortunately, the actual program is running on a web server that is internal to Georgia Tech. If you are within the Georgia Tech domain, please check out the project in action. I'm currently working on moving the cgi-bin code onto the main web server. In the meantime, I've selected some of my favorite evolved fractals and included them below. A X windows version of a program called Fractint was used to generate all of the fractals.

If you have any questions about this project, please send me email, or send mail to our whole group.


[Click on the little images to see bigger versions.]


[Back to my homepage]