00:00:00 Introduzione all’intervista
00:02:15 Previsione probabilistica e ottimizzazione della Supply Chain
00:04:31 Ottimizzazione stocastica e processo decisionale
00:06:45 Ingredienti per l’ottimizzazione stocastica: variabili, vincoli, funzione di perdita
00:09:00 Prospettive sulla modellizzazione e ottimizzazione
00:11:15 Vincoli e scenari peggiori nell’ottimizzazione
00:13:30 Incertezza, vincoli e soluzioni inadeguate
00:15:45 Ottimizzazione deterministica e scenari variabili
00:18:00 Operazioni MRO e ottimizzazione dell’inventario
00:20:15 Incertezza nei tempi di consegna e nelle parti riparabili
00:22:30 Conseguenze della mancanza di parti e limiti dell’approccio classico
00:24:45 Elementi stocastici e stochasticità umana in supply chain
00:27:00 Riparazione di un motore aeronautico e approvvigionamento delle parti
00:29:15 Ottimizzazione dell’inventario e distinta base probabilistica
00:31:30 Politiche per l’ottimizzazione della Supply Chain e reattività
00:33:45 Problematiche di scalabilità e funzioni convesse in supply chain
00:36:00 Rilassamento del problema e vincoli nei problemi di supply chain
00:38:15 Strumenti di ricerca locale e soluzioni fattibili in supply chain
00:40:30 Algoritmi genetici metaeuristici e sfide di scalabilità
00:42:45 Ottimizzazione matematica come problema di scalabilità
00:45:00 Lo sviluppo da parte di Lokad della tecnologia di ottimizzazione stocastica
00:47:15 Interdipendenze in supply chain e risoluzione dei problemi con il denaro
00:49:30 Vincoli di limite di scaffale ed esempio di inventario di yogurt
00:51:45 Riassumendo l’ottimizzazione stocastica e l’incertezza
00:54:00 Ruolo del solver nell’ottimizzazione della Supply Chain
00:56:15 Chiarire il termine ‘solver’ e il calcolo della decisione finale
00:58:30 Mettere in discussione la soluzione del solver e i potenziali limiti
01:00:45 Punti chiave: l’importanza dell’ottimizzazione stocastica
01:03:00 Ignorare l’incertezza nella Supply Chain e i benefici di un buon solver
01:05:15 Dipendenze e interdipendenze in supply chain non banali
01:07:30 Fine dell’intervista
Sommario
In una discussione tra il CEO di Lokad, Joannes Vermorel, e il Responsabile della Comunicazione, Conor Doherty, viene enfatizzata l’importanza dell’ottimizzazione stocastica e della previsione probabilistica nel supply chain management. Vermorel spiega il concetto di stochasticità, in cui la funzione di perdita è incerta, un fenomeno comune negli scenari di supply chain. Egli delinea i tre ingredienti dell’ottimizzazione matematica: variabili, vincoli e la funzione di perdita, e spiega che nell’ottimizzazione stocastica la funzione di perdita non è deterministica, ma casuale. Vermorel discute inoltre le problematiche di scalabilità delle tecniche di ottimizzazione matematica per supply chain, che rappresentano un ostacolo da quattro decenni. Conclude sottolineando che l’ottimizzazione stocastica è un aspetto cruciale spesso trascurato nei manuali di supply chain.
In una conversazione tra Conor Doherty, Responsabile della Comunicazione di Lokad, e Joannes Vermorel, CEO e fondatore di Lokad, il duo approfondisce le complessità dell’ottimizzazione stocastica e della previsione probabilistica nel supply chain management. Vermorel sottolinea l’importanza di avere un’anticipazione chiara e quantificata del futuro, fondamentale per ottimizzare una supply chain. Introduce il concetto di stochasticità, riferendosi a situazioni in cui la funzione di perdita è incerta o rumorosa, fenomeno comune negli scenari di supply chain.
Vermorel spiega che la funzione di perdita è espressa attraverso economic drivers ed è messa a punto per riflettere i dollari in gioco nell’azienda. Sostiene che, anche con una previsione probabilistica efficace, l’ottimizzazione rimane necessaria a causa delle incertezze intrinseche e delle non linearità del supply chain management. Egli delinea i tre ingredienti dell’ottimizzazione matematica: variabili, vincoli e la funzione di perdita, e spiega che nell’ottimizzazione stocastica la funzione di perdita non è deterministica, ma casuale.
Vermorel approfondisce il concetto di vincoli nell’ottimizzazione matematica, che rappresentano un modo per esprimere soluzioni inaccettabili. Sottolinea che tali vincoli dovrebbero essere in linea con la strategia aziendale, proprio come la funzione di perdita. Nota inoltre che i vincoli non sono matematicamente veri o falsi, ma esistono semplicemente. Ad esempio, una capacità massima di 100 unità non è matematicamente valida, è semplicemente un dato di fatto. Spiega che in un mondo stocastico i vincoli diventano più sottili dal punto di vista matematico e potrebbero non essere sempre applicati a causa della variabilità di fattori come i tempi di consegna.
Nel contesto di un’azienda di Maintenance, Repair, and Overhaul (MRO), Vermorel spiega che l’ottimizzazione dell’inventario è cruciale. La distinta base è probabilistica, e se manca una parte, il componente non può essere riparato. Lokad utilizza previsioni probabilistiche per anticipare l’arrivo dei componenti e le parti necessarie per la riparazione. Le decisioni relative all’acquisto delle parti devono tenere conto delle parti in rientro e dei potenziali tassi di scarto. L’obiettivo è risolvere i problemi legati all’acquisto delle parti.
Vermorel sottolinea la necessità di un approccio di ottimizzazione stocastica che consideri le parti non in isolamento, ma nel loro insieme. Il valore economico nell’acquisire determinate combinazioni di unità può essere notevolmente diverso rispetto all’analisi delle parti singolarmente. Conferma inoltre che la stochasticità della capacità umana di effettuare riparazioni può essere presa in considerazione in questo modello.
Vermorel discute anche le problematiche di scalabilità delle tecniche di ottimizzazione matematica per supply chain, che sono state un ostacolo per quattro decenni. Spiega che i problemi affrontati nella supply chain non sono ben definiti, e che la scalabilità di queste tecniche dipende da quanto margine resta una volta applicati tutti i vincoli. Nota che i solver che adottano tecniche di eliminazione dello spazio delle soluzioni performano male oltre le mille variabili.
Vermorel spiega che Lokad ha dovuto sviluppare una nuova classe di tecnologia per l’ottimizzazione stocastica per affrontare questi problemi su una scala che abbia senso per la supply chain. Concorda con il riassunto di Doherty secondo cui l’ottimizzazione stocastica è un modo più flessibile e reattivo di ottimizzare le decisioni rispetto all’ottimizzazione matematica tradizionale. Menziona inoltre la necessità di un componente software, un solver, per risolvere questi problemi.
Vermorel conferma che il solver genera le decisioni finali proposte da Lokad ai suoi clienti. Spiega che esistono diversi approcci all’ottimizzazione, inclusi gli algoritmi euristici, ma il solver è lo strumento che genera la soluzione a partire dalla previsione. Specifica che ’numerical recipe’ si riferisce alla catena di elaborazione, dalla preparazione dei dati alla generazione del risultato, mentre ‘solver’ indica il calcolo della decisione finale, che prende in input la previsione.
Vermorel conclude sottolineando che l’ottimizzazione stocastica è un aspetto cruciale spesso trascurato nei manuali di supply chain. Critica i player affermati per aver venduto solver per problemi di ottimizzazione deterministica, ignorando l’incertezza intrinseca ai problemi di supply chain. Evidenzia i benefici di un solver stocastico, che permette una visione olistica della supply chain e delle sue interdipendenze.
Trascrizione completa
Conor Doherty: L’ottimizzazione stocastica è lo strumento attraverso il quale decisioni economicamente sostenibili possono essere quantificate e infine ottimizzate. Qui per discutere della sua importanza e, soprattutto, di come funziona, c’è il fondatore di Lokad, Joannes Vermorel. Quindi Joannes, credo che la maggior parte delle persone abbia sentito ripetutamente il termine ottimizzazione in vari contesti e di solito viene usato in combinazione con la previsione probabilistica, perché in fin dei conti questi sono i due strumenti chiave che utilizziamo. Prima di entrare nel dettaglio matematico dell’ottimizzazione stocastica, qual è il riassunto a livello esecutivo di entrambi questi strumenti e perché sono così importanti?
Joannes Vermorel: La previsione probabilistica riguarda fondamentalmente l’avere un’anticipazione chiara e quantificata del futuro. Quindi, se vuoi ottimizzare la tua supply chain, devi avere delle informazioni sul futuro, informazioni quantificate. La previsione probabilistica consiste nel conoscere il futuro ma anche nel sapere ciò che non conosci, quantificando l’incertezza. Questo fa parte della comprensione di ciò che ci attende, permettendoti di prendere decisioni più informate.
La seconda parte consiste nel giungere a una decisione migliore. Cosa significa? Migliore in base a cosa? E qui c’è l’ottimizzazione in senso lato, che significa semplicemente migliorare le cose. Ma esiste anche l’ottimizzazione in senso matematico. In questo senso, significherebbe trovare una soluzione al tuo problema che, secondo un criterio numerico, ti comporta una perdita minore. Per questa discussione, probabilmente ci concentreremo sulla prospettiva della perdita, dove l’obiettivo è semplicemente minimizzarla.
Quindi, l’ottimizzazione in questo senso è un’operazione puramente matematica. Consiste, per un dato problema, nel trovare la soluzione che minimizza la funzione di perdita che ti sei prefissato.
Conor Doherty: Quindi, ad esempio, cercare di non perdere troppi soldi con l’esito di questa decisione.
Joannes Vermorel: Quindi, nel caso di una supply chain, la decisione fondamentale sarebbe quante unità ordinare. E per ogni quantitativo scelto, esiste un esito con costi di mantenimento, penalità per stock out. Ovviamente, ci sono anche i guadagni che si realizzano vendendo merci a profitto, che si manifestano come una sorta di perdita negativa, permettendoti di minimizzare ulteriormente il danno attraverso la vendita dei tuoi prodotti.
Conor Doherty: Ok, quindi penso che la maggior parte seguirà questo discorso quando si parla di vincoli. Ma dove sta la stochasticità? Voglio dire, si può ottimizzare, ma dove c’è la stochasticità in quello che hai appena detto?
Joannes Vermorel: La stochasticità si riferisce quindi a classi di problemi in cui la funzione di perdita è incerta, ovvero rumorosa. Ad esempio, se consideriamo questo classico problema di riapprovvigionamento, scelgo oggi la quantità da riordinare, ma qualunque punteggio o perdita derivante da questa decisione lo saprò solo più tardi. Per il momento, sono intrappolato nell’incertezza riguardo a quale sarà la perdita finale. Così, quando ci troviamo in una situazione in cui la funzione di perdita non è fondamentalmente nota in anticipo, si ha un problema di ottimizzazione stocastica, a differenza dei classici problemi di ottimizzazione deterministica in cui tutto è perfettamente noto.
Se vogliamo fare il posizionamento dei componenti, ad esempio inserire diversi componenti all’interno di una scatola tenendo conto di tutte le dimensioni fisiche dei vari componenti, tutto ciò è completamente noto, quindi si tratta di un problema privo di incertezza. Può essere molto difficile trovare la combinazione completa, ma a differenza delle situazioni di supply chain, non c’è incertezza. Le situazioni di supply chain sono, direi, estremamente stocastiche, in cui è presente una certa incertezza.
La previsione probabilistica in realtà incorpora questa incertezza, ma non risolve nulla. Ti dice semplicemente che questo è il futuro e che questa è l’incertezza. Non si tratta di un processo di decision-making o di qualsiasi altro tipo di processo decisionale. Quella parte è l’ottimizzazione, e in particolare l’ottimizzazione stocastica.
Conor Doherty: E come si può affinare quella funzione di perdita, alla luce di tutta quella stochasticità?
Joannes Vermorel: La funzione di perdita è molto semplice. In Lokad, la esprimiamo attraverso gli economic drivers, quindi si tratta semplicemente di minimizzare l’errore in termini di dollari. C’è molta competenza nel perfezionare questa funzione di perdita per renderla veramente adeguata all’azienda, in modo che rifletta realmente i dollari in gioco. Abbiamo due preoccupazioni ortogonali. Una è trovare una funzione di perdita che sia completamente fedele alla strategia aziendale. Ma ciò non richiede particolari competenze di ottimizzazione numerica; basta avere qualcosa che rifletta la tua azienda, richiedendo solo operazioni aritmetiche di base. Non è qualcosa di elaborato. L’altra è tutto ciò che serve per eseguire l’ottimizzazione stocastica per una data funzione di perdita.
Conor Doherty: Beh, mi viene da pensare che quando si esegue una previsione probabilistica molto buona o molto efficace, non si potrebbe saltare completamente la parte di ottimizzazione? Perché se sapessi meglio cosa avresti fatto o quale sarebbe stata la domanda, perché occorrerebbe bilanciare tutte queste altre cose? Non potresti semplicemente ordinare la quantità che hai identificato o il ritorno più probabile?
Joannes Vermorel: Se avessi una conoscenza perfetta del futuro, allora in effetti la parte decisionale non sarebbe così complicata. Sebbene, anche in queste situazioni, dovresti affrontare MOQs e costi fissi di ordinazione, costi fissi di trasporto. Anche se conoscessi perfettamente il futuro, ti troveresti comunque ad affrontare numerose non-linearità che impediscono una soluzione immediata e banale.
Ma in realtà la situazione è molto peggiore, perché possiedi solo una conoscenza molto imperfetta del futuro. È del tutto irragionevole pensare che otterremo mai una previsione che elimini completamente l’incertezza. L’incertezza può essere ridotta, ma in larga misura è irriducibile. Quindi, rimani intrappolato con questa incertezza e non esiste una soluzione ovvia. Non si ottiene una soluzione evidente.
Conor Doherty: Va bene, tornando un po’ al tema dell’ottimizzazione stocastica. Hai parlato degli ingredienti. Hai elencato la funzione di perdita. La funzione di perdita non può essere l’unico ingrediente che entra nell’ottimizzazione stocastica. Quindi, qual è la gamma di ingredienti necessari per questo?
Joannes Vermorel: Quando affrontiamo l’ottimizzazione matematica ci sono tre tipi di ingredienti. I primi sono le variabili. Le variabili sono essenzialmente ciò che puoi scegliere. Questo è ciò che definisce la tua soluzione. La tua soluzione è una combinazione specifica di variabili.
Se vuoi pensare a un problema discreto, come trovare la combinazione giusta per un lucchetto, hai, diciamo, quattro variabili. Ogni variabile ha 10 posizioni e ogni combinazione definisce una soluzione potenziale. Vuoi trovare l’unica soluzione che scatta e si apre.
Il primo ingrediente sono le variabili. Nella supply chain, ci riferiamo frequentemente a problemi discreti perché le variabili sono intere. Puoi riordinare zero unità, una unità, due unità, tre unità, ecc., ma solitamente non puoi riordinare 0,5 unità. L’aspetto discreto rende tutto più difficile perché non puoi passare facilmente da una soluzione all’altra. Si manifestano numerosi schemi fortemente non lineari.
Ad esempio, passare da zero a una unità è molto diverso rispetto al passaggio tramite piccolissime frazioni. Inoltre, puoi avere elementi come le MOQs, ovvero la quantità minima d’ordine, dove devi saltare, diciamo, 100 unità in avanti per arrivare a una soluzione.
Conor Doherty: È un vincolo.
Joannes Vermorel: E questo mi porta al secondo elemento, che sono i vincoli. Quindi, tipicamente, elenchi le variabili e i vincoli. I vincoli sono un insieme di espressioni matematiche sulle variabili che ti indicano se una soluzione è accettabile, se è fattibile.
Quindi, in un caso di rifornimento, possiamo riordinare quante unità vogliamo, ma esiste una capacità finita per lo scaffale. Lo scaffale può contenere solo un certo numero di unità. Potrebbe esserci una capacità massima giornaliera per quante merci possono essere ricevute, processate dal negozio, o immagazzinate dal warehouse, o da qualsiasi altra sede nella tua supply chain.
E hai tonnellate di vincoli di questo tipo. Puoi avere un vincolo che dice “ho bisogno di avere almeno questo, questo e quello” per poter presentare uno scaffale dall’aspetto gradevole. Quello sarebbe un vincolo di merchandising in un negozio, ecc.
Quindi, abbiamo le variabili, abbiamo i vincoli, e il terzo elemento è la funzione di perdita. La funzione di perdita ti fornisce, per ogni soluzione che soddisfa tutti i vincoli, il relativo costo e tu vuoi semplicemente minimizzarlo. È solo una convenzione.
E questi tre elementi insieme definiscono il quadro generale dell’ottimizzazione matematica. La ragione per cui i matematici negli ultimi 100 anni hanno usato questo quadro è che è in realtà molto generale.
E qui stiamo esaminando anche la sfumatura della stocasticità, in cui aggiungiamo un elemento abbastanza inusuale al problema, ovvero la funzione di perdita non è deterministica. Non è una funzione matematica classica in cui fornisci un input e poi ottieni un output garantito. Diciamo che fornisci un input e poi ottieni un output randomizzato.
Conor Doherty: Solo per tornare all’idea dei vincoli, e correggimi se sbaglio, potresti suddividere quei vincoli. Ad esempio, hai elencato la capacità: conosci la capacità dei tuoi scaffali, del tuo warehouse, quanto può essere processato in un giorno. Forse questo può essere aumentato un po’ in termini di elaborazione, ma, ancora una volta, la capacità degli scaffali è finita. Non cambierà nel breve termine. Ma le MOQs potrebbero cambiare. Voglio dire, potresti rinegoziare. Quindi c’è un po’ di fluidità in alcuni di questi vincoli. È questo il tipo di stocasticità di cui parli e che viene incorporata nelle decisioni?
Joannes Vermorel: Non proprio. I vincoli sono letteralmente solo un modo matematico per esprimere l’idea che alcune soluzioni non sono accettabili. Ancora una volta, proprio come esiste una domanda profonda – che però non è una questione matematica – sull’adeguatezza della funzione di perdita rispetto alla tua strategia aziendale, lo stesso vale per i vincoli. Quindi diresti: questo vincolo è veramente un vincolo? Posso effettivamente investire per superarlo o posso semplicemente ripensare il business?
Ancora, l’idea è che avrai due prospettive differenti. Una è l’approccio di modellizzazione, in cui dici che vuoi davvero avere variabili, funzioni di perdita e vincoli in linea con la tua azienda. E questo è fondamentalmente un compito non matematico, non algoritmico. Si tratta semplicemente di capire se queste cose siano fedeli al business.
Ma non nel senso matematico. Un vincolo non è né vero né falso in senso matematico. Semplicemente esiste. È letteralmente qualcosa in cui dici “la capacità massima è 100 unità”. Non c’è validità matematica in questa affermazione. È semplicemente un dato di fatto. Un matematico può dire: “sì, hai scelto 100”. Matematicamente parlando, non posso dirti se 100 è un buon numero. Posso solo dirti, ad esempio, che se mi dici che esiste un vincolo che impone che debba essere inferiore a 100 unità e poi un altro che impone che debba essere strettamente superiore a 100 unità, allora posso dire che non esiste una soluzione.
La matematica non giudica il tipo di input che le viene fornito. Si tratta semplicemente di avere coerenza interna. Ma poi, la cosa interessante dell’aspetto stocastico, nel mondo stocastico, è che improvvisamente i vincoli diventano molto più sottili in senso matematico.
Quindi vediamo cosa significa avere un problema stocastico. Nell’approccio classico, non stocastico, all’ottimizzazione, c’era una chiara separazione: una soluzione funziona o non funziona a causa dei vincoli, senza nemmeno considerare la funzione di perdita. Ma vediamo cosa significa in un mondo in cui la nostra funzione di perdita è stocastica. Diciamo, ad esempio, che abbiamo un warehouse e possiamo trasmettere ordini di rifornimento, e disponiamo di una capacità giornaliera in entrata per il warehouse.
Quindi, ogni giorno, abbiamo un limite al numero di unità che possiamo processare dai fornitori. E di solito, per tenerne conto in questo warehouse, distribuiamo gli ordini di rifornimento, considerando i lead time dei fornitori, in modo da non avere tutti i fornitori che consegnano tutto nello stesso giorno e superare la capacità giornaliera del warehouse di ricevere le merci.
Guardandola da una prospettiva di ottimizzazione stocastica, scelgo le mie quantità e poi c’è una variabilità nei tempi di consegna. Ciò significa che, se sono estremamente sfortunato, potrei ritrovarmi con una decisione che, pur essendo perfettamente valida – tutto è stato distribuito in termini di ordini di rifornimento – i miei ordini molto anticipati arrivano in ritardo e quelli successivi addirittura in anticipo. Per una coincidenza casuale, tutto ciò finisce per collassare nello stesso giorno e, in quel giorno, sovraccarico il warehouse. Supero la capacità nominale di ricezione.
Ci sono molte situazioni in cui non è più possibile avere una soluzione perfettamente fattibile. Ciò significa che ti ritroverai in situazioni in cui c’è una probabilità che i vincoli non vengano rispettati. È semplicemente così. Questa è un’affermazione matematica che sto facendo. A causa della natura delle funzioni di perdita e del fatto che le tue decisioni possono avere conseguenze non deterministiche – come decidere una quantità senza avere il controllo completo sul giorno della consegna –
Anche se prendi le decisioni migliori, esiste la possibilità che le quantità in inventario si sovrappongano. L’unico modo per essere assolutamente sicuri che ciò non accada mai sarebbe assicurarsi che, in tutta la tua filiera di ordini pendenti, non superi mai ciò che potresti ricevere in un determinato giorno, tenendo conto dello scenario peggiore in cui tutti i tuoi ordini pendenti verrebbero consegnati nello stesso giorno. Questo è ovviamente estremo.
Le aziende devono affrontare questo tipo di situazione in cui, sì, c’è una possibilità su 10.000 che si superi la capacità. Ma in realtà, l’idea che un vincolo sia assoluto è più un concetto matematico. In pratica, se superi la capacità, ci sarà un costo.
Quando adottiamo la prospettiva dell’ottimizzazione stocastica, vediamo che fondamentalmente i vincoli diventano in larga misura parte della funzione di perdita. Oppure si adotta un approccio che dice: “Sono a mio agio con un certo grado di tolleranza per accettare che i vincoli vengano violati con bassa probabilità”. Per la maggior parte delle situazioni interessanti nei problemi di ottimizzazione stocastica che riguardano la supply chain, ci sarà una piccola probabilità residua che i vincoli vengano violati.
Conor Doherty: Quando parli di quella tolleranza, ti riferisci alla fattibilità, giusto? E, per estensione, a cosa viene misurata?
Joannes Vermorel: Questo viene misurato in base alla capacità che hai stabilito per i tuoi problemi. Se dici “voglio rifornire un negozio”, prendi la decisione in modo che si adatti alla capacità del negozio. Ma cosa succede se, per un caso fortuito, il negozio non vende nulla in un certo giorno? Supponiamo che tu gestisca alimentari freschi, decida oggi di rifornire il latte, e prenda questa decisione senza conoscere le vendite del giorno. Ma presumi comunque che verranno vendute alcune unità. E se, per una coincidenza casuale, in questo negozio che normalmente vende l'80% del suo stock di latte fresco ogni giorno, oggi non venda nulla, semplicemente per caso, allora potresti finire per rifornire e superare i vincoli.
La chiave è che, non appena ti trovi in una situazione di incertezza, non solo la funzione di perdita varia, ma anche la soddisfazione dei vincoli varia. Per la maggior parte delle situazioni interessanti, finisci con vincoli che non saranno perfettamente soddisfatti. Sarebbe un errore dire che vuoi solo situazioni in cui sia garantito il rispetto dei vincoli. Perché? Perché, matematicamente, otterrai soluzioni, ma saranno molto povere. Saranno soluzioni come “non ordinare nulla, non fare nulla, lascia le cose come stanno”. E questo darà soddisfazione nel senso di non avere violazioni di vincoli, ma certamente non genererà profitto.
Conor Doherty: Voglio tornare all’esempio che hai fatto riguardo al ricevere ordini, distribuire gli ordini e cercare di farlo nel modo economicamente più vantaggioso. Quello sarebbe, immagino, l’approccio stocastico. Come affrontavano il problema, che hai appena descritto, i modelli precedenti basati sull’ottimizzazione matematica, senza la dimensione stocastica?
Joannes Vermorel: Ignoravano completamente il problema. Non esisteva nemmeno nell’ottimizzazione matematica deterministica classica. Le conseguenze variabili delle tue decisioni non venivano neanche considerate, non esistevano.
Esistono modi per mitigare questo caso. Un modo semplice sarebbe dire: “Beh, estendo macro la definizione del mio problema dicendo, invece di considerare un’ottimizzazione singola, che andrò ad ottimizzare congiuntamente, diciamo, 100 scenari distinti. E dico che la mia decisione deve essere comune a tutti i possibili futuri, e devo assicurarmi che in tutti quei vari scenari i miei vincoli siano comunque soddisfatti.”
Quindi, come torni a un caso deterministico? Beh, puoi semplicemente dire: “Posso copiare la mia situazione 100 volte, rappresentando 100 varianti della situazione, come se fossero 100 traiettorie, e poi ottimizzare il problema macro espanso che ha 100 istanze contemporaneamente.”
E posso farlo con un risolutore classico, ma ciò peggiora ulteriormente un problema che già impedisce agli operatori della supply chain di oggi di utilizzare gli strumenti di ottimizzazione matematica in primo luogo. E questo problema è la scalabilità.
Conor Doherty: Ok, credo che sia un buon punto per iniziare ad applicare tutto ciò a un settore specifico, così da ottenere una comprensione tridimensionale di come la teoria interagisca con la complessità reale, i vincoli reali, le variabili reali. Quindi, se prendi, ad esempio, un’azienda MRO, che tipicamente serve una flotta di dimensioni normali, diciamo 10 aerei, ognuno dei quali ha, non so, un quarto di milione di parti, come si adatterebbero questi tre ingredienti in un’ottimizzazione stocastica per un MRO rispetto a un’ottimizzazione matematica “old school” che, secondo te, non funziona?
Joannes Vermorel: Vediamo quali tipi di problemi abbiamo per l’MRO. Vogliamo ottimizzare l’inventario in modo da poter effettuare le riparazioni. Arriva un componente, è inutilizzabile, inizi la riparazione, scopri quali parti ti servono. Quindi hai una distinta base, ma la distinta base è probabilistica, incerta. Si manifesta una stocasticità qui. C’è l’incertezza se otterrai componenti per le riparazioni, una domanda fluttuante. Ma poi, una volta ottenuto il componente, scoprirai effettivamente cosa ti serve per ripararlo.
Il problema è che se manca una parte, non puoi riparare il componente. Quindi, vedi, non basta avere il 90% delle parti, il problema non si risolve. Sei bloccato. Hai bisogno di tutte le parti per la riparazione, altrimenti non potrai riparare affatto il componente.
Da Lokad, anni fa abbiamo iniziato a fare previsioni probabilistiche per quelle situazioni. La previsione probabilistica consiste nell’anticipare con le probabilità adeguate l’arrivo dei componenti da riparare, anticipare le distribuzioni di probabilità delle parti che ti serviranno. Quindi, questo sarà il probabilistic bill of material. E ora dobbiamo decidere cosa riordinare, quali sono le parti che vogliamo avere in stock e in quali quantità. E poi, per quelle parti, c’è anche l’incertezza dei lead times. E alcune di quelle parti sono riparabili.
Per alcune di esse, c’è l’incertezza che non solo avranno il loro turnaround time perché estrai una parte dal tuo componente, ma questa stessa parte è riparabile. Quindi puoi farla riparare e rimetterla, o, molto probabilmente, prenderai le parti, farai riparare quella parte, ma inserirai un’altra nel componente perché non vuoi aspettare che la parte torni riparata.
Ma ciò significa che, quando decidi se hai bisogno di altre parti, devi tenere conto anche delle parti che torneranno, quelle già in lavorazione. Quindi non si tratta solo delle parti che possiedi, ma anche di quelle che stanno per tornare. E poi ci sono altri fattori come i tassi di scarto, in cui tenti la riparazione, ma questa potrebbe non funzionare. Quindi pensavi di avere, per esempio, 10 parti in ritorno, ma ne ottieni solo 8 perché due sono state scartate poiché la riparazione non era possibile.
Questa è una parte della previsione, tutte le incertezze. Ora, le decisioni che devi prendere in definitiva riguardano la risoluzione dei tuoi problemi di approvvigionamento delle parti. La domanda è: dovrei acquistare più unità di parti, tenendo conto di tutte quelle che tornano e di tutto il resto?
Una parte avrà un valore economico se contribuisce a una riparazione. Ma proprio come il padlock che ho menzionato prima, c’è questo effetto a scatto in cui, se hai tutte le parti, puoi riparare e tutte quelle parti hanno valore. Ma se ti mancano delle parti, tutto ciò è semplicemente un peso morto. Le parti che hai servono solo se possiedi la combinazione completa. Se hai la combinazione meno una, allora si generano ritardi per i tuoi clienti.
In ogni caso, l’inventario serve al suo scopo solo se hai tutto. E se non hai tutto, allora la domanda sarà: “Quanto tempo ci vorrà per ottenerlo, dato che scoprirai all’ultimo minuto che qualcosa manca e quanto tempo impiegherà affinché quella cosa diventi disponibile se inoltri un ordine troppo tardi?”
Se ci troviamo in un contesto semplice in cui tutti i miei SKUs sono strettamente indipendenti, clienti differenti, tutto diverso, allora per ogni posizione di stock posso calcolare un punteggio economico e dire che, in base a tutte le probabilità, posso calcolare il ritorno economico atteso in dollari dall’avere quell’unità in stock.
Ma per l’MRO non posso adottare questo approccio perché ci sono dipendenze tra i numeri delle parti. Se decido di acquistare una unità, da sola potrebbe non avere valore. Ma se ne acquisto un’altra, posso completare una riparazione e allora entrambe le parti avranno molto valore.
Finché non hai tutte le parti di cui hai bisogno per il tuo probabilistic build of material, le parti che possiedi sono fondamentalmente inutili. Il loro valore economico risiede essenzialmente quando sono insieme. Separatamente, non hanno valore. Quindi, qualunque approccio usi per risolvere questo problema di ottimizzazione stocastica, devi essere in grado di analizzare le tue decisioni non come acquisti di parti singole o di parti considerate in isolamento, ma come un insieme. Le combinazioni di certe unità da acquisire possono avere un valore economico molto diverso rispetto a un’analisi isolata in cui si guarda alle parti una per una.
Conor Doherty: Cercherò di seguire questo ragionamento, abbi pazienza, ma quando descrivi tutti questi elementi stocastici, stai dicendo che il tempo di turnaround per ottenere quella parte potrebbe essere di un giorno, di mezzo giorno, di tre giorni, di quattro giorni. C’è un altro aspetto della stocasticità che presumibilmente riguarda anche la capacità delle persone di effettuare effettivamente la riparazione, come ad esempio quanto tempo impiega una persona, una volta ricevuta la parte, a completare la riparazione. Puoi considerare anche questo livello di stocasticità, quella basata sull’uomo?
Joannes Vermorel: Sì, gli esseri umani sono solo uno dei tipi di ritardi tra gli altri e possono avere abilità differenti. Per esempio, alcuni operatori sono più talentuosi di altri e quindi potrebbero avere bisogno di meno parti. Qualcuno potrebbe riuscire a effettuare una riparazione utilizzando meno materiale rispetto a un dipendente meno abile che si limita a scartare le cose quando la riparazione non riesce.
Nel MRO aviation, i componenti sono altamente modulari, quindi sono composti da componenti che a loro volta sono composti da componenti. Quindi c’è sempre l’opzione, quando non sai come riparare, di buttare via l’intero sottomodulo e sostituirlo con uno nuovo di zecca, anziché individuare l’unica parte che non funziona e cambiarla.
Se sei molto bravo a diagnosticare cosa deve essere cambiato, cambierai solo ciò che serve. Se sei meno abile, potresti finire per cambiare molto di più.
Ma tornando al caso, l’astuzia qui è che, quando definisco la soluzione, dobbiamo considerarla da una prospettiva di policy. Ciò significa che la tua soluzione non è necessariamente solo la decisione che prendi ora, ma il principio generale che guida le tue decisioni. Una policy potrebbe regolare quali parti hai in stock, tenendo conto di come reagisci quando scopri il tuo probabilistic bill of material.
Perché è importante? Supponiamo, per esempio, che tu voglia riparare un motore per aerei. Ci sono alcune parti, all’esterno del motore, che saranno le prime a essere diagnosticate. Quindi, quando ricevi il motore per eseguire la riparazione, scoprirai ciò che ti serve per l’esterno, semplicemente perché, mentre smonti il motore, quella sarà la prima parte che toccherai, dato che un motore è come una Matryoshka con numerosi strati che arrivano al nucleo.
Se scopri una parte che si trova all’esterno del motore, molto probabilmente avrai molto tempo per procurartela, perché inizialmente potresti avere diversi giorni per smontare il motore fino al nucleo e poi rimontarlo gradualmente dall’interno verso l’esterno, e avrai bisogno della parte corretta per l’esterno del motore solo alla fine del processo.
Quindi, questa parte non ho nemmeno bisogno di averla in stock, perché quando arriva il momento in cui mi servono le parti posso riordinarle sin dal primo giorno e, al giorno 60, quando effettivamente mi occorrono, le ho già disponibili, dato che il lead time dei miei fornitori è stato, diciamo, di 20 giorni.
Quando vuoi esaminare l’ottimizzazione dell’inventario per le parti, devi tenere conto della policy, ossia quali parti devo avere immediatamente disponibili e quale sarà la mia reazione tipica quando mi troverò di fronte al mio probabilistic bill of material.
Se assumo una policy diversa, per esempio che la persona che smonta il motore dell’aereo non abbia alcuna informazione sulla disponibilità o meno delle parti, allora è una storia completamente diversa, perché smonti il motore, lo rimonti e, 60 giorni dopo, scopri ancora di essere a corto di quella parte.
Quindi, vedi, la policy esprime questo tipo di situazioni di decisione sequenziale, in cui vengono prese determinate decisioni e come queste plasmano l’esito economico finale della situazione man mano che si sviluppa.
Abbiamo due policy qui: una è intelligente, reagisco non appena ho l’informazione, inoltro l’ordine d’acquisto; l’altra è: aspetto fino a dover montare la parte e solo allora mi rendo conto che serve, inoltrando l’ordine. Se ti trovi in una situazione in cui vale la seconda policy, significa che darebbe molto più valore economico ad avere le parti in stock, perché è l’unico modo per assicurarsi che il motore dell’aereo non subisca ulteriori ritardi alla fine, per via della mancanza di quella parte.
Se la prima policy, quella intelligente, è in atto, allora significa che non ha valore economico avere quelle parti all’esterno del motore in stock. Grazie alla policy, non rimarrò senza, perché gli ordini d’acquisto verranno inoltrati in anticipo.
Conor Doherty: Che tipo di sovraccarichi tecnologici saranno associati alla reattività che stai descrivendo? Quindi, se mi addentro nel motore e scopro che mi serve una parte, ciò riconfigura completamente l’intera timeline prevista per questa riparazione.
Joannes Vermorel: È una domanda molto interessante. La scalabilità è stata una preoccupazione importante. Quando parlo di scalabilità, intendo la scalabilità delle tecniche di ottimizzazione matematica per supply chain, che è stata un ostacolo per sostanzialmente quattro decenni.
L’ottimizzazione matematica è presumibilmente un campo di ricerca ben consolidato e ci sono software player super affermati che vendono quello che viene chiamato solvers. I solvers sono software progettati per affrontare problemi di ottimizzazione matematica e di solito vengono forniti con il proprio linguaggio di programmazione. Sono tipicamente linguaggi di programmazione matematica che consentono di esprimere le variabili, le funzioni di loss e i vincoli.
La cosa interessante è che, sebbene questi solvers siano stati introdotti sul mercato quattro decenni fa, e oggi esistano anche solvers open source, questi non si vedono affatto in supply chain. Credo che la scalabilità sia un grosso problema.
Se scomponiamo il tipo di tecniche disponibili sul mercato, abbiamo sostanzialmente le funzioni di loss ben comportate, le funzioni convesse. Le funzioni convesse significano che le tue funzioni hanno una curva dolce e tu, quando scegli una soluzione, puoi scivolare dolcemente fino al fondo. Basta seguire i gradienti e arriverai al fondo. Quindi, quelle ben comportate saranno funzioni lineari, funzioni quadratiche. Questo tipo di funzioni non ha problemi di scalabilità, possiamo avere letteralmente miliardi di variabili. Ma i problemi che affrontiamo in supply chain non sono così ben comportati.
Poi abbiamo una seconda classe di solvers, che sono branch and bound, branch and cuts, che essenzialmente assumono che i vincoli predominino, cioè che ci siano pochissime soluzioni fattibili valide. Quindi, hai così tanti vincoli da poter eliminare un intero iperpiano dello spazio delle soluzioni. Essenzialmente, puoi dividere a metà il tuo insieme di soluzioni e dire che metà va semplicemente scartata perché so che quelle soluzioni non soddisferanno mai i vincoli imposti. E letteralmente, puoi scartare metà delle soluzioni e ripetere il processo di eliminazione di metà delle soluzioni un gran numero di volte. Alla fine, ti ritrovi con uno spazio molto ridotto che poi puoi analizzare in modo approfondito.
Esistono molte tecniche, quelle che vengono chiamate relaxazione dei problemi, in cui guardi il problema senza vincoli, trovi le soluzioni ideali e poi riapplichi i vincoli. Questi problemi, comunque, se i vincoli non sono super rigidi, scalano molto male. Quindi la scalabilità di queste tecniche dipende molto da quanto margine rimane una volta applicati tutti i vincoli. Ed ecco il problema: in supply chain, i problemi che consideriamo hanno molti vincoli, ma non sono super rigidi.
Pensa al padlock. Il padlock ha 10.000 combinazioni, e ce n’è solo una che dà il click; tutte le altre sono semplicemente sbagliate. Beh, nelle supply chain hai dei vincoli, ma quei vincoli non sono così severi. Per esempio, all’interno dei vincoli della capacità degli scaffali, hai ancora un’enorme quantità di soluzioni. Puoi decidere di inserire più di questi prodotti, più di questi articoli. Guardandoci, è un vincolo molto debole. Non si tratta di quei vincoli che riducono lo spazio delle soluzioni a poche opzioni. Hai ancora a disposizione un numero assolutamente enorme di soluzioni.
Tutti quei solvers che adottano tecniche di eliminazione dello spazio delle soluzioni, come branch and cuts, branch and bound, ecc., oltre le 1.000 variabili, generalmente performano in maniera estremamente scadente. Forse, se ti spingi fino a 10.000 variabili, ma sarebbe già al limite estremo. Stiamo parlando di macchine molto potenti, con decine di gigabyte di RAM, decine di CPU e potenzialmente ore per ottenere una soluzione. Quindi, sarà super lento e per 10.000 variabili potresti dire “oh, sono già tante”. In realtà, non è affatto così, sono poche.
Basta considerare che un mini market è composto da 5.000 prodotti. Ma non si tratta di 5.000 variabili, perché la domanda reale è: porto zero unità, una unità, due unità, tre unità. Quindi, supponiamo di fermarci a 10, 10 sarà sufficiente, ma siamo già a 50.000 variabili, considerando poi anche la localizzazione per mini market, e ovviamente ci sono molti mini market. Quindi, vedi, anche un problema all’avanguardia come un mini market implica già 50.000 variabili ed è ben oltre ciò che si può gestire.
E poi abbiamo una terza classe di strumenti, che sono le tecniche di local search. La local search è una classe di tecniche che presuppone di poter trovare una soluzione ammissibile. Nel caso della supply chain, questa è un’assunzione molto ragionevole. Quindi, trovare una soluzione che non violi alcun vincolo è di solito abbastanza facile. Se il tuo vincolo è non sovraccaricare lo scaffale, basta ordinare di meno. Non è qualcosa di difficile, basta diminuire le unità fino a soddisfare il vincolo. Se hai una quantità minima d’ordine, per soddisfare il vincolo basta aggiungere un’unità in più al prodotto fino a raggiungere la quantità richiesta.
Quindi, non è difficile trovare una soluzione che soddisfi i vincoli. Non è come un enigma crittografico in cui devi regolare esattamente decine di variabili affinché tutto combaci. Nella supply chain, di solito, quando dico che i problemi sono facili, intendo che, in genere, regolando una sola variabile puoi fare in modo che la soluzione funzioni. Puoi semplicemente diminuire una quantità fino a farla entrare nello scaffale, diminuire o aumentare una quantità fino a raggiungere quella quantità minima. Esattamente la stessa cosa. Quindi, hai solo modi semi-triviali per ottenere una soluzione che soddisfi i vincoli. Ma non sto parlando della qualità della soluzione, sto solo dicendo che troverai una soluzione.
Sostanzialmente, la local search dice che una volta trovata una soluzione che va bene, puoi mutarla casualmente e poi, se la soluzione mutata viola uno dei vincoli, la scarti. E se continua a soddisfare il problema e hai una loss function che ti indica che questa soluzione è migliore, allora passi a questa soluzione migliore e continui a iterare.
Quindi, loss function significa che hai già una soluzione che, in un certo senso, è valida; la modifichi casualmente e, per caso, ottieni una soluzione che, secondo la tua loss function, risulta migliore e che soddisfa i tuoi vincoli, allora passi a questa nuova soluzione e ripeti.
Esistono varianti di questo approccio, tipicamente chiamate meta-heuristics, genetic algorithms, taboo search e simili, e tutto ciò si basa sul presupposto di partire da una soluzione e iterarla con mutazioni casuali per ottenere maggiore scalabilità. Con questo tipo di tecniche, potresti gestire magari un milione di variabili. Ma resta comunque molto lento.
E da Lokad abbiamo provato, e non supera ancora la prova della scalabilità per la supply chain. Quindi, pur essendo un approccio migliore rispetto al metodo classico, risulta comunque troppo debole per scalare a problemi in cui abbiamo milioni di variabili in tempi brevissimi e desideriamo una convergenza rapida.
E vogliamo anche considerare l’aspetto della stochasticità del problema. Perché, vedi, quando parlavo di questo problema per questi mini market dove avevamo 50.000 variabili, se espandiamo a livello macro con 100 traiettorie, proprio come ho descritto per tenere conto dei futuri possibili, arriviamo a 5 milioni di variabili. Quindi, cresce rapidamente e ancora una volta non è sufficiente.
Conor Doherty: Voglio aggiungere all’interrogativo originale un po’. Se dovessi riassumere fino a questo punto, il problema delle vecchie ottimizzazioni matematiche era che erano deterministiche. Le cose sono note, c’è un giusto e uno sbagliato, in sostanza puoi prendere una decisione giusta o sbagliata.
Poi ti ho chiesto della complessità del MRO, e mi hai dato una spiegazione molto chiara su quanto fosse complesso. Quindi, quali sono i costi tecnologici per l’ottimizzazione stocastica di questo piccolo accenno di complessità che hai descritto? È ovviamente folle, ma quello che chiedo in realtà non è qual è il modo perfetto per implementarlo, bensì qual è un modo migliore per utilizzare l’ottimizzazione stocastica? Potrebbe non essere perfetto, ma qual è un metodo funzionale o fattibile per implementarlo senza violare tutto ciò che hai appena detto?
Joannes Vermorel: Il problema dell’ottimizzazione matematica riguarda veramente la scalabilità. Puoi trasformare un problema stocastico in un problema deterministico, ma siamo partiti da tecniche di ottimizzazione matematica che già soffrivano di gravi problemi di scalabilità.
Ora ingrandiamo il problema per reinterpretarlo come deterministico, il che peggiora ulteriormente il problema della scalabilità. Esiste un modo banale per affrontare l’ottimizzazione stocastica: basta eseguire la mia loss function che varia un milione di volte e calcolarne la media. Ciò funzionerebbe, tranne il fatto che il sovraccarico computazionale è semplicemente gigantesco.
Quindi, il punto che sto facendo è che questi strumenti di ottimizzazione matematica sono disponibili da decenni, ma non scalano e non gestiscono neanche la stochasticità. Già prima di considerare la stochasticità, che deriva dalle previsioni probabilistiche, non erano sufficientemente scalabili. Se aggiungi la stochasticità, siamo fuori scala di diversi ordini di grandezza. Per questo motivo Lokad ha dovuto essenzialmente riprogettare una classe di tecnologia per l’ottimizzazione stocastica, in modo da poter affrontare questi problemi a una scala che abbia senso per la supply chain.
E se torniamo al motivo per cui ne abbiamo veramente bisogno, la risposta è che quando Lokad ha introdotto le previsioni probabilistiche nel 2012, ci siamo subito resi conto che avevamo un grosso problema. Ottimizzare in condizioni di incertezza è estremamente difficile.
Per anni, abbiamo ideato euristiche intelligenti per improvvisare una soluzione alla situazione. Quindi, puoi cavartela con delle euristiche ingegnose, intendendo per tali un metodo astuto che funzioni in qualche modo in questo contesto molto specifico. Insomma, è un trucco. Trovi un espediente che funziona in una situazione limitata. Il problema è che queste euristiche tendono a essere fragili.
E poi, quando introduci vincoli incrociati tra prodotti o vincoli di cross-skew, o qualsiasi altro elemento che coinvolga interdipendenze nella tua supply chain, insomma, qualunque cosa, queste euristiche tendono a crollare. Per questo motivo hai bisogno di un’ottimizzazione stocastica.
Se non lo fai, beh, cosa significa per le aziende? Significa che ti affidi tipicamente a un giudizio umano molto conservativo. Funziona in parte, ma il problema è che tendi a optare per soluzioni estremamente prudenti per soddisfare i tuoi vincoli. Il problema è che, nella supply chain, tutti i problemi possono essere risolti semplicemente investendo più denaro.
Se torno al mio esempio di MRO nell’aviazione, c’è la soluzione ovvia: basta dire che il cielo è il limite. Posso avere quante parti voglio, quindi avrò un sacco di inventario e otterrò un buon service level. Se spendi semplicemente più denaro per risolvere il problema, sì, in un certo senso lo risolvi, ma questa non è una soluzione precisa, è una soluzione molto approssimativa.
La stessa cosa vale per il limite degli scaffali. Puoi decidere di suddividere il tuo negozio con numerosi vincoli molto ristretti. Ad esempio, puoi stabilire che questi due o tre prodotti non debbano occupare tanto spazio e che un altro prodotto non ne occupi più di una certa quantità. Ciò limita la variazione della composizione interna che il tuo negozio può avere.
Se dico che, complessivamente, gli yogurt non dovrebbero superare le 200 unità, va bene. Ma cosa succede se questo vincolo è sbagliato? Cosa succede se localmente c’è un’impennata della domanda e questo vincolo per il totale degli yogurt è troppo basso? Finisci ogni sabato senza neanche uno yogurt rimasto nel tuo mini market.
Quello che succede è che, quando non hai a disposizione un ottimizzatore stocastico, un risolutore stocastico, le aziende tendono ad aggiungere molti vincoli per ridurre lo spazio delle soluzioni. In questo modo, le persone o, eventualmente, il software che sceglieranno le soluzioni e prenderanno decisioni opereranno in uno spazio delle soluzioni molto più ristretto. Ciò allevia tutte quelle dipendenze incrociate.
Ma questo è un trucco, nel senso che potrebbero esserci soluzioni molto migliori là fuori e le hai eliminate semplicemente accumulando tanti vincoli fittizi.
Conor Doherty: Abbiamo coperto molto. Quindi, in termini di riassumere o condensare il tutto per renderlo più comprensibile a chi potrebbe non avere una formazione matematica, l’ottimizzazione stocastica è un modo molto più flessibile e reattivo di ottimizzare le decisioni rispetto all’ottimizzazione matematica tradizionale, giusto?
Joannes Vermorel: Sì, è un approccio più espressivo. Qualunque cosa tu possa esprimere come un problema deterministico, puoi anche esprimerlo come un problema stocastico. Ma in un certo senso, lo stocastico è molto più generale, perché deterministico significa semplicemente che la tua funzione non varia affatto. Se hai una funzione, puoi sempre scegliere una versione che non varia. Funzionerà comunque. Quindi, il primo passo è definire a quale classe di problemi ti stai rivolgendo.
Se i tuoi problemi implicano incertezza, hai bisogno dell’ottimizzazione stocastica. Quella è letteralmente la classe di problemi a cui appartiene la tua situazione. E ora, idealmente, vuoi un componente software per affrontarlo. Le previsioni probabilistiche sono gli strumenti che ti permettono di generare quelle previsioni di base per valutare l’incertezza.
Per quanto riguarda il processo decisionale stesso, abbiamo bisogno anche di un componente. L’approccio tipico nell’ottimizzazione matematica è avere un solver, un pezzo di software generico in grado di prendere qualsiasi enunciato del problema, loss function deterministica, variabili, vincoli, e fornirti la soluzione, ovvero la combinazione di variabili che minimizza la loss function. Puoi avere esattamente la stessa cosa, un solver, ma sarà un solver stocastico. E così ti fornirà in output la combinazione di variabili che cerchi.
E perché vorresti avere un solver? Beh, la tua loss function, che rappresenta i tuoi guadagni e le tue perdite in termini di dollari, è soggetta a cambiamenti. Forse vuoi modificarla leggermente per adattarla alla tua visione strategica. Non vuoi dover reimplementare l’intera risoluzione software della ricetta numerica che ti fornisce una soluzione.
Vuoi semplicemente dire: “Ecco una nuova loss function, applica nuovamente la risoluzione a questa loss function aggiornata”. Ed è questo che un solver può fare per te. È come un componente software confezionato che prenderà la definizione di una loss function, la definizione dei vincoli e la definizione delle variabili, e ti fornirà la soluzione.
Conor Doherty: Quindi, lo strumento software di cui stai parlando, il tool solver che rigenera automaticamente l’ottimizzazione o la soluzione di cui parli, riduce così il lavoro che un tradizionale supply chain practitioner dovrebbe svolgere, giusto?
Joannes Vermorel: Quindi, in pratica, questo automatizza interamente il processo decisionale? Sì, il solver è ciò che genera le decisioni finali proposte da Lokad ai suoi clienti. Esistono diversi metodi per affrontare l’ottimizzazione. Puoi usare euristiche, alcune delle quali sono molto valide e funzionano bene in certe situazioni, quindi non hai necessariamente bisogno del solver. Puoi semplicemente avere la tua euristica che svolge il ruolo di un solver. Ma in sostanza il solver è ciò che, dato il forecast, genera la soluzione.
Conor Doherty: Per chiarire, quando usi il termine “solver”, lo intendi in maniera intercambiabile con “numerical recipe” che genera le decisioni consigliate, per esempio, nel rifornimento dell’inventario?
Joannes Vermorel: Quando uso il termine “numerical recipe”, mi riferisco solitamente all’intera catena di elaborazione. È praticamente tutto, dalla preparazione dei dati fino alla generazione dei risultati. Questa numerical recipe è tipicamente scomposta in una serie di fasi: preparazione dei dati, generazione del forecast, ottimizzazione e infine presentazione dei risultati. Oggi stiamo discutendo solo il calcolo della decisione finale, che prende il forecast come input.
Conor Doherty: Se il supply chain practitioner non è d’accordo con la decisione di supply chain generata dal solver, qual è il rimedio? Se vengono considerate milioni di variabili che operano su una scala ben oltre la capacità umana, come può un supply chain practitioner valutare se essa sia corretta o meno?
Joannes Vermorel: Un solver è molto semplice da contestare. Puoi semplicemente dire: “Ecco la mia soluzione migliore. Mettiamo questa soluzione alla prova confrontandola con la loss function.” Tutto ciò che serve per dimostrare che il tuo solver non è buono è mostrare una soluzione migliore di quella trovata dal solver.
Quindi, il solver ti fornisce una combinazione e, tipicamente, una volta data una soluzione, hai accesso alla loss function e ai vincoli. Ecco la soluzione provvisoria, verifichiamo prima che i vincoli siano rispettati, va bene, controllati. E ora, applichiamo la loss function che mi fornisce la perdita in dollari. Va bene, questa è la perdita, e questa è la soluzione presentata dal solver.
Se modifico manualmente questa soluzione, selezionando a piacimento le mie variabili, e ottengo qualcosa che è migliore secondo la loss function, allora ho dimostrato che sono capace, in quanto umano, di generare una soluzione superiore a quella del solver. In questo caso, il solver non è molto buono. Questo può succedere facilmente.
Il problema dei solver standard che si trovano sul mercato non è che non trovino soluzioni – le trovano – ma che trovano soluzioni molto scadenti. Soluzioni in cui i supply chain practitioners modificherebbero manualmente le quantità da acquistare, e che pur soddisfacendo tutti i vincoli, risulterebbero migliori secondo la loss function. Quindi, contestare un solver è molto più semplice che contestare un modello di previsione probabilistica. Basta esibire una soluzione che risulti migliore secondo la loss function.
Se hai intuizioni particolari sul problema, potresti forse creare manualmente qualcosa che superi il tuo solver. Per la maggior parte dei software – direi che per tutti i solver commercialmente disponibili in contesti di supply chain – è abbastanza semplice superarli manualmente. Non sono affatto bravi quando si tratta di problemi stocastici. La loro scalabilità è terribile. Quindi, dovrai far girare un solver per diciamo 30 minuti e basta. Se la soluzione dopo 30 minuti è una completa schifezza, allora spesso non sarà così difficile per un umano fare meglio.
Conor Doherty: Qual è, secondo te, il punto chiave da portare a casa per le persone che hanno ascoltato tutto questo?
Joannes Vermorel: Il punto chiave è che l’ottimizzazione stocastica è un aspetto molto importante, per lo più assente dai manuali di supply chain. La maggior parte degli autori non riconosce nemmeno che il problema esista. I grandi e consolidati player che vendono solver offrono soluzioni per problemi di ottimizzazione deterministica. Questi sono buoni solver, non fraintendermi, ma non risolvono la classe di problemi che abbiamo nella supply chain a causa di questa incertezza. Ignorano semplicemente l’incertezza.
Il vantaggio di avere un tale solver è che ti permette di migliorare la tua supply chain in modi che considerano veramente tutte le interdipendenze esistenti. Invece di analizzare le cose in isolamento, guarda la tua supply chain come un sistema in cui tutto contribuisce e devi considerare quelle dipendenze.
Quelle dipendenze possono assumere molte forme. Nell’aviazione, riguarda l’elenco dei componenti necessari per effettuare una riparazione. Nel fashion, significa che un negozio deve avere capi di abbigliamento di tutti i colori per risultare attraente. Questo è qualcosa che non può essere espresso a livello di prodotto. In un ipermercato, devi pensare a quale sia la lista della spesa effettiva che le persone desiderano. Non vengono per comprare una sola cosa, ma vogliono un’intera lista. Magari vogliono cucinare delle ricette, quindi devi avere tutto il necessario. Per quasi tutte le supply chain non banali, ci sono interdipendenze ovunque e, a meno che tu non abbia un solver stocastico o una tecnica di risoluzione stocastica, non puoi nemmeno affrontare il problema in modo soddisfacente.
Conor Doherty: Bene, Joannes, grazie mille per il tuo tempo. Non ho ulteriori domande. E grazie a tutti per aver guardato. Ci vediamo la prossima volta.