Il Generative Design nella progettazione BIM e gli strumenti per metterlo in pratica

Un approfondimento sul processo di generative design per la progettazione digitale nell'industria delle costruzioni, attraverso un esempio del flusso di lavoro con Dynamo, Project Refinery e Revit

progettazione-parametrica_700.jpeg

Cosa è il Generative Design?

Il Generative Design è un processo di progettazione integrata uomo/macchina, che consente al primo di vagliare rapidamente un enorme numero di soluzioni, ottimizzate secondo gli obiettivi da raggiungere.

La creazione di database e modelli parametrici, la scrittura di algoritmi basati sul design computazionale e la grande potenza di calcolo fornita dal cloud computing stanno rendendo oggi possibile la sua applicazione anche nell’industria delle costruzioni; in altri settori produttivi, come l'ingegneria meccanica e l'arte, è già divenuto una pratica diffusa per i suoi possibili vantaggi creativi ed economici.

generative-design_arch-luccioni-01.jpg

Figura 1 – Gli strumenti di progettazione digitale nell'industria delle costruzioni

Generative Design, gli obiettivi: moltiplicare le opzioni e ottimizzare la progettazione

Rispetto al tradizionale utilizzo “passivo” del computer, quale mero strumento di compilazione, il processo di generative design aspira di fatto a garantire una più efficiente collaborazione tra computer e utente, sfruttando anche algoritmi basati sui principi del Machine Learning, come gli algoritmi genetici. L’uso di questo metodo consente di vagliare in poco tempo migliaia di ipotesi progettuali, di ottimizzare rapidamente i risultati in base alle esigenze e di risparmiare risorse, anche anticipando molte fasi di valutazione all’inizio del processo.

generative-design_arch-luccioni-02.jpg    

Figura 2 – Schema del processo iterativo di generative design

Un processo di progettazione interativo uomo/macchina

Si tratta di un processo di progettazione iterativo, svolto unitamente da un progettista e da un algoritmo. A partire dalle esigenze iniziali, il progettista definisce variabili e vincoli che poi formalizza scrivendoli nella prima parte dell’algoritmo (algoritmo generatore e algoritmo valutatore). La seconda parte dell’algoritmo (algoritmo risolutore) si occupa di eseguire un grande numero di volte la prima cambiando, secondo un criterio prestabilito, i valori delle variabili e generando di conseguenza una certa quantità di risultati.

Spetta al progettista analizzare i risultati finali e apprendere da essi nuove informazioni, in considerazione delle quali egli modificherà uno o entrambi gli algoritmi del programma per ottenere nuove e migliori soluzioni.

Il flusso appena descritto continua a ripetersi fino al raggiungimento di un prodotto soddisfacente per il progettista. É doveroso a questo punto sottolineare come il ruolo dell'intelligenza artificiale (AI) non possa sostituirsi alla capacità critica e creativa dell'essere umano, ma sia piuttosto uno strumento per spingere verso scelte solitamente meno considerate, più economiche e più rapide.

Il Generative Design per il progetto architettonico, strutturale e impiantistico

Il generative design può teoricamente essere applicato a qualsiasi processo di ideazione, la sua produttività nella progettazione architettonica è però maggiore nella fase del progetto di fattibilità tecnico-economica; un esempio tipico potrebbe essere la scelta della volumetria rispetto al miglior rapporto tra superficie costruita e superficie utile.

Differentemente, il generative design per la progettazione strutturale ed impiantistica può rivelarsi molto utile anche in fase di progetto definitivo; la ricerca della migliore distribuzione degli apparecchi illuminanti potrebbe essere un caso di applicazione valido.

In urbanistica, grazie alla sua capacità di proporre quasi in tempo reale numerose volumetrie ottimizzate di piano attuativo e di quantificarne le caratteristiche, il generative design, oltre ad aiutare i progettisti, potrebbe coinvolgere in modo più intuitivo e trasparente le comunità e gli altri attori di una progettazione partecipata nelle scelte di piano.

Cerchiamo ora di approfondire come il generative design possa realizzarsi nella pratica e con quali strumenti applicativi

Generative Design: il flusso di lavoro con Dynamo, Project Refinery, Revit

Dal momento che molte società si affidano a soluzioni sviluppate al proprio interno, attualmente esistono ancora pochi prodotti sul mercato che permettono di applicare il generative design nell'industria delle costruzioni.

Una valida alternativa al flusso di lavoro descritto nel resto dell'articolo ed indipendente dalla software house Autodesk può essere rappresentata dalla piattaforma Hypar. Potrebbe essere interessante analizzare in futuro le potenzialità del generative design gestito da browser.  Si è scelto però di trattare in questo articolo il flusso di lavoro che coinvolge Dynamo, Project Refinery e Revit, in considerazione dell’ampia diffusione del software di BIM authoring Autodesk, del carattere open source di Dynamo e del libero accesso a Project Refinery.

Dynamo é uno strumento di programmazione visiva che crea i propri elementi, informativi o geometrici, dotati di relazioni parametriche; legge e scrive da e verso praticamente qualsiasi database. È attraverso questo strumento che verrà compilato l'algoritmo generatore e l'algoritmo valutatore.

Refinery è il software che sfrutteremo invece come algoritmo risolutore. Esso è uno strumento che utilizza la potenza di calcolo di alcuni server in remoto (messi a disposizione da Autodesk) per generare rapidamente migliaia di risultati di uno grafo di Dynamo attraverso l’utilizzo di differenti algoritmi per la configurazione automatica delle variabili e l’ottimizzazione delle opzioni di output. 

Project Refinery e l'algoritmo risolutore

Ma come funziona Refinery?

Il programma utilizza come risolutore l’ottimizzazione NSGA-II, un algoritmo genetico metaeuristico per l’ottimizzazione multiobiettivo.

Gli algoritmi genetici vengono utilizzati per generare soluzioni di alta qualità ed analizzare problemi e si basano su operazioni ispirate alla biologia, come la mutazione, l'incrocio e la selezione naturale. Sono fondati su un’ottimizzazione per popolazione che mantiene e migliora le caratteristiche di più esemplari, ispirandosi di fatto ad alcuni principi del darwinismo. Ogni ciclo del processo di calcolo prende il nome di generazione, per ogni popolazione di ipotesi progettuale vagliata il processo di mutazione, crossover e selezione naturale, è ripetuto un numero di volte pari al valore di generazione inserito. L’algoritmo risolutore eseguirà quindi molte volte il nostro script di Dynamo in automatico, in modo da selezionare le migliori opzioni secondo i criteri definiti dal progettista.

Oltre alla potenza di calcolo, necessaria per eseguire in tempi ragionevoli le elaborazioni dell'algoritmo genetico, questo pacchetto aggiuntivo mette a disposizione una interfaccia per l’organizzazione e la valutazione dei dati ottenuti.

Project Refinery è ancora in fase di beta testing ma, dal rilascio del 5 settembre 2019, può persino caricare uno script di Dynamo, precedentemente salvato, ed essere utilizzato direttamente da Revit, in maniera molto simile a come avviene con il Lettore Dynamo. Per iniziare a sperimentare con questo software è sufficiente iscriversi sulla pagina web del progetto e seguire le istruzioni sull’installazione.

Un caso applicativo di Generative Design: l’ottimizzazione di uno stadio con Project Refinery

Per verificare le potenzialità dello strumento e del flusso di lavoro precedentemente descritto, si è scelto di utilizzare come esempio la progettazione preliminare della tribuna per uno stadio. Tra gli obiettivi quello di valutare l’area dei posti a sedere e la visibilità, al variare dell’altezza e della profondità, secondo valori definiti dal progettista.

generative-design_arch-luccioni-03.jpg

Figura 3 – Grafo in Dynamo per la generazione della tribuna dello stadio: in rosa il codice per generare la geometria (algoritmo generatore) in ocra il codice per valutare gli obiettivi (algoritmo valutatore)

Algoritmo generatore

Procederemo ora all'analisi dello script di Dynamo di cui ci serviremo per definire la geometria ed i vincoli dell'oggetto che vogliamo analizzare. La prima parte dell’algoritmo contiene i nodi per configurare le costanti geometriche; una controlla le dimensioni del campo da gioco su cui si affaccia la tribuna presa in esame e l'altra la distanza tra quest'ultima e il campo da gioco.  Altri due semplici nodi del tipo "number slider" permettono di configurare le variabili del progetto: l'altezza della tribuna e la sua profondità. I blocchi in questione vanno impostati su "input" in modo che il pacchetto "Refinery" possa successivamente controllare i loro valori.

generative-design_arch-luccioni-04.JPG

Figura 4 e Figura 5 –  Configurazione delle costanti e configurazione delle variabili di progetto.

La forma della tribuna è ottenuta attraverso un gruppo di nodi che definiscono due curve, le uniscono e le estrudono. Trattandosi di un grafo che segue i principi del design computazionale, saranno proprio le variabili numeriche di altezza e larghezza a definire volta per volta la geometria di questo oggetto. Lo stesso principio ovviamente vale anche per la generazione dei gradoni posizionati sulla nostra tribuna.

generative-design_arch-luccioni-05.JPG

Figura 6 – Generazione della geometria della tribuna 

Algoritmo valutatore

Il precedente algoritmo potrebbe far parte di un qualsiasi processo di computational design, scritto in una delle piattaforme di programmazione visiva esistenti (Grasshopper, Dynamo, Generative components) e in cui il progettista, ancora manualmente, sulla base dell’esperienza e dell’intuizione, vaglierebbe un ristretto numero di ipotesi.

La seconda parte del grafo di Dynamo, che ci apprestiamo ad analizzare, si occupa invece della quantificazione numerica degli obiettivi del progetto ed è caratteristica del generative design. Nel caso del nostro stadio l’obiettivo da raggiungere è il miglior rapporto tra visibilità e superficie della tribuna.

Per prima cosa scriveremo quindi il codice per interrogare la geometria generata riguardo la distanza del posto a sedere più lontano dal centro del campo. In secondo luogo calcoleremo l'area totale dei posti a sedere nella tribuna generata ed infine valuteremo la qualità visiva sulla base di una formula fornita da un manuale per la progettazione. Il nodo terminale di tutti questi tre elementi deve essere un nodo "watch" con un risultato numerico.

Questi nodi andranno impostati su "output", affinché possano essere letti dal pacchetto Refinery e dai suoi algoritmi risolutori. La funzione principale di ogni valutatore è infatti proprio quella di tradurre in termini numerici le proprietà di dati e geometrie, in modo che non solo un essere umano, ma soprattutto una macchina, siano in grado di interpretarli.

.... CONTINUA LA LETTURA NEL PDF ALLEGATO


  1. TAGS
  2. BIM