UT Freshman Research Initiative Project

Download as .zip Download as .tar.gz View on GitHub

Build Status Ze Version

Aesthetic Fractals

The Java Evolutionary UI to pair with Genetic Fractals.

Created by Kevin Yeh and Tyler Yates - 2013 (UT Freshman Research Initiative: Computational Intelligence)


Fractals are defined as “a curve or geometric figure, each part of which has the same statistical character as the whole." They have been researched extensively, due in large part to the complex results that can arise from iterating over simple processes many times, and fractals have been found to model a wide range of natural phenomena. Each fractal family is defined by a basic mathematical structure, from which variations are created by altering the coefficients of the basic equation. Because these coefficients can be represented by floating point numbers, determining a genome for the fractals is potentially simple and can lead to computationally light mutations, through slight alteration of the coefficients, and crossovers, through an averaging of the parent’s coefficients. It is also possible to expand upon the process of generating offspring fractals by taking outside factors into account, and entire families can be generated programmatically through evolution of the equations themselves, creating potentially complex fractal patterns tended towards certain desirable features.

The Program

The Aesthetic Fractals Program allows users to evolve fractals to their liking using genetic programming. The program runs on Linux and uses the OpenGL framework for its graphics.

How to Git It

The program is hosted on Github

Clone the project onto your machine:
git clone
cd AestheticFractals

Install the necessary dependencies:
sudo apt-get install libglu1-mesa-dev freeglut3-dev mesa-common-dev libglew-dev libpng-dev g++

Build the dependencies:
git submodule init
git submodule update
make -C C-Genetics/libs/AntTweakBar/src
make -C C-Genetics

Compile the program:
mvn install

Run the program:
mvn exec:java


Left-click on a fractal's box in the window to select that fractal as a parent for the next generation. Press space when you have finished picking parents to generate the next generation. Press left and right to go through the history of the generated fractals. Right-click on a fractal to render it.