Archive for the ‘Related with C’ Category

GenerativeComponents <-> EnergyPlus, connection (updated)

Wednesday, October 28th, 2009

These days I have been updated my GC<->E+ connection. I fix some bugs to get more speed, and I get it. you will see in the video 10 different thermal analysis of the box in less than a minute. so I’m glad for that. Unfortunly Since E+ needs some seconds to generate the new files, the speed in the evaluation has a limit.

Results: The data that you are viewing.
Inside Air temperature Average : is the average of the inside Air temeperature in the hottest and coldest day in Barcelona, this number should be the same all the time. 21 C degrees/hr.

Cooling Average : This is the jules/hourly that you have to spend in this building to keep the temperature at 21 C degrees. during the hottest and coldest day in the year. (this number must be change)

Heatting Average : This is the jules/hourly that you have to spend in this building to keep the temperature at 21 C degrees. during the hottest and coldest day in the year. (this number must be change)

The settings of the buildings, like the type of glass in windows, the material of walls or even the weather are defined in the E+ file.

GenerativeComponents <-> EnergyPlus, Connection (wip)

Saturday, October 24th, 2009

My PhD. is about Evolutionary Estrategies. More Precisely in Genetic Algorithms (GAs). I understand the GAs like a complex machine of optimization that knows nothing about the problem which it is trying to (re)solve.
This Particularity (detail) is very interesting, due to the fact that you can apply the GAs to different fields. For example, on the web you will find a lot of resources about GAs, such as Libraries of algorithms, examples of code, images and a lot of explanations.

The complex thing in a GA is not the programming part, as you can think, Is the way of how you define the problem that you want to optimize. This is usually a function called Fitness Function (FF). The correct set of your FF will determine the increase of the population’s level in each iteration. Therfore the effort must be put here.

The FF allows to evaluate each solution (individual) and to set who is who in the population, or in a different way, which of these solutions are the best and which are not.

Sometimes you can work with a really simple FF, like evaluating the length of a path, that you want to reduce. Besides, it can consists os a series of different equations that each individual must test. Logically, this process involve computational resources, it take some seconds or even minutes to achieve a correct evaluation.

In the case of one of my experiments, the evaluation consisted of determine how much energy a building spends in a specific weather. To achieve that I had to write a series of classes in C# (some of classes are built embedded in GC). Well a whole programme (with out interface, Console application) to allow me to transform the complete geometry in a different type of file for its thermal analysis in EnergyPlus.
GC_EP_post
This Video shows one of my first experiments in which I connect automatically (send and retrieve the data) GC and E+.

Genr8

Sunday, February 24th, 2008

Genr8 is a plug-in for maya and works generating surfaces. It is very interesting because fuse the universal growth conditions with evolutionary search.

Genr8 it is developed via API of Alias|WaveFront’s and Combine 3D Map L-System that growth in a digital environment, with gramatical evolution. the seed is designed to react of the digital nature and give to the user the control during the evolutionary adaptation, Genr8 dosen’t have structural or material criteria, and the most of the times the results are closer to the chaos.

Genr8 was Developed by Martin Hemberg and Una – May O’reilly and the people of the Emergent Design Group from the MIT.

salida6.jpg

Genr8 has a lot of components to create and evolve differents elements, like curves and surfaces.

Attractors, > act attracting surfaces.

Repellors, > similar like attractor but in a oposite way.

Gravity, > as it`s name, act in an uniform way in the global coordinates (x, y, z)

Boundaries, > you can create boxes, surfaces, to act like boundaries of the growth.

Seeds, > the seed by default it is a regular polygon, and you can control the side, starting position of the polygons, also you can define your own seeds, for example drawing curves or using the grammar of genr8.

this example represent a square:

Edge0 + ~ Edge1 + ~ Edge0 + Edge1
Edge0 -> Edge0 [ [ + Edge1 ] – ~ Edge1 ] Edge0
Edge1 -> Edge1 [ [ + Edge0 ] – ~ Edge0 ] Edge1
Angle 90

there are some conditionals to create grammar, In the first line you have to define the Axiom, and only can be a regular polygon, and may only contain ” + “, “~” and Edge(number). Each word should be separated by one space, and the lines need a return. and the comments have to be in separated lines and starting like C++ with two “//”, so there are more elements and rules to create seeds by grammar, but this is an idea how can they work.

To create my Own grammars I start using the predifined types and then looks how they work and so on…

After you define your grammar you have to define the different elements of the growth, for example:

n/ -> the number of the growth steps

s/ -> the sacale of each growth step

rn/ -> the noise that you want in the growth.

fc/ -> fix the center of the growth

ds/ -> if you want draw every step of the growth

and there are too much Mel commands to create and define the environment.

So the plugin has to control: the scaffold, the environment, the Grammar, the Genetic Engine and the Fitness.

The first exercises come from the page and the papers who explain genr8. the other ones are developed by me.

captura-pantalla.jpg

Default Examples:

genr8 -kc

genr8 -fp -sl 8 -n 5 -ba 70 -t 4 -r 0 0 3 -rn 0.1 -s 1.1

polyCube -w 3 -h 4 -d 3
genr8 -t 3 -rn 0.1 -n 4

polyCube -w 3 -h 4 -d 3
genr8 -t 3 -n 5 -a 0 0 4 -g z -0.5

PolySphere -r 5
genr8 -t 4 -n 5 -ba 90 -g z -1 -sp 0 0 7 -sl 3 -s 1.3

genr8 -t 4 -n 6 -ds -s 1.3 -r 0 0 -3 -r 0 4 0 -ba 90 -r 1 -3 -4 -r 2 2 5 -r -3 -2 1

genr8 -t 3 -n 5 -g z -1 -r 0 0 -3

polyCube -w 3 -h 4 -d 3
genr8 -t 4 -n 5 -r 3 3 3 -co

personal experiment:

genr8 -n 5 -rn 0.2 -t 4 -r 0 0 3
-intersting surface results

-Variation 1
genr8 -n 5 -rn 0.2 -t 4 -g z -1 -r 0 0 -3

-Variation 2
genr8 -n 8 -rn 0.1 -t 3 -g z -1 -r 0 0 3 -r 0 0 -3
polyCube -w 15 -h 15 -d 5
genr8 -n 5 -rn 0.2 -t 4 -s 1.2 -a 7.5 7.5 -1 -a -7.5 7.5 -1 -a 7.5 -7.5 -1 -a -7.5 -7.5 -1 -r 0 0 -1
-before to execute, create the polyCube and select it.

-Variation 1 the same thing, select the Polycube before
genr8 -n 4 -rn 0.2 -t 4 -s 1.2 -a 3 3 -1 -a -3 3 -1 -a 3 -3 -1 -a -3 -3 -1 -r 0 0 -1

-Variation 2
-Select the polyCube to get a crazy result in the box.
-or leave it to run free to produce some kind of flower.
genr8 -n 8 -rn 0.2 -t 4 -s 1.2 -a 2 3 -1 -a -2 3 -1 -a 2 -3 -1 -a -2 -3 -1 -r 0 0 0

-looks some familiar element
genr8 -n 8 -fp -t 4 -r 0 0 -5

salida1.jpg

salida2.jpg

salida3.jpg

salida4.jpg

salida5.jpg