Meanwhile life at “Dynam(o)ite your Design for Engineers” continued. The engineering company has been able to aim on more complex building projects, since they have been using Dynamo with Revit and Robot Structural Analysis in their workflow.
In this episode, the engineer wants to extend his quest for automation and optimization. The “parametric run method” from Part 3 helped, but it was limited to the initial solution list the user presents to the Dynamo script. For the first time at their technology meetings they take the terminology of “Structural Optimization” in consideration…
A long silence followed on that, in the room. People were staring into infinity… And then finally one gave the others goozebumps by saying the ‘magic’ word: Genetic Algorithm
Huh? Genetic optimization algorithm ?
Yes, they decided to wend to the fields of “Structural Optimization using Genetic Algorithms“. In brief, this really cool technique generates specific solutions to optimization problems using methods which are inspired by the natural evolution theories, like mutation, inheritance, crossover, …
That’s where the Optimo package for Dynamo comes around the corner ! It takes some time to get familiar with Optimo but once you figure out it’s “personality”, you’re really going to love it !
In this new Dynamo adventure, the engineer adds value to his Dynamo script using the Optimo package and sets up an optimization calculation for one truss. He decides to take the next steps:
- Use Dynamo to identify the truss with the largest span from the Armadillo Roof project from Part 1 (could be using the Revit surface directly, or using a SAT exported example from the roof).

- Connect Dynamo with Robot Structural Analysis Professional (RSA) and generate geometry, boudary conditions and loads for that truss.

- Connect the RSA calculation results with the Optimo nodes and let Optimo generate the right population for it. See further below for some setting advise.

- Finally export the results from Optimo coming from RSA to MS Excel using Dynamo

- Optionally you can visualize the results in 3D Scattered diagrams, like i.e. this one from the online platform plot.ly. You can look at the diagram yourself using this link.

Optimo for Dynamo – The settings
Now, let’s dive deeper into the geeky part of the optimization. The settings for the optimo nodes are quite simple, but you need to know what you are doing. You can find out more about Optimo, by clicking this link. In this project the engineer decided to use the next few settings (click the image too enlarge it)

- Population Size = 1000. Choose 1000 possible parents to be considered between the lower and upper limits from the initial solution boundaries. The optimo algorithm nodes will make “genetic altered” solutions (children) for those 1000 headed population. Our own structural optimizational village !
- We need objectives for that population. We want an ideal population and they need to obtain in this case 2 combined goals:
– Minimize the weight of the truss
– Minimize the stress in the truss
- Of course we need to set Lower and Upper Limits for our population specimen to avoid the calculation to be lasting for ever (computational birth control). We allow in here optimo to work on the next three variables:
- Section Index: choose a specific section from a list to apply on the chord members. Let optimo choose between the whole range of indicated sections in the script. The lower the index, the lighter the structure.
- Truss Height: the biggest influence on the stress is of course the truss height. The internal stress will decrease with an increasing truss height. The weight will inversely proportional increase.
- Truss Width : this will influence the stress and weight at the same way.
Using these statements, Dynamo will change the structure within Robot Structural Analysis for a large amount of randomly generated combinations that have been configured in Optimo between the lower and upper limits. Each change in the configuration is a result from the initial population that is “genetically altered” by a number of iterations, to obtain the common objectives of the population.
For this calculation, the engineer discovers that the decrease in stress doesn’t mean decrease of weight. Not at all, the objectives are acting inversely. This means, the engineer will have more than one solution again. But this time, the proposed solutions are precisely generated and are optimal in their solution domain. An additional objective could be the global deformation of the truss.
Conclusion in this episode is that with Optimo, the generation of solutions is more accurate and faster then using a parametric run.
Special thanks to Mohammad Rahmani Asl for his support in understanding the Optimo process !