algorithmic modeling for Rhino

Hi dear Ghs community,

i am trying to subdivide this 2 "rail" curves creating equal area rooms, Galapagos looked perfect to do this but i'm not achieving any acceptable result.

My algorithm, with values given from the genome of Galapagos, is capable to slide the t parameter starting from the the points of the 2 subdivided curves and consequentially create room boundaries, but i don't know why it's not working fine.

Please any help!

Thanks in advance,


Views: 3199


Replies to This Discussion

I've been working on it this week, it was interesting. Sorry for the late response... I'll post my findings next weekend, no spare time right now... I hope it won't be too late!

I'd been toying with it as well but the Rhino Area finder was so incredibly slow (like 5 seconds for a dozen or so breps) that it became unusable. I'd love to see some solutions to this.


David Rutten

Poprad, Slovakia

Interesting task.

Just had a quick look, but your problem seems to be the domains. By giving every genome the possibility to add or substract a value, you give it the chance your values actually overshoot 1 or 0.

This also means your curves do not need to be closed, so they do not produce an area.

I did a small try giving not initial divisions and adding 0 and 1 manually. Not really satisfied with the result though.  Maybe it would also be better to not make the division on the second curve so rigid. 

I will play some more as soon as possible. Also looking forward to see other solutions.



(absolutes seems to work better - strange.)


Thanks a lot everyone!

I'm so sorry for my late feedback but i'm 100% focused on my thesis project that i have to deliver tomorrow.

I'm sorry twice David but at the end i used the "Equalize N" command from Kangaroo and i applied it to the medium side of my trapezoids that form the perimeter.

The result was not very precise though but in my case (quite desperate) acceptable.

Anyway i tried also to solve the overshoot problem that Phillip too encountered dividing each frame of the curve 100 times (creating a sort of domain) and giving the possibility to slide with a shift list value given by the genome each iteration.

I will try to make it work as a finish my task and i will let you know!

Phillip sorry but i suppose your version of Ghs is newer than mine (yes i know i have to update!) and i can't open it... Anyway was it working well your definition with absolutes???

Thanks again,

Hear you soon,


Hi Stefano,

Sorry, I think I was missing something fundametal here:

Record: Multiple fitness values were supplied, fitness is defined as the average.


So The reason on thing worked better was more or less coincidence. 

Lets try this again:

(the input curves would be your two rails.)

So far... 




Well I'm so sorry I didn't have time to come back for a long time!

I had a bug in the part that deals with the inner curve seam, always troublesome:) I just killed it.

Here is my attempt, it works quite well I think.

I found that the best way was to solve each rail separately.The reason for that is that one division depends on the other. It's also much quicker than solving everything in one shot.

Run the 1st solver with the inner points genelist set to zeros.

The outer points genelist actually controls both divisions at the same time.

This ensures that the separation lines remain roughly perpendicular to the rails

Then run the 2nd solver for refining.

Run both solvers in annealing mode, as there are obviously several possibilities. Of course the longer the better.

You can see a pattern in the genomes, which means that there must be an analytic solution to this problem. Gives me a headache! I think it's a great example of the use of galapagos. David you can use it if you like of course.

Thanks for the food!


Hello Fred!

Sorry for the late reply but i graduated and then started working immediatly so how you can imagine the last 3 weeks had been very intense!

Thanks for your very interisting reply, your algorithm is very smart and elegant, many solution  (like the "modulus" comand to adjust numbers bigger than 1 i suppose) will be very usefull for my next Grasshopper challenges...

Anyway i tried it and i think it's all very clear thanks also to your explanations, the only thing i didn't get is why you test the majority of the parameters of the curve with "0.5" and then you dispatch them...

What do you want to achieve in that way?

Anyway the rest it's, in my opinion, well understood and very helpfull too!

Thanks again and again!!!

Kind regards,


Er, I'm not too sure... Just some random wiring I guess!

It' the length of the domains that I use to dispatch. I don't want a subcurve from 0.0215 to 1, it's irrelevant.but I want the 0 to 0.0215 part to join it with the 0.954 to 1 that I get from the other side.

It's the problem when using the modulus trick. The first parameter may belong either to the first/last division line, or the second one. Accordingly the last parameter will correspond either to the first/last or the "penultimate" line.

So I came up with this complicated and unintuitive way of determining which side of the seam I was. Not very smart and elegant indeed, but thanks for your compliment anyway!

Congrats for your graduation.

Couldn't help it...

This one is much cleaner.

Maybe I have to explain that the whole point of wrestling with param domains is to avoid the plain and simple region boolean components. Faaaar too slow to be used in a solver set up.

Also, the final tweak : You'll notice the dark blue group, it sets a higher average value than possible. this avoids the "cutting corners" that occurred with the real average (in red). Plus the total area is higher, which is good, I guess.

That's all Folks!

***Happy New Year***


I'm so sorry Fred -as usual- for my late reply! 
Frankly it took me a while to understand it but now i can say that your algorithm is really perfect.
I also realized that Galapagos i such a powerful tool (...and my knowing of it must increase, because it's = 0!!!)

Thanks again and again Fred!

PS: I do really think that this community is one of the strengths that made Grasshopper so loved by people.






  • Add Photos
  • View All

© 2022   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service