Hello! I am trying to solve a decently complex space planning problem using Dynamo. Complex in that it requires placing up to 28 or more rectangular “stations” inside of a piece-wise rectangular “zone”. I have thus far experimented with the bin-packing algorithm in Refinery Toolkit (does not unfortunately take into account adjacency constraints) as well as bubble diagrams from DynaShape/DynaSpace (have not gotten the generative design portion working yet, nor does this package take into account perimeter-adjacencies, only within interior stations). So: i tried creating an entirely manual toy example graph with only 5 stations, perimeter and some toy adjacencies. this is how it looks prior to generative design study (one large container and the 5 smaller “stations” that should land inside)
I am using Surface.CoordinateSystemAtParameter to create a coordinate system within which to enable transformations of the geometries (is this the right approach?). My final generative design studies all stations end up spread out (when in fact they should be placed inside the large container). A couple of questions: 1. this type of graph feels incredibly manual and unscalable, as even in a toy example I have 15 input nodes (u,v and rotation for moving stations around). Is dynamo designed for this or is that many input nodes too complex? are there any other alternatives to enable generative design. 2. my generative design outcomes are similar to this:
all spread out despite constraints attempting to keep them close together and inside the container. apologies for a long post but i appreciate any tips/tricks advice thanks!!
Use a set of predefined points and permutate your list of spaces to change up placement order
Subsequent generation of the points based on the permutation of the list
Any is doable and you should learn all, but since you’re just starting out I recommend looking into the UV method with a total of 28*2 sliders first. You can likely find many examples of this online, but I am somewhat partial to this one: https://m.youtube.com/watch?v=42SylTdN3CY
The permutation method is the next I recommend you look into. It requires first defining a grid of possible locations (say a 6x5 grid of coordinate systems) in a flat list, and placing each space at the associated coordinate system. By getting a permutation of the list you can find the optimal setup. Note that the highest feasible list size for permutation is about 18 items, so you may want to rethink your spaces and consider them as ‘groups’ until you have a maximum of 18 (usually I find space A always wants space B next to it, so you can effectively treat AB as one space) or work out a logical means of splitting the list into two or more groups and getting a permutation of each group and the collection of groups. You can learn more in this AU session: Generative Design at Hogwarts: Using Tech Instead of Magic | Autodesk University. Note that the team expanded the maximum size of an integer soon after this, and it’ll be 5 AUs old so you can’t find a supported version of this tech anymore.
The last option is to permutate the list of spaces as before, but then generate the possible placement points on the fly. This requires some C# coding to do well (Python can be made to work but I don’t recommend it as it won’t scale across versions at all). Only look into this after you have a good command and working example of the second option.