algorithmic modeling for Rhino
Thanks to Ethan's help, I've created a script that uses lunchbox and an image sampler to divide a facade into diagrid panels with "windows" offset inside of each one (the size of the window is controlled by the brightness of the image and size of the diagrid panel is controlled by lunchbox). The frame surrounding each window is then extruded to shade the window within. The extrusion distance for the diamonds' 4 points are controlled by 4 sliders (one for each point).
My goal is to find the total radiation of the windows using Ladybug (or DIVA) and then use Galapagos to adjust the frame extrusions to optimize them to best shade the windows. However, in order to obtain an effective pattern for shading, I need to be able to move the 4 control points independently for each panel... So instead of adjusting all of the panels at once, I need to control each panel extrusion on its own.
First off, I'm not sure how to control each panel independently. Secondly, I'm afraid this will result in far too many sliders for Galapagos to handle (especially once it's applied to the scale of a facade). I tried using a random number generator for each point (which kept the slider count to only 4), but Galapagos was unable to identify any trends in this method (because it was entirely random) and thus could not optimize the extrusions. I think the most probable solution may be to limit the quantity of possible outcomes by making an index of pre-baked shapes (let's say 10 different frame types). Then, setting up a script that allows Galapagos to "plug-in" each different frame, at each different panel on a facade until it finds the ideal pattern. I'm not sure how to go about doing this either... specifically in a non-random way that will allow Galapagos to identify trends. Maybe by using hoopsnake?
I've attached my grasshopper definition. Any suggestions would be greatly appreciated!
If you want to have Galapagos control all 4 points per frame, it will need more or less direct control over the individual values.
If you don't start grouping windows by proximity, you would still at least need one value per window. Your idea about the 10 different types is essentially this. Another way was to define a continuous function that defines skew and rotation of a plane that the 4 points per window have to lie on. But that would limit the possible shapes...
In the end, there's no way around a big load of separate values for Galapagos. Best to use a GenePool component for that. For large numbers of variables, the annealing solver should settle faster than the genetic solver.
Check out Octopus. It is an evolutionary solver similar to Galapagos but allows you to test multiple parameters at once and while evolving them towards user set fitness values. Hope this helps!
See the example below on how to use ladybug with Octopus together
is there any progress in your project? do you solved the combination of ladybug and galapagos, please share your work and the definition with us!
thank you so much!
can you please share your final script?
I've come across your research on the internet and would like to understand how you solved the problem..