Charles Doomany – Project 4: Parametric Tables/ Genetic Algorithm

by cdoomany @ 7:10 pm 23 March 2011

This project involved using a genetic algorithm to determine the optimal solution for a parametrically constructed table. Each table has a group of variables that define its dimensions (ex: leg height, table width, etc.). Each table (or “individual”) has a phenotype and a genotype: phenotypes consist of the observable characteristics of an individual where as genotypes are the internally coded and inheritable sets of information that manifest themselves in the form of the phenotype (phenotypes are are encoded as a binary string).

Phases of the Genetic Algorithm:

1) The first generation of tables are initialized, a population w/ randomly generated dimensions

2) Each table is evaluated based on a fitness function ( fitness is determined by comparing each individual to an optimal model, ex: maximize table height while minimizing table surface area)

3) Reproduction: Next, the tables enter a crossover phase in which randomly chosen sites along an individual’s genotype are swapped with the site of another individual’s genotype. *Elite individuals (a small percentage of the population that  best satisfy the fitness model) are exempt from this stage. Individuals are also subjected to a 5% mutation rate which simulates the natural variation that occurs within biological populations.

4) Each successive population is evaluated until all individuals are considered fit (termination)


Areas for improvement:

• Currently, the outcome is fairly predictable in that the criteria for the fitness function is predefined. An improved version of the program might use a physics simulation(ex: gravity) to influence the form of the table. Using simulated forces to influence the form of the table would yield less expected results.


1 Comment

  1. Hi Charles, please upload your documentation asap. Below are remarks from the crit. -GL

    Don’t show your desktop in a public projector, especially if your stickies contain passwords. Yes, I thought the same thing. Hide those stickies at least!

    Populations for GA’s tend to work better with ~1000 individuals, I have read.

    I’d like to see you evolve more complex forms, here.
    Look at Karl Sims’ “evolved virtual creatures”,
    – watch the very compelling video!

    Evolvig table desings, nice start.

    Super cool! There should be less change from one parent to a son (such huge skips are improbable).

    “Once the paramaters are met it ceases to evolve” That’s deep man. 2001 Space Odyssey deep.
    I really like being able to see the evolution on the screen.
    There is one project that I saw but haven’t been able to find again where a bunch of cube like structures with bodys and limbs were dropped on a world and they had duels. It was really cool and I really want to find it again.

    Ah, thanks Golan I think that’s it.

    Lots and lots of tables! Way cool. Would be neat to see a timeline or feedback on current generation #

    You learned a lot, Charles, which is great. The next step – consider that you could measure the success of a genetic algorithm by its potential to show you surprising design solutions which you wouldn’t have thought of yourself.

    Super sick but I want to see this process with something a bit more interesting than a table.

    Table of life

    Breeding Tables:


    Can you find a metal 3d printer? Or print a plaster positive and cast this shape? Otherwise it will be way too fragile.

    Very nice, there is an interesting problem you have come across…How do you control free-form movement to produce a pre-determined form?

    Really nice study. The forms kind of remind me of dripping wax. Nice that you tried a few different forms of jewelry and varied your technique throughout.

    I can see IKEA paying some serious cash for this if you get it really sexy.

    This is really cool. I love the heiarchy system and the really clear visualization about what is going on. It is complex, yet very easy to understand. I can’t wait to see what you make!

    How is your individual modeled? Do chromosomes have fixed size? How do you mutate? The example you are showing is very nice for testing the evolution of the individuals (looks like you’ve learned a lot!), but seems like the objective function is not that interesting for a genetic algorithm as others, where the result is unexpected (after all you know how the table is going to end up looking, or at least that’s what I understood). For example, weight constraints might be interesting. Maybe going after another thing different than a table will surprise you about the results?

    I dig what Golan is saying: Make some weird “tables.” Agreed, run with it! yep. Awesome link!

    Comment by Golan Levin — 23 March 2011 @ 7:13 pm

This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.
(c) 2014 Interactive Art & Computational Design / Spring 2011 | powered by WordPress with Barecity