Putting Darwin To Work
The concept behind genetic design, or genetic algorithm creation is simple: Brainstorm a lot of ideas, test for the good ones, then repeat using the good ones as a starting point. Eventually, if you have defined your problem's constraints well, you end up with a solution that can be very novel and effective. In actual practice, though, there are a number of barriers keeping computerized "product evolvers" from taking over your jobs.
For one thing, these algorithms take a lot of computing power. These equations can have tens of independent variables to optimize, and by definition, evolution requires that you sacrifice intelligent decision for brute force and lots of generations. So, you either need a lot of time, or in most cases, a giant renderfarm of computers to complete your design before dinner. Also, these algorithms require a well defined set of goals to test each "organism's" fitness against. Usually, these goals are in two types: Must/Must Nots, and Optimizers. Must/Must nots are constraints like "the circuit must run on 5 volts" or "the airfoil must fit in a 3x13x2 rectangle. Optimizers, on the other hand, are usually the test for fitness -- questions like "maximize life of the airfoil" or "make the output of the circuit fit this curve as closely as possible.
Because of the need for well articulated constraints, this method works perfectly for very complex, multi-variable, but well defined problems, like antenna design, airfoil optimization, circuit layout, object packing, and Image analysis. It's even finding use in Formula 1 racing, and in 3d animated characters. This video of an evolving character is almost too funny for words, but it demonstrates the power of the system.
At the same time, this need for rigid constraints is a killer for most design applications. Imagine trying to define all the must/must nots for a toaster, or trying to put into an equation the optimizer parameters for a pair of sneakers; "Maximize the product of the user's initial happiness upon seeing the shoes and their longterm satisfaction with fit and comfort".
Even with these limitations, there may be places that evolutionary design can make a difference. For example, what about ergonomics research? This is a problem similar to box loading; You neet to fit the cargo (person) in the box (chair) while allowing access to the important boxes (hands can reach controls and face can see). For most applications, our current seating doesn't need radical innovation, but with very limited space, like in spacecraft and cars, there might be a more effective way to fit people in that we have simply not discovered yet.
Another opportunity for evolved design is in the software configuration of devices. It might be useful to allow our phones, mp3 players, and other digital devices' interface designs to be edited Wiki-style. Most of the innovations would be crappy, but with the right controls selecting for the good ones, you could come out ahead in the end.
A word of warning though: When we say genetic design, we don't mean random, crazyman design. Make sure that you are actually defining a problem that has real quantifiable constraints, not a chair, with purely aesthetic constraints.
If you're interested in this stuff, the American Association for Artificial Intelligence has a great resource. Or, if you want a more dynamic site, the Illinois Genetic Algorithms Laboratory has a great blog that is contributed to be lots of really knowledgable professors and researchers.
And whatever you do, remember to always keep some kind of control of your creations; we don't want to be the ones responsible for one of you unleashing a super-virus on the world or something.
Copyright 2004-2006 Dominic Muren and IDFuel Team