1 of 36

Design Guidelines

2 of 36

Source: http://cs.roboticbuilding.eu/index.php/Shared:2023W4G4Design

Source: http://cs.roboticbuilding.eu/index.php/Shared:2023W4G4Design

Case Study

3 of 36

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

4 of 36

3D Points Network:

- 4 rows in X and Y axis

- 2 rows in Z axis

- Distance between points: 6m

5 of 36

Voronoi Cells:

- Moving points in 3 directions

- 3 Gene Pools to avoid randomness of points generation

6 of 36

Voronoi Cells:

- Finding the 4 closest points to the center �- Central arrangement �- (Linear arrangement?)

7 of 36

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

8 of 36

Site Plan:

- 6*6 mesh with random ‘Z’ vertices

Benchmark, Z=0

9 of 36

Sea Edge / �World Islands

Creek / �Old Dubai

Mangrove / �Ras Al Khor

Desert / Qudra

Mountain / Hatta

Site Options:

10 of 36

Bounding Box:

- Adding a bounding box to cut the Voronoi cells �to sit on the sloped surface

11 of 36

Bounding Box:

- Voronoi cells after cut

12 of 36

Voronoi Cells:

- Selection of 4 adjacent cells according to the minimum surface area

13 of 36

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

14 of 36

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.

15 of 36

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)

16 of 36

Openings:

- Eliminating surfaces with below-average surface area

17 of 36

Sunlight Simulation:

- Earth Vs. Mars (?)

18 of 36

Percentage of Openings for each space:

- Dividing the solar surface areas by cell areas

Percentage of Openings for each space

19 of 36

Illumination percentage of each cell:

- Surface extrusion

20 of 36

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

21 of 36

Lighting Analysis:

- Heat map creation

- Mesh offset

22 of 36

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.

23 of 36

Dataset Generation:

- The dataset is generated from the Grasshopper algorithm + Optimizer.

24 of 36

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)

25 of 36

Example:

- Having 200 sites >> Goal: Selecting the best 20 sites (as per the optimization solver)

  1. Single-objective Optimization

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)

26 of 36

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

27 of 36

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.

28 of 36

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.

29 of 36

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.

30 of 36

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.

31 of 36

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)

32 of 36

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

33 of 36

34 of 36

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

35 of 36

BEEAH Headquarters:

BEEAH Recycling:

www.beeahgroup.com/

36 of 36