Design Guidelines
Source: http://cs.roboticbuilding.eu/index.php/Shared:2023W4G4Design
Source: http://cs.roboticbuilding.eu/index.php/Shared:2023W4G4Design
Case Study
1. Making of Voronoi Cells
2. Floor Area of each Cell
3. Area to Height Ratio
4. Galapagos Optimization
6. Sunlight Simulation
5. Openings
7. Illumination percentage of each cell
8. Lighting Heatmap
Algorithm Overview
3D Points Network:
- 4 rows in X and Y axis
- 2 rows in Z axis
- Distance between points: 6m
Voronoi Cells:
- Moving points in 3 directions
- 3 Gene Pools to avoid randomness of points generation
Voronoi Cells:
- Finding the 4 closest points to the center �- Central arrangement �- (Linear arrangement?)
if Count:
for x in range(1,4):
gp = ghenv.Component.Params.Input[x].Sources[0]
if int(gp.Count) != Count:
gp.Count = Count
gp.Minimum = -0.5
gp.Maximum = 0.5
gp.ExpireSolution(True)
Automation of Gene Pools:
- Automatic modification of Gene Pools points according to the number of points
- Moving each point in 3 directions
Site Plan:
- 6*6 mesh with random ‘Z’ vertices
Benchmark, Z=0
Sea Edge / �World Islands
Creek / �Old Dubai
Mangrove / �Ras Al Khor
Desert / Qudra
Mountain / Hatta
Site Options:
Bounding Box:
- Adding a bounding box to cut the Voronoi cells �to sit on the sloped surface
Bounding Box:
- Voronoi cells after cut
Voronoi Cells:
- Selection of 4 adjacent cells according to the minimum surface area
import Rhino.Geometry as rg
a = []
for i in range(len(points)):
if round(points[i][2], 3) == 0:
a.append(1)
else:
a.append(0)
Floor Area Calculation:
- Separation of the bottom of each cell with Python, with the condition that the geometric center points of each plane are placed on the coordinate plane. (Z=0)
- Site topography (?)
Area Optimization
Area-to-Height Ratio:
- The height of each space is obtained by dividing the integral of the volume of each cell by the floor area of that cell.
import Rhino.Geometry as rg
a = []
for i in range(len(points)):
for j in range(len(points)):
if round(points[i][0],4) == round(points[j][0],4)\
and round(points[i][1],4) == round(points[j][1],4)\
and round(points[i][2],4) == round(points[j][2],4)\
or round(points[i][2],4) == 0:
a.append(1)
else:
a.append(0)
Openings:
- Avoiding the overlapped surfaces (Python)
Openings:
- Eliminating surfaces with below-average surface area
Sunlight Simulation:
- Earth Vs. Mars (?)
Percentage of Openings for each space:
- Dividing the solar surface areas by cell areas
Percentage of Openings for each space
Illumination percentage of each cell:
- Surface extrusion
import ghpythonlib.components as ghc
a = []
for i in range(len(Mesh)):
if flip[i] == 0:
a.append(Mesh[i])
else:
a.append(ghc.FlipMesh(Mesh[i], True, True,True))
Lighting Analysis:
- Heat map creation
Lighting Analysis:
- Heat map creation
- Mesh offset
Summary:
- Surface Optimization (minimum floor area, minimum walls surface area)
- Sunlight simulation
- Sunlight Optimization (WIP – Mars condition)
- Openings Optimization (light, view, etc.) WIP
- Area to heigh Optimization
- Topology Optimization: Structure + Materiality
- In-situ 3D Printing | Toolpath Optimization, etc.
Dataset Generation:
- The dataset is generated from the Grasshopper algorithm + Optimizer.
The total number of datasets can be obtained from the following equations, considering that for ‘m’ number of generated sites, we select ‘n’ number of the best solutions for single-objective optimization or a certain number of solutions for multi-objective optimization:
For single-objective optimization:
("n" = The selected solutions for each site)
Total datasets = ∑(n[i]) , i∈[0, m) ), If "n" varies.
Total datasets = n*m, If "n" is constant.
For multi-objective optimization:
Total datasets = ∑(n[i]) , i∈[0, m), ("n" = Pareto solutions for each site)
Example:
- Having 200 sites >> Goal: Selecting the best 20 sites (as per the optimization solver)
a) For each model: will consider the top 20 optimized solutions >> Results for Python: 200*20=4,000 models
b) For all models: may not have the same number of optimized solutions >> Results for Python: Sum of all optimized models (0 to 199)
2. Muti-objective Optimization
a) Pareto-Principle for Multiple Goals: the best solutions of a multi-objective optimization process (0 to 99)
Some of the available solvers that can be used:
01
02
03
04
Grasshopper
Galapagos
● Evolutionary Solver
●Annealing Solver
Grasshopper
Plugins
Opossum
Octopus
Silvereye
Goat
…
Python 3.9 + Jupyter
Multi objective (MOO)
Genetic Algorithm
PSO Algorithm
Hybrid Genetic & PSO Algorithm
…
Python 3.9 + Jupyter
Single objective
Genetic Algorithm
PSO Algorithm
Hybrid Genetic & PSO Algorithm
…
Grasshopper
Galapagos
● Evolutionary Solver
●Annealing Solver
By default, Grasshopper comes with two solvers named "Evolutionary Solver" and "Annealing Solver" in the Galapagos component.
Advantages:�Easy to use and does not require any other platforms.
Disadvantages:
The low speed and the lack of available solver settings.
Octopus
Octopus was originally made for Multi-Objective Evolutionary Optimization. It allows the search for many goals at once, producing a range of optimized trade-off solutions between the extremes of each goal. It is used and works similar to David Rutten's Galapagos, but introduces the Pareto-Principle for Multiple Goals.
Opossum
Opossum includes two of the best-performing, single-objective optimization algorithms in Grasshopper:
model-based RBFOpt and evolutionary CMA-ES.
It also includes the multi-objective RBFMOpt, and the multi-objective MACO (Ant Colony), MOEA/D, NSGA-II and NSPSO (Particle Swarm) algorithms from the Pygmo 2 library.
Goat
Goat is an optimization add-on component for Rhino's Grasshopper. It perfectly complements Galapagos, David Rutten's evolutionary solver. Relying on gradient-free optimization algorithms, the component pursues a mathematical rigorous approach delivering fast and deterministic results. At every run, the goat will yield the same optimal result.
This process is carried out through intelligent interaction between two platforms, Grasshopper and Jupyter. The data is sent from Grasshopper to Jupyter, and then the results are returned to Grasshopper.
Advantages:�high speed and available solver settings.
Disadvantages:
Requires coding skills and knowledge of the optimization rules specific to the type of optimization.
Python 3.9 + Jupyter
Single objective optimization
Multi objective optimization (MOO)
Machine Learning
Training
Mathematical model extraction
Prediction
Based on input data i.e. site’s slope, etc. �Without the optimization process
Verification
Test the dataset for accuracy validation
Circularity:
- Optimization >> Minimum material required
- Recycle >> Mix >> 3D Print (Additive Manufacturing)
- On-site fabrication
- Locally sourced construction demolition waste
(CDW-based materials)
- Locally available sand