La progettazione generativa rappresenta attualmente una delle innovazioni più radicali e potenzialmente promettenti in ambito ingegneristico.
di Giorgio De Pasquale1 ed Elena Perotti2
1 Smart Structures and Systems Lab, Dip. di Ingegneria Meccanica e Aerospaziale, Politecnico di Torino.
2 Senior data analyst.
L’approccio promosso dalla progettazione generativa sfrutta l’azione di alcuni opportuni algoritmi per esplorare una vasta gamma di soluzioni progettuali, ottimizzando al meglio le possibili varianti e i parametri in gioco. Per esempio, la geometria di un componente può essere ricercata esplorando molteplici varianti e calcolandone le proprietà in ogni singolo caso, per poi scegliere il migliore. Si tratta di un approccio evidentemente possibile solo grazie all’automazione del calcolo e in passato non percorribile. Ovviamente, in ambiti molto specialistici dove il livello di ottimizzazione è già molto spinto, questo approccio può portare a soluzioni finora inesplorate e a superare le limitazioni della progettazione tradizionale.
Descrivendo più nel dettaglio, la progettazione generativa è un processo di tipo ricorsivo, o iterativo, che utilizza algoritmi di calcolo al fine di generare una molteplicità di soluzioni progettuali, le quali sono tutte basate sullo stesso insieme di vincoli e di obiettivi definiti dall’utente. Quindi, a differenza dei metodi tradizionali, dove il progettista sviluppa una singola soluzione, o un sottogruppo di soluzioni, attraverso un processo lineare, la progettazione generativa esplora automaticamente tutte le possibili varianti entro i confini imposti. Si tratta di un approccio che può consentire di identificare configurazioni ottimali alle quali non era possibile pervenire perché, ad esempio, esterne ai canoni tradizionali o inesplorate.
Tipologie di algoritmi e loro principi fondamentali
Principi fondamentali della progettazione generativa
Dal punto di vista operativo, i principi fondamentali con cui operano gli algoritmi di progettazione generativa sono i seguenti.
1. Automazione del processo creativo: gli algoritmi, se così si può dire, automatizzano la fase creativa della progettazione attraverso la esplorazione rapida di moltissime alternative di design. Non si parla quindi di creatività in senso stretto, tipica degli esseri umani, ma piuttosto di una sorta di mappatura forzata e capillare di tutto il dominio oggetto di analisi.
2. Ottimizzazione multi-obiettivo: grazie a questa funzionalità, gli algoritmi possono ottimizzare simultaneamente diversi parametri, seguendo le specifiche imposte dall’utente e fornendo la soluzione finale con un approccio “olisitico”. Ad esempio, si può ricercare il progetto migliore che rispetti al contempo vincoli di peso, resistenza strutturale, rigidezza (ingegneristici) e magari di produzione e impatto ambientale (produttivi e gestionali).
3. Iterazione e feedback continuo: il processo generativo è di tipo ricorsivo e si basa pertanto su feedback continui che servono all’algoritmo per affinare progressivamente le soluzioni proposte. Inoltre, l’algoritmo può essere “addestrato” affinché riceva dall’esterno una valutazione sulla bontà delle soluzioni proposte e assegni un punteggio (premiante o penalizzante) ai vari progetti. Queste valutazioni saranno utilizzate nelle analisi future per produrre proposte progettuali più vicine alle aspettative dell’utente.
Algoritmi principali nella progettazione generativa
La progettazione generativa dispone di svariati strumenti logici e matematici, oltre che diverse tecniche, per produrre soluzioni progettuali ottimizzate. I principali tipi di algoritmi utilizzati sono qui elencati.
1. Algoritmi Genetici: Il loro funzionamento è ispirato al processo evolutivo naturale, in quanto questi algoritmi creano una “popolazione” iniziale di soluzioni candidate (dette appunto “cromosomi”), le quali sono sottoposte ad un processo di evoluzione progressiva e selezione (ispirata alla “selezione naturale”). Questo processo evolutivo avviene grazie a processi di logica matematica con cui si combinano fra loro alcune caratteristiche delle soluzioni della generazione precedente (crossover) e si introducono caratteristiche nuove casuali (mutazioni). Ai nuovi individui viene assegnato un punteggio premiante o penalizzante, che consente loro di evolvere ulteriormente oppure di scomparire nella generazione seguente. Si stanno sperimentando algoritmi genetici ad esempio per ottimizzare parametri di forma di componenti strutturali, per ottimizzare l’orientamento dei componenti nella produzione additiva, e in altre applicazioni complesse.
2. Algoritmi basati su reti neurali: Questi algoritmi utilizzano reti neurali artificiali che consentono loro di apprendere informazioni da dati storici o da simulazioni precedenti e di generare nuove soluzioni progettuali basandosi su modelli complessi di correlazione e di pattern. Sono particolarmente efficaci ad esempio per predire prestazioni strutturali o fluidodinamiche in base a input variabili, come carichi esterni o geometria.
3. Algoritmi di ottimizzazione topologica: Si tratta di funzioni che ottimizzano la distribuzione del materiale in una data regione per migliorare le prestazioni del componente, dal punto di vista della resistenza strutturale, della distribuzione delle tensioni, della rigidezza, della massa, e di altri possibili vincoli di progetto (o funzioni obiettivo). Si parte da un volume iniziale definito dall’utente, dai punti di vincolo e di applicazione dei carichi, in cui il materiale non può essere rimosso e dalle specifiche di sollecitazione. Il materiale sottoutilizzato viene progressivamente rimosso, uniformando le sollecitazioni nel restante volume. Questi algoritmi, noti da molti decenni, ha subito un recente ritorno di fiamma grazie alla produzione additiva, che grazie a loro consente di realizzare parti leggere e resistenti.
4. Algoritmi di machine learning (o di apprendimento automatico): Questi algoritmi analizzano inizialmente una grande mole di dati e sono programmati per identificare al loro interno per “pattern” o delle ripetibilità nascoste non identificabili con tecniche tradizionali. Più è ampio il dataset iniziale, più sarà robusto il risultato prodotto. Grazie a questo funzionamento, possono essere utilizzati per individuare o prevedere prestazioni operative di un sistema (un impianto, oppure un test di laboratorio) o per ottimizzare un progetto in base a dati storici. Esistono quindi potenzialmente molte applicazioni, dal riconoscimento di fenomeni di guasto, alla previsione del comportamento strutturale e altri.
5. Algoritmi di ottimizzazione parametrica: In questo caso, l’algoritmo agisce modificando alcuni parametri del progetto predefiniti dall’utente, esplorando tutte le possibili loro varianti all’interno di un range e studiando i risultati ottenuti con tutte le possibili combinazioni. Sono algoritmi utili per ottimizzare forme, dimensioni e configurazioni di componenti in base a criteri prestabiliti, ad esempio un certo tempo massimo di produzione, oppure un costo massimo del materiale, o simili.
6. Algoritmi evolutivi: Sono simili agli algoritmi genetici, ma hanno caratteristiche più generali riguardo al loro approccio “evolutivo”. Non si limitano ad una selezione basata su punteggio di premio o penalità, ma possono includere strategie di evoluzione differenziale, evoluzione grammaticale e altre strategie evolutive più elaborate. Siccome sono più complessi degli algoritmi genetici, possono essere applicati in ambiti svariati, che esulano dalla sola progettazione, ma in questo ambito sono impiegabili ad esempio per ottimizzare problemi multi-obiettivo, dove è necessario bilanciare più criteri di progettazione contemporaneamente.
In sintesi
Quella riportata è una suddivisione concettuale, ma non rigida dal punto di vista applicativo. Infatti, ogni algoritmo possiede punti di forza e punti deboli e nelle applicazioni è possibile che vengano combinati o utilizzati in sinergia, in base alle esigenze specifiche del problema in questione. In ogni caso, mediante questi algoritmi è possibile sfruttare la progettazione generativa nei problemi di ingegneria, migliorando le prestazioni, riducendo costi e promuovendo l’innovazione tecnologica.
Nel seguito dell’articolo, analizziamo due famiglie di algoritmi fra le più utilizzate, gli algoritmi genetici e le reti neurali.
Progettare una trave con un algoritmo genetico

Per esemplificare l’utilizzo di un algoritmo genetico per la progettazione meccanica, possiamo riferirci alla sequenza di passaggi qui elencati, nel caso di scuola della ottimizzazione di una trave sottoposta a carichi e vincoli strutturali. Immaginiamo di voler ottenere una geometria ottimale della nostra trave, noti i carichi a cui è sottoposta, minimizzandone la massa ma mantenendo il livello prestabilito di resistenza strutturale.
1. Codifica della Soluzione. Scegliamo una formulazione per rappresentare ogni soluzione (detta “cromosoma”) che sarà individuata dall’algoritmo nei successivi calcoli. Questa formulazione potrebbe essere ad esempio un vettore che contiene tutte le variabili del progetto. Nel caso della trave quindi il vettore conterrà i dati della sua geometria, per esempio la larghezza e l’altezza della sezione trasversale, la lunghezza assiale e altri dati in caso di forme più complesse.
2. Generazione iniziale della popolazione. Inizialmente, una popolazione di soluzioni (cromosomi) viene generata casualmente oppure utilizzando un metodo di campionamento intelligente. Ogni individuo di questa popolazione iniziale rappresenta una possibile geometria della trave.
3. Valutazione della “fitness”. A questo punto inizia il processo di selezione degli individui appartenenti alla popolazione: ognuno di essi viene valutato sulla base di metriche di prestazione che l’utente ha definito e ad ognuno viene attribuito un punteggio. Nel nostro esempio, le metriche di fitness dell’individuo potrebbero essere il peso totale della trave e la massima tensione raggiunta nel suo materiale, entrambe ovviamente conseguenza della forma che l’algoritmo ha assegnato alla struttura.
4. Selezione dei genitori. Ora, gli individui migliori, ovvero quelli che hanno ottenuto punteggi di fitness più alti vengono selezionati come genitori per la successiva generazione di individui. Per ciascun individuo quindi, la probabilità di essere selezionato dipende dal proprio punteggio di fitness relativo.
5. Crossover. I genitori selezionati vengono combinati tra loro attraverso operazioni di crossover per produrre nuove soluzioni (che, nella similitudine darwiniana, possiamo definire i “figli”). Nel nostro esempio, il crossover si potrebbe realizzare combinando i geni (le variabili di progetto della trave) di diversi genitori per ottenere figli aventi variabili di progetto diverse da quelle dei genitori, e appunto frutto di un loro scambio e rimescolamento.
6. Mutazioni. Nella nuova generazione in via di creazione, una piccola percentuale di figli (ovvero di nuove soluzioni) viene prodotta introducendo alterazioni casuali al set di geni (variabili di progetto), dette appunto “mutazioni”. Questa operazione, come del resto avviene nell’evoluzione naturale, consente di esplorare nuove aree nello spazio delle soluzioni e ad evitare la convergenza prematura verso soluzioni ottimizzate solamente entro una sacca evoluzionistica, ma non ottime in senso assoluto. Per il problema che stiamo descrivendo, le mutazioni potrebbero essere introdotte per modificare casualmente i valori delle variabili (ad esempio, la larghezza e l’altezza della trave).
7. Sostituzione della popolazione. La nuova generazione di soluzioni (figli) sostituisce la popolazione precedente. Il processo fino a qui descritto viene ripetuto per un numero predeterminato di generazioni, oppure fino a quando non si raggiunge una determinata specifica di convergenza. Per esempio si potrebbe assegnare un obiettivo di convergenza della fitness della popolazione, raggiunto il quale si può assumere di aver trovato la soluzione ottimale.
8. Convergenza e ottimizzazione. Con il susseguirsi delle generazioni, l’algoritmo genetico converge verso soluzioni che rappresentano geometrie ottimali della trave rispetto ai criteri di prestazione definiti. Nel nostro esempio, come avevamo imposto all’inizio, l’ottimizzazione termina quando si raggiunge un compromesso tra massa e prestazioni strutturali. Il successo della progettazione mediante algoritmi genetici sta nella definizione efficace dei parametri di fitness e dei criteri di convergenza. Se l’utente non è in grado di definire in modo efficace il criterio secondo cui un individuo viene premiato o penalizzato nel tramandare i propri geni, la convergenza sarà molto lenta o potrebbe non verificarsi affatto.
Una rappresentazione grafica del processo di ottimizzazione topologica di una trave è riportato in Fig. 1, in cui si osserva che al procedere delle iterazioni, la massa della trave viene ottimizzata a parità di resistenza strutturale. Il processo specifico relativo agli algoritmi genetici può essere sintetizzato nello schema di Figura 2.
2_flusso
Figura 2. Schema a blocchi relativo al funzionamento di un algoritmo genetico per la progettazione meccanica.
In conclusione, gli algoritmi genetici offrono un approccio potente ed efficiente per ottimizzare un progetto in ambito strutturale, consentendo di esplorare un ampio spettro di soluzioni e di raggiungere soluzioni ottimali che bilanciano prestazioni e altri parametri, come costi, tempi, etc. Questi algoritmi sono particolarmente utili in contesti dove la complessità delle interazioni tra le variabili di progetto rende difficile una soluzione analitica diretta, consentendo di superare i limiti dell’approccio tradizionale alla progettazione.
Dimensionare una molla mediante rete neurale
La rete neurale artificiale (ANN, Artificial Neural Network) è uno strumento computazionale che simula la struttura del nostro cervello, nel senso che è composto da un gran numero di unità indipendenti collegate tra loro (come avviene appunto con le sinapsi tra i neuroni), come si vede dallo schema di Figura 3. Ciò che rende efficace la rete è la capacità di “direzionare” gli stimoli al suo interno grazie a operazioni di attivazione e di attenuazione fra i collegamenti. In presenza di uno stimolo (input), questo viene trasmesso dalla unità che lo riceve ad alcune unità che seguono e attenuato verso altre, in modo da generare “percorsi” di informazione. Queste operazioni sono svolte, nelle reti neurali, da opportuni algoritmi che definiscono i criteri (o “pesi”) di trasmissione o attenuazione dei collegamenti, in modo da produrre un certo output in presenza di un determinato input.

Addestrare una rete neurale
È molto importante, nelle applicazioni di progettazione ingegneristica, il processo di “addestramento” della rete, con il quale si insegna alla rete stessa ad operare nel modo corretto per così dire. Si parla in questi casi di “reti supervisionate”: alla rete viene impartito un dato input e osservato l’output generato. Per un certo numero iniziale di esercizi, l’utente confronta questo output generato dalla rete con quello desiderato (perché ad esempio già noto da calcoli precedenti, oppure perché misurato sperimentalmente per casi particolari). A questo punto, la rete aggiorna e assegna nuovi “pesi” ai suoi collegamenti interni fino a ricalcare gli output corretti. Se l’addestramento è sufficientemente robusto ed esteso, la rete sarà in grado di produrre output coerenti anche a fronte di input che non erano stati mai presentati prima.
Con queste premesse, le reti neurali sono potenzialmente le uniche in grado di eseguire certe operazioni di intelligenza artificiale ovvero di rispondere in modo coerente a input non codificati in precedenza. Questo aspetto è fondamentale per applicazioni correlate al mondo reale (quello in cui opera l’ingegneria notoriamente), il quale è affetto da disturbi, rumore, variabili impreviste e fenomeni troppo complessi per essere imbrigliati in equazioni in forma chiusa. Esempi sono il riconoscimento di segnali, la correlazione di fenomeni di guasto da misure indirette, e molte altre.
Il rovescio della medaglia, che non piace di solito ai progettisti meccanici, è che la rete neurale si presenta come una “scatola nera”, di cui è molto difficile comprendere il funzionamento interno. L’unica forma di garanzia della soluzione finale è la bontà dell’addestramento iniziale e della successiva validazione (una operazione svolta chiedendo alla rete di generare output già noti all’utente, ma mai somministrati nell’addestramento).
Applicazione pratica: molla ottimizzata
Vediamo un esempio molto semplice di utilizzo di rete neurale per ottimizzare un componente. Per semplicità, consideriamo una molla ad elica classica, di cui ovviamente è nota la legge che ne definisce la costante elastica (rigidezza) rispetto ai parametri geometrici. E’ ovvio che l’ottimizzazione, in casi come questo, non richieda l’intelligenza artificiale, proprio perché si conosce la seguente equazione (oltretutto in forma chiusa) con cui dimensionare direttamente il componente:
in cui G è il modulo di elasticità tangenziale, d è il diametro del filo, D è il diametro della molla ed N è il numero di spire attive.
Supponiamo però, come avviene purtroppo in molti altri problemi, che non sia nota la legge della costante elastica della molla. Nei problemi complessi infatti, dobbiamo gestire input non codificati e quindi non gestibili mediante equazioni semplici. Pensiamo, ad esempio, alla profondità di propagazione di una cricca di fatica in funzione della vibrazione misurata su un albero, oppure al grado di usura di una ruota dentata in funzione del rumore percepito da una sonda acustica dietro un pannello di spessore incognito, etc. Questi output possono essere solo misurati sperimentalmente oppure simulati mediante complessi modelli software. E’ quindi molto difficile effettuare ottimizzazioni di progetto, a meno di eseguire decine di prove sperimentali o eseguire molte simulazioni lunghe e complicate.
Il procedimento di ottimizzazione generativa
Per affrontare il problema della nostra molla, proponiamo di usare un’ottimizzazione basata su intelligenza artificiale implementata in una rete neurale, seguendo questi passaggi:
- Raccolta dati: Si crea un dataset contenente diversi casi di molle con differenti materiali e parametri geometrici, ciascuna abbinata alla sua costante elastica (misurata o simulata, ma non calcolata con formule esistenti).
- Pre-processing dei dati: I dati vengono normalizzati per uniformarli e migliorare l’efficienza dell’addestramento della rete neurale.
- Creazione della rete neurale: Si definisce un modello di rete che preveda la costante elastica di una molla solo in base ai parametri di progetto forniti in input.
- Addestramento della rete neurale: La rete apprende che a determinati input di geometria e materiale corrisponde un certo output di costante elastica. Il dataset viene somministrato per addestrare la rete a produrre gli output misurati sul campo o simulati.
- Validazione della rete neurale: Si validano le prestazioni della rete con dati di input a cui corrisponde un output già noto, ma non utilizzato in fase di addestramento, verificando casi reali non visti prima.
- Utilizzo della rete per nuovi progetti: Una volta addestrata e validata, la rete può esplorare nuove configurazioni di progetto, fornendo un set di dati specifici (G, d, D, N) per calcolare la costante elastica, senza usare l’equazione della molla, ma solo i dati delle molle reali.
6. Utilizzo della rete per nuovi progetti e/o ottimizzazioni. A questo punto, la rete neurale addestrata e validata può essere usata per esplorare nuove configurazioni di progetto. Si può sfruttare la rete neurale in modi diversi: per esempio fornendo un set specifico di dati di progetto (G, d, D, N) e chiedendo il calcolo della costante elastica (ricordiamoci che non stiamo utilizzando l’equazione della molla, ma solo un campione di dati di partenza di molle reali).
Le molteplici alternative di progettazione
Un’applicazione ancora più interessante, è di chiedere alla rete neurale di esplorare tutte le possibili molle costruibili entro un range dei parametri di progetto (Gmin-Gmax, dmin-dmax, Dmin-Dmax, Nmin-Nmax), in modo da ottenere un valore di ktarget predeterminato e avere la minore massa possibile.
Si può osservare che la rete è in grado di generare soluzioni di progetto che effettivamente rispettano la fisica del problema, senza conoscerne le leggi ma utilizzando pattern nascosti nei dati dell’addestramento di partenza. Come avviene questo passaggio nel caso nella molla? Ci sono varie strategie possibili, una è quella di assegnare un “peso” ad ogni variante di molla generata dalla rete neurale basato sull’esito di un metodo di ottimizzazione, come ad esempio il metodo di Lagrange. In questo caso, la funzione di Lagrange utilizzabile può avere la forma seguente:

in cui:
è la funzione di Lagrange,
è la massa della molla, λ è il moltiplicatore di Lagrange, Ktarget è la costante elastica richiesta e Kpred è la costante elastica prevista dalla rete neurale.
A questo punto, si procede calcolando e imponendo pari a zero le derivate parziali della funzione di Lagrange rispetto a ciascuna variabile (d, D, N, λ)

Si risolve quindi questo sistema di equazioni per trovare i valori ottimali delle variabili di progetto (d, D, N, λ), operazione che può essere svolta numericamente utilizzando un algoritmo di ottimizzazione.
Senza l’uso di una rete neurale, questi calcoli non sono affatto banali, come abbiamo visto anche nel caso in cui possiamo disporre di una equazione che descrive il comportamento del nostro componente. Il calcolo di ottimizzazione diventa improponibile se questa equazione non esiste, come per componenti o problemi complessi, nei quali si applicano in modo proficuo appunto le reti neurali.
Il futuro della progettazione generativa
In conclusione, la progettazione generativa rappresenta una potente metodologia che sta trasformando il panorama della progettazione, anche nell’ambito dell’ingegneria. Con i suoi benefici in termini di ottimizzazione delle prestazioni, riduzione dei costi e stimolo all’innovazione, queste strategie offrono opportunità straordinarie per creare prodotti più avanzati e sostenibili. Affrontare le sfide attuali e promuovere un’adozione diffusa e responsabile saranno le chiavi per sfruttare appieno il potenziale della progettazione generativa come supporto al progettista e sotto la sua supervisione, ovviamente non intendendo la progettazione generativa come strategia autonoma e sostitutiva dell’ingegnere.