mojtaba/amini
Home/Articoli/Graph Neural Networks
Nov 2025·9 min di lettura·Graph Neural Networks

Una GNN che ha imparato la nostra distinta base

Come abbiamo codificato i componenti dei montascale come grafo e usato il message-passing per prevedere tempo di processo e data di consegna in meno di dieci minuti.

Una distinta base non è una lista. È un albero con sotto-alberi condivisi: lo stesso motore vive in due configurazioni di guida diverse, la stessa batteria alimenta tre varianti di controller. Trattare la BOM come una lista piatta di codici butta via la struttura che conta di più per la stima di costo e tempo.

In Extrema, il commerciale produceva preventivi a mano usando uno spreadsheet ereditato. Un preventivo durava due giorni e sbagliava la data di consegna abbastanza spesso da far perdere fiducia ai clienti. La forma del problema gridava "grafo". Ogni componente diventa un nodo tipizzato; ogni arco è di assemblaggio, dipendenza o intercambiabilità.

Abbiamo usato GraphSAGE come encoder — tre livelli di message-passing, mean aggregation, connessioni residue. L'encoder produceva un embedding 64-dim che alimentava due MLP: una per il tempo di assemblaggio, una per il costo totale. Training su tre anni di preventivi completati, circa 4.200 grafi.

Il primo modello si addestrava in una serata ed era accurato all'80% entro ±15% — inutile per una data di consegna. Il soffitto di accuratezza non era l'architettura. Era il dato. Lo stesso motore appariva sotto undici part number diversi, accumulati in un decennio. Il modello non generalizzava.

Due mesi di pulizia dati, un dizionario canonico, fuzzy-match contro i codici storici, validazione manuale del magazziniere. L'accuratezza è saltata a ±4% in un singolo retrain. L'architettura non si è mossa di un millimetro.

Lezione: in ambito industriale il soffitto di accuratezza è quasi sempre la qualità del dato. Un CSV pulito con le feature giuste batte una cattedrale di GNN su dati sporchi, ogni volta.