Ottimizzazione latente
L’ottimizzazione latente è un paradigma di ottimizzazione introdotto da Lokad che mira a risolvere problemi combinatori difficili e complessi. Gestisce anche problemi stocastici, che si manifestano ogni volta che l’incertezza è presente. L’ottimizzazione latente rappresenta una svolta per sfide come l’allocazione programmata delle risorse. A differenza dei risolutori classici, che operano nello spazio delle soluzioni, l’ottimizzazione latente opera nello spazio della strategia. Questo approccio consente una riottimizzazione rapida man mano che le condizioni evolvono.

Panoramica tecnologica
L’ottimizzazione latente, introdotta nel 2024, rappresenta la seconda generazione di tecnologie di ottimizzazione general purpose sviluppate da Lokad. Essa affronta problemi combinatori più difficili di quelli trattati da stochastic discrete descent, sebbene presenti un livello di scalabilità leggermente ridotto.
Concettualmente, i Supply Chain Scientists di Lokad progettano una pipeline di elaborazione dei dati che comprende i seguenti passaggi:
- Preparare i dati storici.
- Generare previsioni probabilistiche.
- Produrre una strategia decisionale robusta.
- Riottimizzare all’ultimo minuto, in condizioni modificate.
I dati storici vengono preparati utilizzando le capacità generali di ingegneria dei dati di Envision; Envision è il linguaggio specifico di dominio di Lokad. Successivamente, le previsioni probabilistiche vengono prodotte utilizzando la programmazione differenziabile, un paradigma ideale per la modellazione probabilistica e trattato come un cittadino di prima classe in Envision.
Successivamente, l’ottimizzazione latente viene utilizzata per generare una strategia decisionale. In sostanza, il risultato dell’ottimizzazione latente è un risolutore specializzato, strettamente adattato al problema specifico. Infine, questa strategia può essere eseguita — e, se necessario, rieseguita — nelle condizioni finali, leggermente variabili, per produrre le decisioni richieste. Poiché la strategia viene eseguita rapidamente, può essere utilizzata in modo interattivo dalle persone coinvolte.
Tutti e quattro i passaggi—(1), (2), (3) e (4)—vengono eseguiti all’interno di Envision.
Limiti dei risolutori tradizionali
L’ottimizzazione matematica è un settore maturo dell’informatica. Una vasta gamma di risolutori—sia proprietari che open-source—è disponibile sul mercato. Sfortunatamente, nessuna di queste tecnologie esistenti soddisfa i nostri requisiti, in particolare quando si tratta di problemi di pianificazione stringenti.
Gli algoritmi branch-and-bound (e tutte le loro varianti) si basano sulla partizione della regione ammissibile in sottoproblemi più piccoli (branching) e sull’utilizzo di rilassamenti (bounding) per eliminare ampie sezioni dello spazio di ricerca. Questo approccio funziona male per i problemi della supply chain perché risultano troppo aperti. Pur essendo lo spazio delle soluzioni strettamente vincolato, esso rimane comunque enorme. Solemente soddisfare i vincoli è tutt’altro che sufficiente per produrre una buona soluzione, il che mina il presupposto fondamentale della partizione.
Gli algoritmi di ricerca locale (e tutte le loro varianti) ruotano attorno all’iterazione su una o più soluzioni attuali, esaminando varianti nelle vicinanze. Purtroppo, questo metodo funziona anch’esso male perché il concetto di “località” non è ben definito in questi problemi. Dato quanto siano strettamente vincolati questi scenari, la maggior parte degli aggiustamenti locali a una soluzione viola così tanti vincoli che il processo di ricerca non riesce a trovare una soluzione migliorata.
Da Lokad, abbiamo fissato un obiettivo di scalabilità di qualche milione di variabili per problemi combinatori difficili, insieme alla capacità di riottimizzare in pochi secondi quando le condizioni cambiano—anche se tali cambiamenti invalidano completamente la soluzione originale a causa di effetti a catena.
Dietro le quinte
Lokad utilizza un approccio non convenzionale all’ottimizzazione combinatoria. Invece di offrire un solutore standard, affrontiamo il problema attraverso un paradigma di programmazione specializzato chiamato ottimizzazione latente. Questo metodo è fondamentale per integrare le intuizioni e l’expertise dei nostri Supply Chain Scientists.
L’ottimizzazione latente introduce una rappresentazione alternativa del problema originale. Questa rappresentazione alternativa è una parametrizzazione ad alta dimensionalità di un semplice solutore, adattato al problema in esame. Tali parametri vengono poi appresi applicando iterativamente il solutore parametrizzato sul problema originale (che in molti casi include varianti stocastiche). Alla base, l’ottimizzazione latente è un processo di apprendimento.
Il risultato dell’ottimizzazione latente è un solutore semplice, ben parametrizzato, in grado di produrre soluzioni di alta qualità sia per il problema originale che per le sue varianti.
Esempio: Pianificazione di un sito di produzione aeronautica
Considera un produttore aeronautico e uno dei suoi siti produttivi. Questo sito assembla un componente critico per gli aeromobili. L’obiettivo complessivo è massimizzare la produttività del sito dato le risorse disponibili (persone e asset industriali).
Questo processo di assemblaggio prevede circa 100 operazioni distinte. Esistono anche circa 20 slot disponibili per eseguire queste operazioni, ciascuno con attributi differenti. Alcune operazioni possono essere eseguite solo in slot specifici. Un complesso grafo di dipendenze collega le operazioni, ma a differenza di una linea di produzione automobilistica, questo grafo non forma una sequenza lineare; vi è una notevole flessibilità nell’ordinamento finale delle attività.
Inoltre, alcune operazioni richiedono attrezzature specifiche, che sono presenti in quantità limitate nel sito. Molte operazioni dipendono anche dalla disponibilità dell’inventario necessario; a volte parti essenziali subiscono dei ritardi. Le operazioni variano in base al numero di persone che possono lavorarci simultaneamente per accelerarne il completamento, da 1 fino a un massimo di 5 individui.
Un organico di circa 100 tecnici gestisce il sito in turni da 20 a 30 persone. Ogni tecnico possiede uno dei tre livelli di qualificazione per ogni operazione. Il livello più alto consente al tecnico di eseguire un’operazione e verificare il lavoro svolto da altri. Il livello intermedio permette al tecnico di eseguire e auto-verificare il proprio lavoro. Il livello più basso consente al tecnico di eseguire un’operazione, ma richiede la verifica da parte di un collega con la qualificazione più alta.
La direzione del sito produttivo richiede un programma di lavoro minuto per minuto per le prossime settimane, specificando esattamente quale tecnico lavorerà su ogni operazione per ciascun componente (con ogni componente identificato singolarmente tramite numero di serie). Questo livello di dettaglio è essenziale per garantire la fiducia nella solidità del programma.
Tuttavia, le condizioni possono evolvere all’inizio di ogni turno. Un dipendente potrebbe essere assente a causa di malattia, oppure un componente potrebbe subire ritardi e quindi non essere disponibile. Se questi problemi non vengono prontamente risolti, si trasformano rapidamente in una serie di inefficienze, lasciando tecnici e asset inattivi mentre le problematiche vengono risolte.
Con l’ottimizzazione latente, la direzione del sito può produrre un programma dettagliato che comprende decine di migliaia di attività per le prossime settimane. Inoltre, è possibile rieseguire lo strumento all’ultimo momento per tenere conto di cambiamenti imprevisti. Inoltre, la soluzione appena generata non è una ristrutturazione casuale e massiccia del piano originale, ma un programma che somiglia molto alla versione iniziale, richiedendo solo lievi aggiustamenti per adattarsi alle condizioni più recenti.