Galapagos building footprint on a site

As a newbie in the whole Grasshopper subject, I have developed a script that generates the footprint of the buildings including their elevation projection (requirements in Germany). I used OpenNest to find the the most suitable placement on the site. Until now it has been working fine, but there are still some improvements possible, respectively some area of the site that could be used.

That is why I came up to the point of trying Galapagos, in order to optimize that area… and sadly got stuck!

So the task is to place a certain amount of building (manually user defined) that have their footprints which cannot touch each other and also the site border (that is the reason why I chose opennest). I have sliders for the definition of storey numbers and storey heights (the second could be left out of the optimization). I am using the sliders for the Genome and the area of the site (arriving from opennest) as Fitness. In this case Galapagos is shrinking the buildings up to a level where one building goes to 1 storey and there is much space in the site that is unused.

Is this approach wrong (combination of opennest and galapagos)? Or do I need a complex fitness formula to fit my buildings onto the site?
Probably you will laugh at my solution :rofl: too easy to be true :sunglasses:

Nonetheless I will appreciate any feedback


I think the correlation between your genome (number of buildings?) and fitness is almost inexistent.
Maybe try with cooling factor at 1 , as you need it to try every possible combination… ? This seems wrong anyway.

Have you tried? What results did you get?

Attaching something more here might be useful…

I apologize, but I forgot to put the second screenshot. So here it is:

So the orientation of those footprints is decided by OpenNest, meaning whenever I play with the toggle of the storey numbers, OpenNest places them at the best position.
So instead of doing this process manually, I would like Galapagos to take over the task.

I have been doing research about galapagos and noticed that a formula would actually help achieve the desired best fit option.
I was never good at math and now when I need it, it is giving me some headaches :slight_smile:
neverthless I have tried this option:

I have added an expression that devides the total area of the footprints by the total area of the site. The best option would be if the result is 1, meaning 100% coverage. Hence I have attached the fitness to this expression (which aparently has not errors) and the genome to the number of storeys per each building.

After launching the solver, it kind of stops (graphically) after the 100th calculation. I need to switch to “otpions”, in order to see it moving the buildings. I also don’t get that yellow curve and the result stays “0”.

any suggestions?

this tries to orient 3 rectangles + their elevation projections inside a certain boundary (set for 3 buildings)

  • projections should not intersect with each other
  • projections should be fully contained in the boundary
  • elevation projections vary depending on number of stories (3 to 10)
    maximize fitness =find a valid orientation for each building with max number of stories
    (need to play around with Galapagos settings, this will be 100% brute force, meaning Galapagos will just to move the sliders… Galapagos | I Eat Bugs For Breakfast ) (27.5 KB)

should the evaluation also account for [boundary area] / [building elevation projection] = as close as possible to 0.5 ?

Hi inno,
your approach is different and looks very interesting. Thanx for your input :wink:

Yes, the goal is to project those footprints at 0 distance from each other and also the border. So these footprints should occupy as much land as possible on the site without tought others. As far as I understand, you have the building/building intersection set to 0, but still they are far from each other.
I have increased the number of storeys, to give galapagos a bigger range to produce a bigger footprint, but in the end the does not use the widest area as the site offers:

yes, the thing is Galapagos here is not being used as Galapagos but just for moving sliders around, so I put it on the canvas but it is the wrong tool doing the wrong thing :slight_smile:

there is no function that Galapagos could try to explore to find the best results, as the x-position, y-position, rotation, and storeys variables are not related to each other

each next generation calculated in Galapagos could be completely right or completely wrong regardless of the previous one, there is nothing that could lead us to think that the next generation might produce an even better result

I’m very interested in this topic, and would love more to hear and learn how this problem can be tackled without brute force

I’m very interested in this topic, and would love more to hear and learn how this problem can be tackled without brute force

hopefuly there is mighty jedy that will lead us to the right path :vulcan_salute:

1 Like

I would recommend some other GA compoenet, the ones that comes to mind is WALLACEI and OCTOPUS

this way each “related genome” can be assigned to an axis, then you can choose the best option from a multi-axis result

1 Like

I have started also looking at Wallacei as a substitute of Galapagos. It looks a bit more complex and you don’t see results as fast as in Galapagos.

Still I have been trying on integrating Open Nest with galapagos to solve this problem. Since OpenNest can fit certain geometries into a box, then imho this would help Galapagos in findinig the fittest solution. This is what I came up so far:

By dividint the (total building area) / (site area) the result should be 1 if the number gets as close as possible to the site area. So the task would be to maximize this number. To do that, it uses the number of storeys that have an impact on the footprint and also the rotation of these footprints (in open nest).

The problem I am facing is to limit the number of sites generated by open nest. When Galapagos is trying to maximize the number, it simply goes to maximum of storeys, hence producing one site per building. I tried also to dispatch the number of sites to have just one true value, but it did not help.

Does anyone know how to limit the number of sites to ONE in open nest?


After multiple tests, I believe I have achieved to define a fitness function that does a pretty good job. It places a maximum coverage of the footprints at just one site in many cases. But sometimes it places on footprint outside of the site area as seen in the picture below:

This off course causes the fitnes function to go higher then in realistic cases (around 0.8). Any idea what might be causing this?