Perché la giraffa ha il collo lungo? Come la natura ha inventato l’ottimizzazione

Un impianto di cottura con quattro setpoint e nessuna risposta ovvia

Un impianto di cottura ha tre fasi — impasto, essiccazione, cottura in forno — e quattro setpoint regolabili. L’obiettivo è minimizzare il consumo energetico mantenendo la qualità del prodotto entro determinate specifiche. Ogni fase ha vincoli propri: il forno non supera i 550°C, l’essiccatore non tollera accensioni e spegnimenti ravvicinati, l’impastatrice richiede un ciclo completo di due ore una volta avviata.

Con quattro variabili interdipendenti e vincoli che si intrecciano, non esiste una formula chiusa che restituisca la combinazione ottimale. Serve un metodo che esplori sistematicamente lo spazio delle soluzioni possibili — ed è esattamente il problema che la selezione naturale risolve da centinaia di milioni di anni, senza saperlo.

Perchè le giraffe?

Per molto tempo si è dato per scontato che il collo lungo della giraffa fosse un adattamento per raggiungere le foglie più alte. Una ricerca pubblicata su Science nel 2022 su un antenato fossile della giraffa, dotato di una corazza cranica e di articolazioni cervicali particolarmente complesse, ha riportato in discussione l’ipotesi della selezione sessuale legata al combattimento tra maschi: il collo lungo avrebbe garantito un vantaggio nelle lotte per l’accoppiamento, non (solo) nella ricerca di cibo. L’ipotesi resta dibattuta — altri studi, incluso uno più recente su giraffe attuali dell’Università Penn State, non trovano supporto conclusivo e rilanciano l’ipotesi alimentare. La scienza qui non ha ancora una risposta definitiva, e non serve averla per il punto che ci interessa.

Il punto è il meccanismo: generazione dopo generazione, gli individui con la caratteristica più favorevole (qualunque essa sia) si riproducono di più, trasmettono quella caratteristica, e la popolazione converge verso l’estremo di quella caratteristica — con mutazioni casuali che continuano a esplorare varianti nuove. Questo meccanismo — selezione, riproduzione, mutazione, ripeti — è esattamente ciò che un algoritmo genetico replica per risolvere problemi di ottimizzazione con molte variabili interdipendenti.

Modello di apprendimento per rinforzo che in base ad un algoritmo genetico insegna ad un dinosauro a camminare. Gen1 we feel you. Fonte: Towards data science

L’algoritmo genetico

Per usare il meccanismo evolutivo su un problema di ottimizzazione, servono quattro elementi:

I geni. Ogni variabile da ottimizzare — nel nostro caso, ognuno dei quattro setpoint — diventa un gene. La combinazione di tutti i geni definisce un individuo: una possibile regolazione completa dell’impianto.

La popolazione e le generazioni. Un insieme di individui (combinazioni di setpoint) forma una popolazione. Ogni ciclo dell’algoritmo genera una nuova generazione, a partire dagli individui della popolazione precedente.

La fitness. È l’indicatore che misura quanto un individuo è “buono” rispetto all’obiettivo — nel nostro caso, il costo energetico e di scarto associato a quella combinazione di setpoint. Più bassa la fitness (se l’obiettivo è minimizzare), più probabilità ha quell’individuo di “riprodursi” nella generazione successiva. Per valutare questa metrica in base alla combinazione di setpoint serve qualche tipo di modello predittivo – statistico o simbolico.

La mutazione. Per evitare che l’algoritmo si areni sulle prime combinazioni trovate, ogni nuova generazione introduce variazioni casuali sui geni — esplorando combinazioni che nessun individuo della generazione precedente aveva ancora testato.

Parents, offsprings, mutation. Fonte

Il ciclo si ripete: generazione dopo generazione, le combinazioni con fitness migliore prevalgono, mentre le mutazioni continuano a introdurre varietà. Il processo si ferma quando la fitness smette di migliorare in modo significativo — segno che l’algoritmo ha trovato convergenza verso un minimo (o massimo).

Un algoritmo genetico che ottimizza il design di device per la nano elettronica. Fonte

L’algoritmo genetico applicato all’impianto di cottura

Come funziona: si definisce una funzione obiettivo (consumo di gas di forno ed essiccatore, consumo elettrico dell’impastatrice, valore dello scarto prodotto) e un modello di simulazione data-driven che stima questi valori a partire dai quattro setpoint e dalle condizioni al contorno (piano di produzione, ricetta, previsioni meteo). L’algoritmo genetico esplora le combinazioni di setpoint rispettando i vincoli di impianto, selezionando a ogni generazione le combinazioni con fitness migliore.

Settori: processi batch o semi-continui con più variabili regolabili e vincoli espliciti — food & beverage, chimica, gomma, cottura industriale.

Requisiti: un modello di simulazione sufficientemente accurato del processo (senza modello non c’è fitness da valutare), i vincoli di impianto esplicitati in modo formale, dati storici per calibrare il modello di simulazione.

Complessità: medio-alta. Il collo di bottiglia non è quasi mai l’algoritmo genetico in sé, ma la qualità del modello di simulazione su cui si basa.

Quando ha senso e quando no

L’algoritmo genetico non è l’unico modo per ottimizzare un processo, e non è sempre il più adatto:

  • Rispetto a metodi più semplici (steepest descent, hill climbing), l’algoritmo genetico esplora lo spazio delle soluzioni in modo più ampio e ha meno probabilità di fermarsi su un ottimo locale invece che globale — ma richiede molte più valutazioni della funzione obiettivo, quindi è più lento e computazionalmente costoso.
  • Se il problema ha poche variabili e la funzione obiettivo è semplice (senza troppi minimi locali), metodi di ottimizzazione meno complessi arrivano alla stessa soluzione più velocemente.
  • Il vero vincolo è quasi sempre il modello di simulazione, non l’algoritmo: se il modello non rappresenta bene il processo reale, l’algoritmo troverà un ottimo… del modello, non dell’impianto.
  • Non c’è garanzia assoluta di ottimo globale in tempo finito: l’algoritmo genetico riduce il rischio di ottimi locali rispetto ai metodi più semplici, ma resta un metodo euristico, non una dimostrazione matematica.

Nel deep learning, lo stesso principio si usa spesso per l’ottimizzazione di iperparametri, quando lo spazio di ricerca è ampio e non esistono derivate utilizzabili per metodi più diretti.

Il takeaway

  • Un algoritmo genetico è utile quando ci sono più variabili interdipendenti, vincoli espliciti, e nessuna formula chiusa per trovare la combinazione ottimale.
  • Il pezzo che richiede più lavoro non è l’algoritmo, ma il modello di simulazione su cui si valuta la fitness — costruirlo bene richiede dati storici completi e conoscenza ingegneristica del processo.
  • Prima di adottarlo, vale la pena chiedersi se un metodo di ottimizzazione più semplice non risolva già il problema più velocemente: l’algoritmo genetico è una soluzione potente, non quella di default.
  • Come per gli altri strumenti di ottimizzazione di processo, il risultato è un suggerimento da validare con il giudizio ingegneristico — non una regolazione da applicare alla cieca.

Articoli simili