Evolved Art

Evolved Art is the intersection of computer graphics, evolution, and art. By evolving computer graphics algorithms using genetic programming, Evolved Art allows you to evolve programs that create interesting, and sometimes beautiful, artistic images. Although the concept appears simple at first, the complexity of its creations will sometimes amaze you.

Turtles

Turtles are the essence of Evolved Art. What is a turtle? A turtle is in fact a computer program that draws an image. The origin of the term turtle comes from the Logo programming language. Logo was created in 1967 for educational use, and you can read more about it on the Wikipedia page. Logo defined the concept of a turtle, which was capable of drawing images based on a program. The turtle was designed to be very simple to program. Other graphics languages depended on a knowledge of geometry in order to manage coordinates, translations, rotations, pointer positioning, and drawing operations. However, Logo took a very different approach that greatly simplified all of this. In the Logo language, the turtle simply knows how to turn left, turn right, and move forward. The Logo language deals with all of the geometry internally, sparing the user from having to deal with all of that math. Logo is much more than just a language for drawing images, but this aspect of it was what inspired Evolved Art.

Genetic Programming

Genetic Programming is an offshoot of Genetic Algorithms. While the two share some common ideas, Genetic Programming is considerably different than Genetic Algorithms. Genetic Algorithms involve defining a given algorithm, then optimizing that algorithm by using the principles of evolution. However, the algorithm in general does not change, only the parameters of that algorithm. Genetic Programming, on the other hand, evolves the algorithm itself, and as such presents a much more generalized approach. You can think of the difference this way. A genetic algorithm takes a given program (say one written in Basic or Java), and evolves the values of the variables used in that program, but it never actually changes the program itself. Genetic programming, on the other hand, evolves the program itself, including the values of the variables used in the program. Each technique has its advantages and disadvantages in solving different types of problems.