Showing posts with label important. Show all posts
Showing posts with label important. Show all posts

Monday, December 1, 2008

Sunday, November 23, 2008

The Basic Voronoi 3D Dilemma: Chaos and Order

I feel somewhat philosophical today: is design, including architecture, anything but finding the balance between chaos and order?

Saturday, November 8, 2008

Logo Turtle Introduced

To answer the problem of trivial morphonegesis because of the direct connection between the genotype and the phenotype, I came up with the idea of using the Logo programming language, or a "logo turtle".

The genotype would consist of logo instructions for the turtle. The recombination of subjects would lead to new and modified programs. The phenotype would be generated when the logo program is run and the poins are depolyed by a logo turtle.

I explored this possibility in the 2D world first. Later I will use this approach to deploy Voronoi input points.

Wednesday, November 5, 2008

Big problem

I came across a big problem in my genetic algorithms. The traits of the subjects (phenotype) are not passed on very well to the next generation.

Each generation consists of numerous subjects. After I select some of them and the recombination occurs, the next generation has subjects which are totally different from their ancestors.

The recombination of two subjects leads to a completely different subject, which is not the desired behaviour.

I studied the problem and came to the conclusion that this is because the connection between the genotype and the phenotype is much too direct. In my current design, the genotype is defined by input points. The phenotype is a very simple function of the genotype. The recombination of genotypes produces a very trivial combination of phenotypes; like tearing two buildings apart and combining their parts without any grace.

All possible architecture properties such as rhythm, proportions, emphasis... are lost when the next generation is produced.

Tuesday, July 15, 2008

My first Voronoi Genetic-house





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).

As I pointed out in the previous post, some restrictions were made in deploying the input Voronoi sites. Most of them are derived using the interactive genetic algorithm; however, I sometimes force the grid distribution of the input sites, which can be nicely seen in this model - there are some areas of rectangular regularity.

While this can be seen as a cheating the evolutionary process, it is important to me to get insight in the rules of morphogenesis (genotype -> phenotype conversion). To be an architecture, the "genetic-house" must exhibit some architectural features - leveled floor of internal spaces (or rooms), for example, is perhaps the most important feature.

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.


Saturday, July 12, 2008

The Interactive Voronoi






Today I merged my "interactive breeder", previously working only with cubic prisms, with 3d Voronoi structures. Wow, it took a long time to come to this point, I'm getting somewhere...

There are still some problems: 3d Voronoi structures don't look like architecture yet (see the first picture on the left).

One would, um, imagine that a structure should have some horizontal planes in order to be an architecture. People expect to have some horizontal places to move, dwell, work... in their houses.

I decided to merge two vocabularies to achieve that: the final structure would be generated by the Voronoi algorithm, but the points would be artificialy encouraged to take positions in cubic grids (see the last picture on the left).

Was I cheating a bit here? Yes. The (politically?) correct way would be to define another fitness function which would favor the subjects with as many horizontal planes as possible.

Maybe I'll do that some time. At this time, I'm exploring the interactive genetic algorithms (with a human selector). As you surely know, the concept of time exists because everything cannot happen at once :-)

I think I'll explore the following question in one of the future posts: to what extent the traits of a subject are defined by the evolutionary process itself and to what extent by other forces; enviroment, for example. A shark and a lion are both predators, but they look quite different. The evolution process is crucial in species development, but the environment takes a part of paramount importance, too.

Saturday, June 21, 2008

The Interactive Approach to Genetic Architecture





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).

After I put a lot of thought into it, I made two important decisions.

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.

2. I decided that I should choose the aesthetic value aspect. It's the key aspect which differentiates an architecture from a building. GA searching the optimal structure could proove very efficient, however, it falls more in the field of structural engineering.

I wrote a program which displays 9 "subjects" in a 3x3 matrix. The subjects are simple cubic compositions, made of randomly sized and randomly positioned cubic prisms.

The users selects some of those prisms in order to favor them in the evolutionary process (selection, recombination, mutation...). To emphasize the inheritance trace of specific genotype codes (and phenotype features), I colored the subjects at the begining of the evolution. After each new generation is produced, one may observe how the genotype-phenotype properties are passed to the subjects of the next generation.

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.

Wednesday, April 9, 2008

The Voronoi Addiction

Wow, I found a real jewel. Voronoi graphs were discovered by Mr. - not surprisingly - Voronoi, over a hundred years ago.

While the Voronoi graph is defined by very simple rules, it usually takes more than one sentence to explain it to someone. Let me try in my own words:

The Voronoi diagram divides the space into cells based on the input set of points. Each point defines one cell. Cell borders are drawn so that they divide the space equidistantly among the points. As a result, each location within a cell has the closest input point in the same cell.

For more info, see the Wikipedia's article on Voronoi.

Or try this interactive presentation (click in diagram to create new points!).

(if you have java installed, you may also try this, this or this)

There's something mesmerizing about Voronoi diagram. It is very similar to the patterns in nature. Soap bubbles, tissue cells...

It's also very appropriate for my "genotype-phenotype" requirements: a simple set of points can define complex spatial forms, which look natural as well.

Thursday, March 20, 2008

Evolutionary Computing Applications in Architecture design

While evolutionary computing (EC) is nothing more than a search for the optimum, so is every (and thus also architectural) design. How can EC be applied for usage in architecture?

As Vitruvius pointed out some two thousand years ago, a well designed architecture has to match three standards: firmness (structural integrity), commodity (functionality) and delight (aesthetic value).

So, in the search for optimal architecture, it is very logical to map each of the Vitruvius' standards to evolutionary computing's fitness function.

When asssessing the structural fitness of a subject (a building), the fittest are those capable of carrying more static stress (burden), preferably with less material used for the construction.

In a similar way, the functionality can be assessed based on the set of conditions. It is certanly better if the drawing room is bigger than the hall; and it's better that master bedrom is closer to the bathroom than to the kitchen.

The hardest thing to process for the computer is the aesthetic. While one could struggle to automate the aesthetic assessment process with certain mathematic rules (symetry, proportions, rythm....), I remain sceptic about such an approach - aesthetic is a highly subjective category.

But even if the fitness function for aesthetic cannot be calculated, that does not mean evolutionary computing cannot be applied in that field.

If aesthetic is a subjective quality, something in the eye of the beholder - the human being, then a real human being must perform the assessment of the subjects. Selection by fitness function still exists, but it is not automated nor calculated. A human being, artist/architect in our case, would make selections in the manner of a horse breeder. Some subjects in population would look better and would be favored for passing their properties to the next generations.

One might argue that human intervention would render EC unusable. Well, it might slow down the process (few seconds instead of few miliseconds - that's 1000x slower), but all the key elements of the EC remain. Only the fitness function for the aesthetic is admitted to be what it actually is - inevitably a human's judgement.

Monday, March 17, 2008

Evolutionary Computing (EC)

Evolutionary Computing (EC) is a method in the field of Artificial Intelligence. EC provides methods of search for the optimium by the means of randomization, mutation, recombination and selection. It mimics and learns from the biological evolution.

Similarities (compared to the biological evolution):

  • each subject is defined by a highly abstract code (genotype),

  • each subject is grown from genotype into phenotype (morphogenesis),

  • the probability for each subject to survive depends on its fitness; environment plays a large role in that,

  • the variety of the genetic pool of the population is ensured by recombination, providing offspring a new genotype, derived from genotypes of its ancestors,

  • further variety is achieved by random mutation of genotype.


Differences (comapred to the biological evolution):

  • generation turnover rate can be much higher - instead of hours, days or years, sequences of generations can be developed in miliseconds, evolution can run faster,

  • flexibility in the rules of inheritance - for example, in nature a subject typically inherits genetic material from 2 ancestors; these limitations can be easily overcome (e.g. a subject can have 5 ancestors),
  • it is not possible to simluate the complexity of natural systems in an artificial enviroment (for example, the human brain has at least 10-100 billion (short scale - 109) neurons; each of them is capable of "parallel processing" and is connected to others through about 1.000-10.000 synapses; these estimates compute to 1013 to 1015 number of synapses...); and we're not talking just about data storing, but (parallel) information processing as well.


So, how to apply that stuff in architecture? The plan is to grow a population of "houses"; each house would be based on its encoded genotype (blueprint), from which a real house would be grown. The houses would mate and produce offspring, which would be assessed; the subject with the greatest fitness (most appropriate house) would survive and pass its genetic material to the next generation. After many generations, best designs should emerge. Huh. I admit it's a long shot, but certainly worth a try :-)