



Genetic Algorithms and Evolutionary Computing in Architecture
![]() ![]() ![]() ![]() | Today something funny happened. I mailed my first real "Voronoi Genetic-house" screenshots to some of my friends. In response, two of them suggested (independently of each other!), that I should bisect my last "Voronoi Genetic-house" laterally, throw one half away, mirror another half over the bisection plane in order to produce nothing less than a Star-Trek-fashion alien starship. That was a nice example that human minds think alike and that when you see something you invented, it is not necessery that that other guy stole it from you - he might just came across the idea by himself as well. If you need consolation - it happened to the greatest minds as well. It's not exactly a beauty, just a proof-of-concept. I'll try harder some other time. |
![]() ![]() ![]() ![]() | This is the first example of all the stuff put together: my C# "interactive breeder" software, Qhull and Sketchup (for final eye-candy-type visualisation). This "house" (I suppose you wouldn't like to live it it) is the major milestone in my project. I'll do a lot of them in the days ahead to get some feeling about what works and what doesn't. Then I have to refine the genotype definition as well as phenotype development - morphogenesis. I am somewhat sorry that I won't have the time to implement all the ideas continually emerging at every step of my research. |
![]() ![]() ![]() ![]() ![]() | As discussed in Evolutionary Computing Applications in Architecture design, the genetic algorithm's fitness function could take into consideration three different aspects of architecture (structural integrity, functionality and aesthetic). 1. In my research, I will limit the fitness function to only one of the aspects. While the ultimate genetic algorithm for architectural design could and should include all three aspects, I strongly believe that each aspect should be studied first in a partial experiment. Combining different (Vitruvius') aspects in GA before each of them would be fully studied and understood, would only mess things up. I was somewhat disapointed that I won't be able to demonstrate "real" genetic algorithm processing with huge populations (several thousands subjects) and lots of (thousands of) generations. I even risk that the evolutional principle won't be achieved in such a small population (only 9 subjects!) and within relatively small number of generations (limited to duration of user interaction). But at this moment this is the only solution. The two decisions described earlier in this post, are certainly the right ones and I should proceed in this way. |
![]() | ![]() |
![]() | ![]() |
![]() | ![]() |
![]() | ![]() |
Before evolutionary computing can be applied, I have to develop a vocabulary for the representation and manipulation of three-dimensional forms. Such a vocabulary is needed for the construction of the genotype and growth of the fenotype.
Here I used the approach with "particle agents". Each particle/agent holds a set of properties - spatial position, direction, speed, color etc. When time passes, the properties are manipulated according to a set of simple rules. Changing the rules, you get something completely different each time the simluation is run.
Is it "just a random development"? Of course it is, but don't underestimate the power of "random". The eyes and brain you're using to read this are the result of random events, together with a little natrual selection, of course (we'll discuss the intelligent design hopefully some other time :-)).
![]() | ![]() |
![]() | ![]() |
![]() | ![]() |
![]() | ![]() |