00:00 Introduzione
02:53 Decisioni vs Artefatti
10:07 Ottimizzazione sperimentale
13:51 La storia finora
17:01 Decisioni di oggi
19:36 Il manifesto della supply chain quantitativa
21:01 Il problema dell’allocazione delle scorte retail
24:49 Forze economiche sullo SKU del negozio
29:35 Rendere concreti i futuri
32:41 Rendere concrete le opzioni - 1/3
38:25 Rendere concrete le opzioni - 2/3
43:02 Rendere concrete le opzioni - 3/3
44:44 Funzione di ricompensa per le scorte - 1/2
51:41 Funzione di ricompensa per le scorte - 2/2
56:19 Allocazioni di scorte prioritizzate - 1/4
59:59 Allocazioni di scorte prioritizzate - 2/4
01:03:39 Allocazioni di scorte prioritizzate - 3/4
01:06:34 Allocazioni di scorte prioritizzate - 4/4
01:12:58 Livellamento del flusso in magazzino - 1/2
01:16:48 Livellamento del flusso in magazzino - 2/2
01:22:12 Funzione di ricompensa per l’azione
01:25:02 Il mondo reale è complicato
01:27:38 Conclusione
01:30:00 Lezione successiva e domande dal pubblico
Descrizione
Le decisioni di supply chain richiedono valutazioni economiche aggiustate per il rischio. Convertire le previsioni probabilistiche in valutazioni economiche non è banale e richiede strumenti dedicati. Tuttavia, la conseguente prioritizzazione economica, illustrata attraverso le allocazioni di scorte, si dimostra più potente delle tecniche tradizionali. Iniziamo con la sfida dell’allocazione delle scorte retail. In una rete a 2 livelli che include sia un centro di distribuzione (DC) sia vari negozi, dobbiamo decidere come allocare le scorte del DC ai negozi, sapendo che tutti i negozi competono per le stesse scorte.
Trascrizione completa
Benvenuti in questa serie di lezioni sulla supply chain. Sono Joannes Vermorel e oggi presenterò “Retail Stock Allocation with Probabilistic Forecasts.” L’allocazione delle scorte retail è una sfida semplice ma fondamentale: quando e quanto stock decidere di spostare in un dato momento tra i centri di distribuzione e i negozi gestiti? La decisione di spostare le scorte dipende dalla domanda futura, perciò è necessaria una qualche forma di previsione della domanda.
Tuttavia, la domanda retail a livello di negozio è incerta, e l’incertezza della domanda futura è irriducibile. Abbiamo bisogno di una previsione che rifletta correttamente questa incertezza irriducibile, perciò è necessaria una previsione probabilistica. Eppure, sfruttare al meglio le previsioni probabilistiche per ottimizzare supply chain delle decisioni non è un compito banale. Sarebbe tentatore riciclare una tecnica di inventario esistente, originariamente progettata per una classica previsione deterministica. Tuttavia, farlo comprometterebbe il motivo stesso per cui abbiamo introdotto le previsioni probabilistiche in primo luogo.
L’obiettivo di questa lezione è imparare a sfruttare al meglio le previsioni probabilistiche nella loro forma nativa per ottimizzare le decisioni di supply chain. Come primo esempio, considereremo il problema dell’allocazione delle scorte retail e, esaminandolo, vedremo come possiamo effettivamente ottimizzare il livello di scorte a livello di negozio. Inoltre, attraverso l’analisi delle previsioni probabilistiche, possiamo anche affrontare nuove categorie di supply chain problems, come l’uniformazione del flusso di inventario dai centri di distribuzione ai negozi per ottimizzare e ridurre il costo operativo della rete.
Questa lezione apre il sesto capitolo di questa serie, dedicato alle tecniche e ai processi decisionali nel contesto della supply chain. Vedremo che le decisioni devono essere ottimizzate considerando l’intera rete della supply chain, come un sistema integrato, anziché eseguire una serie di ottimizzazioni locali isolate. Per esempio, adottare una prospettiva ristretta sull’SKU (unità di gestione delle scorte).
Il primo passo per affrontare le decisioni di supply chain è identificare quelle decisioni effettive. Una decisione di supply chain ha un impatto diretto, fisico e tangibile sulla supply chain. Per esempio, spostare un’unità di stock dal centro di distribuzione a un negozio è reale; non appena lo fai, c’è un’unità in più sugli scaffali del negozio e un’unità in meno dal centro di distribuzione, che non può essere riallocata altrove.
Al contrario, un artefatto non ha un impatto fisico diretto e tangibile sulla supply chain. Un artefatto è tipicamente un passaggio intermedio di calcolo che alla fine conduce a una decisione di supply chain, oppure è una stima statistica di qualche proprietà di una parte del sistema della supply chain. Purtroppo, non posso fare a meno di osservare molta confusione nella letteratura sulla supply chain quando si tratta di distinguere tra decisioni e artefatti.
Attenzione, i ritorni sugli investimenti si ottengono esclusivamente attraverso il miglioramento delle decisioni. Migliorare gli artefatti è quasi sempre inconcludente, e questo è il meglio. Nel peggiore dei casi, se un’azienda spende troppo tempo a migliorare gli artefatti, questo diventa una distrazione che impedisce di migliorare le effettive decisioni di supply chain. Sullo schermo è riportata una lista di confusione che osservo frequentemente nei circoli mainstream della supply chain.
Per esempio, cominciamo con lo safety stock. Questo stock non è reale; non esistono due scorte, lo safety stock e lo stock operativo. Esiste una sola scorta, e l’unica decisione che si può prendere è se sia necessaria una quantità aggiuntiva oppure no. Riapprovvigionare una quantità è reale, ma lo safety stock non lo è. Analogamente, il service level non è reale. Il service level dipende fortemente dal modello. Infatti, nella domanda retail, i dati di vendita sono scarsi. Così, se consideri uno specifico SKU, tipicamente hai dati troppo pochi per calcolare un service level significativo semplicemente ispezionando l’SKU. L’approccio al service level avviene attraverso tecniche di modellizzazione e stime statistiche, che vanno bene, ma ancora una volta si tratta di un artefatto e non della realtà. Questa è letteralmente una prospettiva matematica che si ha sulla supply chain.
Allo stesso modo, push o pull è anche una questione di prospettiva. Una ricetta numerica appropriata che tiene conto dell’intera rete della supply chain considererà solo l’opportunità di spostare un’unità di stock da un’origine verso una destinazione. Ciò che è reale è il movimento delle scorte; ciò che è solo una questione di prospettiva è se attivare o meno questo movimento in base alle condizioni relative all’origine o alla destinazione. Questo definirà push o pull, ma è, nel migliore dei casi, una minore formalità tecnica della ricetta numerica e non rappresenta la realtà fondamentale della supply chain.
Il dead stock è essenzialmente una stima delle scorte a rischio di subire una svalutazione dell’inventario nel prossimo futuro. Dal punto di vista del cliente, non esiste una distinzione tra scorte morte e scorte vive. Entrambi sono prodotti che potrebbero non essere altrettanto attraenti, ma il dead stock è semplicemente una certa valutazione del rischio associata alle tue scorte. Va bene, ma questo non dovrebbe essere confuso con le svalutazioni d’inventario, che sono definitive e indicano che il valore è stato perso.
Analogamente, il trend al ribasso è anche un ingrediente matematico che può esistere nel modo in cui modelli la domanda osservata. Tipicamente sarà un fattore dipendente dal tempo introdotto nel modello della domanda, come una dipendenza lineare dal tempo o forse una dipendenza esponenziale dal tempo. Tuttavia, questa non è la realtà. La realtà potrebbe essere che il tuo business sta diminuendo a causa della perdita di clienti, quindi il churn è, tra le altre possibilità, la realtà della supply chain. Il trend al ribasso è semplicemente un artefatto che puoi usare per aggregare il modello.
Allo stesso modo, nessun fornitore ti venderà nulla al prezzo medio di acquisto. L’unica realtà è che componi un ordine di acquisto, scegli le quantità, e in base alle quantità scelte, potrai usufruire di sconti sui prezzi che i tuoi fornitori possono offrire. Otterrai prezzi di acquisto basati su quegli sconti e su quanto negozi in aggiunta. Il prezzo medio di acquisto non è reale, quindi fai attenzione a non commettere errori introducendo questi artefatti numerici come se possedessero una verità fondamentale.
Infine, la classificazione ABC, che va dai best seller ai prodotti a lenta rotazione, è solo una classificazione banale, guidata dal volume, delle SKU o dei prodotti che possiedi. Queste classi non sono attributi reali. In genere, la metà dei prodotti cambia da una classe ABC all’altra da un trimestre all’altro, eppure nulla cambia davvero agli occhi dei clienti o del mercato per quei prodotti. È semplicemente un artefatto numerico applicato al prodotto e non dovrebbe essere confuso con attributi profondamente rilevanti, come il fatto che un prodotto faccia parte di un marchio di distributore. Questo è un vero attributo fondamentale del prodotto che ha conseguenze di vasta portata per la tua supply chain. In questo capitolo, dovrebbe diventare sempre più chiaro perché è imperativo concentrarsi sulle decisioni di supply chain, anziché sprecare tempo e risorse sugli artefatti numerici.
Quando si pronuncia la parola “ottimizzazione”, la prospettiva abituale che viene in mente per un pubblico ben istruito è la prospettiva dell’ottimizzazione matematica. Dato un insieme di variabili e una funzione di loss, l’obiettivo è identificare i valori delle variabili che minimizzano la funzione di loss. Sfortunatamente, questo approccio funziona male nella supply chain perché presuppone che le variabili rilevanti siano note, cosa che di solito non è il caso. Anche quando lo sono, ci sono molte variabili, come i dati meteorologici, che si sa avere un impatto sulla tua supply chain ma che comportano molti costi se desideri acquisirli. Quindi, non è chiaro se valga la pena sforzarsi per acquisirli per ottimizzare la supply chain.
Ancor più problematico è il fatto che la funzione di loss stessa è in gran parte sconosciuta. La funzione di loss può essere stimata in qualche modo, ma solo il confronto tra la loss e il feedback del mondo reale che puoi ottenere dalla tua supply chain ti fornirà informazioni valide sull’adeguatezza di questa funzione di loss. Non si tratta di correttezza da una prospettiva matematica; si tratta di adeguatezza. Questa funzione di loss, che è una costruzione matematica, riflette adeguatamente ciò che stai cercando di ottimizzare per la tua supply chain? Abbiamo affrontato questo enigma dell’ottimizzazione in assenza di variabili e di una funzione di loss definita nella Lezione 2.2, intitolata “Ottimizzazione Sperimentale.” La prospettiva dell’ottimizzazione sperimentale afferma che il problema non è dato; il problema deve essere scoperto attraverso esperimenti iterativi ripetuti. La prova della correttezza della funzione di loss e delle sue variabili emerge non come una proprietà matematica ma attraverso una serie di osservazioni guidate da esperimenti ben scelti provenienti dalla stessa supply chain. L’ottimizzazione sperimentale sfida profondamente il nostro modo di vedere l’ottimizzazione, e questa è la prospettiva che adotterò in questo capitolo. Gli strumenti e le tecniche che introdurrò qui sono orientati verso la prospettiva dell’ottimizzazione sperimentale.
In ogni momento, la ricetta numerica che abbiamo può essere dichiarata obsoleta, e può essere sostituita da un’alternativa che si ritenga più allineata con la supply chain che possediamo. Quindi, in ogni momento, dovremmo essere in grado di mettere in produzione la ricetta numerica attuale ed eseguire il processo di ottimizzazione su larga scala. Per esempio, non possiamo dire di aver identificato la funzione di loss e poi mettere un team di data scientists a occuparsene per tre mesi per ingegnerizzare alcune tecniche di ottimizzazione software. Invece, ogni volta che abbiamo una nuova ricetta, dovremmo essere in grado di metterla direttamente in produzione e far beneficiare immediatamente le decisioni di supply chain da questa nuova identificazione del problema.
Questa lezione fa parte di una serie di lezioni sulla supply chain. Cerco di mantenere queste lezioni in qualche modo indipendenti, ma abbiamo superato il punto in cui ha più senso guardarle in sequenza. Se non hai visto le lezioni precedenti, dovrebbe andare bene, ma questa serie probabilmente avrà più senso se la guardi nell’ordine in cui è stata presentata.
Nel primo capitolo, ho presentato le mie opinioni sulla supply chain sia come campo di studio che come pratica. Nel secondo capitolo, ho presentato una serie di metodologie essenziali per affrontare le sfide della supply chain, inclusa l’ottimizzazione sperimentale. Queste metodologie sono necessarie a causa della natura avversariale della maggior parte dei problemi della supply chain. Nel terzo capitolo, mi sono concentrato sui problemi stessi, anziché sulle soluzioni. Nel quarto capitolo, ho presentato una serie di campi che non sono esattamente la supply chain in quanto tale – le scienze ausiliarie della supply chain – che sono essenziali per una pratica moderna della supply chain. Nel quinto capitolo, ho presentato una serie di tecniche di modellazione predittiva, in particolare le previsioni probabilistiche, che sono essenziali per affrontare l’incertezza irriducibile del futuro.
Oggi, in questa prima lezione del sesto capitolo, ci immergiamo nelle tecniche decisionali. La letteratura scientifica ha fornito un’abbondanza di tecniche decisionali e algoritmi negli ultimi sette decenni, dal dynamic programming negli anni ‘50 al reinforcement learning e persino al deep reinforcement learning. La sfida, tuttavia, è ottenere risultati di livello produzione per la supply chain. Infatti, la maggior parte di queste tecniche soffre di difetti nascosti che le rendono impraticabili per scopi della supply chain per una ragione o per l’altra. Oggi, ci concentriamo sul problema dell’allocazione delle scorte retail come archetipo di una decisione della supply chain. Questa lezione spiana la strada per decisioni e situazioni più complesse.
Sullo schermo c’è il sommario della lezione di oggi. Anche considerando il problema più semplice della supply chain, l’allocazione delle scorte retail, abbiamo parecchio da coprire. Questi elementi rappresentano i mattoni per situazioni più complesse. Inizierò ripercorrendo il manifesto della quantitative supply chain. Poi, chiarirò cosa intendo per problema dell’allocazione delle scorte retail. Esamineremo anche le forze economiche presenti in questo problema. Riprenderò il concetto di previsioni probabilistiche e come le rappresentiamo effettivamente, o almeno una delle opzioni per rappresentarle. Vedremo come modellare la decisione raffinando la previsione e affinando le opzioni, che sono le possibili decisioni candidate.
Successivamente introdurremo la funzione di ricompensa per le scorte. Questa funzione può essere vista come un quadro minimo per convertire una previsione probabilistica in un punteggio economico che può essere associato a ogni opzione di allocazione delle scorte, tenendo conto di una serie di fattori economici. Una volta che le opzioni sono valutate, possiamo procedere con una lista di priorità. Una lista di priorità è apparentemente semplice ma si dimostra incredibilmente potente e pratica nelle supply chain reali, sia in termini di stabilità numerica che di caratteristiche di white-boxing.
Con la lista di priorità, possiamo quasi senza sforzo levigare il flusso di inventario dal centro di distribuzione ai negozi, riducendo il costo operativo del centro di distribuzione. Infine, esamineremo brevemente la funzione di ricompensa per l’azione, che al giorno d’oggi sostituisce la funzione di ricompensa per le scorte presso Lokad in praticamente ogni dimensione, tranne la semplicità.
Il manifesto della quantitative supply chain è un documento che ho pubblicato originariamente nel 2017. Questa prospettiva è stata ampiamente trattata nella Lezione 1.2, ma per chiarezza fornirò oggi un breve riepilogo. Ci sono cinque pilastri, ma solo i primi tre sono rilevanti per noi oggi. I primi tre pilastri sono:
Considerare tutti i futuri possibili, il che significa previsioni probabilistiche oltre a prevedere tutti gli altri elementi con un aspetto di incertezza, come variazioni dei lead times o prezzi futuri. Considerare tutte le decisioni fattibili, concentrandosi sulle decisioni e non sugli artefatti. Dare priorità con i driver economici, che è l’argomento della lezione di oggi.
In particolare, vedremo come possiamo convertire le previsioni probabilistiche in stime dei rendimenti economici.
Nel problema dell’allocazione delle scorte retail. Questa è una definizione che sto proponendo; è alquanto arbitraria, ma questa è la definizione che userò oggi. Si assume una rete con due livelli: abbiamo un centro di distribuzione e molteplici negozi. Il centro di distribuzione serve tutti i negozi, e se ci sono più centri di distribuzione, assumiamo che un negozio sia servito da un solo centro di distribuzione. L’obiettivo è allocare correttamente le scorte presenti nel centro di distribuzione tra i negozi, e tutti i negozi competono per le stesse scorte.
Si assume che tutti i negozi possano essere riforniti quotidianamente con un programma giornaliero dal centro di distribuzione. Pertanto, ogni singolo giorno, dobbiamo decidere quante unità spostare per ogni prodotto verso ciascun negozio. La quantità totale di unità spostate non può superare le scorte disponibili nel centro di distribuzione, ed è anche ragionevole aspettarsi che esistano limiti di capacità degli scaffali dei negozi. Se il centro di distribuzione avesse scorte illimitate, il problema degenererebbe in una single-echelon supply chain, poiché non ci sarebbe mai necessità di fare alcun tipo di arbitraggio o compromesso nell’allocare le scorte a un negozio o a un altro. La caratteristica a due livelli della rete emerge solo dal fatto che i negozi competono per le stesse scorte.
Naturalmente, assumeremo la visibilità sulle vendite dei negozi e sui livelli di scorte sia a livello del centro di distribuzione che a livello dei negozi, il che significa che i dati transazionali sono disponibili. Assumeremo anche che le consegne in arrivo al centro di distribuzione siano note con tempi stimati di arrivo (ETA), che possono presentare un certo grado di incertezza. Inoltre, assumiamo che tutte le informazioni banali ma critiche siano disponibili, come il prezzo d’acquisto del prodotto, il prezzo di vendita, le categorie di prodotto, ecc. Tutte queste informazioni si trovano in qualsiasi ERP, anche uno vecchio di tre decenni, così come nei sistemi WMS e nei sistemi point-of-sale.
Oggi non includiamo il rifornimento del centro di distribuzione (DC) come parte del problema. In pratica, il rifornimento del centro di distribuzione e le allocazioni nei negozi sono strettamente collegati, per cui ha senso affrontare insieme questi problemi. Il motivo per cui non lo faccio oggi è per chiarezza e concisione in questa lezione; affronteremo prima il problema più semplice. Tuttavia, si noti che l’approccio che sto presentando oggi può essere esteso naturalmente per includere anche il rifornimento del DC.
Decidere di spostare una unità in più di scorte in un negozio per un determinato prodotto in un determinato giorno dipende da una serie di forze economiche. Se spostare l’unità è redditizio, lo faremo; altrimenti, non lo faremo. Le principali forze economiche sono elencate sullo schermo e, in sostanza, aumentare le scorte in un negozio comporta una serie di benefici. Questi includono un maggiore margine lordo grazie all’evitare vendite perse, una migliore qualità del servizio riducendo il numero di stockouts e un aumento dell’attrattività del negozio. Infatti, affinché un negozio sia attraente, deve apparire ben fornito; altrimenti, sembra scarso e la gente potrebbe essere meno propensa ad acquistare. Questa è un’osservazione comune nel retail, sebbene non si applichi necessariamente a tutti i segmenti, come il lusso estremo. Per i negozi di merce di largo consumo o di moda, tuttavia, questa considerazione è valida.
Sfortunatamente, aumentare le scorte comporta anche degli svantaggi, riducendo il rendimento che ci si potrebbe aspettare dall’avere maggiori scorte nel negozio. Questi svantaggi includono costi aggiuntivi di mantenimento, che possono tradursi in svalutazioni dell’inventario se si verifica un vero surplus di scorte. Vi è anche il rischio di sovraccarico in entrata, che si verifica se il personale del negozio non riesce a processare una spedizione troppo grande. Ciò crea confusione e disordine nel negozio se la quantità consegnata supera quella che il personale può esporre sugli scaffali. Inoltre, c’è un costo opportunità: ogni volta che un’unità viene collocata in un negozio, non può essere assegnata a un altro. Pur potendo essere riportata al centro di distribuzione e inviata nuovamente, ciò risulta generalmente molto costoso, perciò rappresenta di solito l’ultima opzione. I rivenditori dovrebbero mirare a un’allocazione efficiente nei negozi senza dover rimandare indietro le scorte.
Alleviare il flusso delle scorte è inoltre altamente auspicabile. Un centro di distribuzione (DC) ha una capacità nominale alla quale opera con la massima efficienza economica. Questa efficienza di picco è determinata dalla configurazione fisica del DC e dal numero di personale permanente ad esso assegnato. Idealmente, il DC dovrebbe operare quotidianamente, rimanendo molto vicino alla sua capacità nominale per essere il più efficiente in termini di costi. Tuttavia, mantenere l’efficienza di picco al centro di distribuzione richiede di levigare il flusso dal DC ai negozi. La prospettiva economica diverge dalle tradizionali prospettive orientate al livello di servizio spesso riscontrabili nella letteratura mainstream della supply chain. Noi miriamo a ottenere ritorni in dollari, non in punti percentuali. L’unico modo per decidere se è ragionevole modificare lo schema di allocazione delle scorte a livello di rete per ridurre i costi operativi, a fronte di una lieve degradazione della qualità del servizio nei negozi, è adottare la prospettiva economica presentata qui. Se si adotta una prospettiva basata sul livello di servizio, non si ottengono risposte di questo tipo. Il nostro obiettivo è stabilire delle ricette numeriche che stimino gli esiti economici per ogni decisione di allocazione delle scorte.
Nel capitolo precedente, il quinto capitolo, abbiamo discusso di come produrre previsioni probabilistiche e abbiamo introdotto un tipo di dato specializzato, il “ranvar”, che rappresenta distribuzioni di probabilità discrete monodimensionali. In breve, un ranvar è un tipo di dato specializzato usato per rappresentare una semplice previsione probabilistica monodimensionale in Envision.
Envision è un linguaggio di programmazione domain-specific sviluppato da Lokad con lo scopo esclusivo di ottimizzazione predittiva delle supply chain. Sebbene in queste lezioni non ci sia nulla di fondamentalmente unico in Envision, lo usiamo per chiarezza e concisione nella presentazione. Le ricette numeriche descritte oggi possono essere implementate in qualsiasi linguaggio, come Python, Julia o Visual Basic.
L’aspetto chiave del ranvar è che fornisce un’algebra ad alte prestazioni delle variabili casuali. La performance è un equilibrio tra il costo computazionale, il costo della memoria e il grado di approssimazione numerica che si è disposti a tollerare. La performance di calcolo è fondamentale quando si tratta di reti retail, poiché possono esserci milioni o addirittura decine di milioni di SKU, ognuno probabilmente dotato di almeno una previsione probabilistica o ranvar. Di conseguenza, si può finire con milioni o decine di milioni di istogrammi.
La proprietà chiave del ranvar, rispetto a un istogramma, è mantenere sia il costo CPU che quello di memoria limitati e il più basso possibile. È inoltre cruciale garantire che l’approssimazione numerica introdotta rimanga irrilevante dal punto di vista della supply chain. È importante notare che non stiamo trattando di calcolo scientifico, ma di calcolo applicato alla supply chain. Sebbene i calcoli numerici debbano essere precisi, non è necessaria un’estrema precisione. Tenete presente che non stiamo facendo calcolo scientifico; stiamo facendo calcolo per la supply chain. Se avete un’approssimazione di una parte per miliardo, essa risulta irrilevante dal punto di vista della supply chain. I calcoli numerici devono essere precisi, ma non è necessaria un’estrema precisione.
Di seguito, assumiamo che la previsione probabilistica sarà fornita sotto forma di ranvars, che sono una serie di variabili con un tipo di dato specifico. In pratica, è possibile sostituire i ranvars con istogrammi ottenendo fondamentalmente lo stesso risultato, ad eccezione degli aspetti relativi alle prestazioni e alla comodità.
Ora che abbiamo le nostre previsioni probabilistiche, consideriamo come affronteremo le decisioni. Iniziamo considerando le opzioni. Le opzioni sono le decisioni potenziali – per esempio, allocare zero unità di un determinato prodotto in un dato negozio in un certo giorno oppure allocare una, due o tre unità. Se decidiamo di allocare due unità, quella diventa la nostra decisione. Le opzioni sono tutte le possibilità sul tavolo in attesa di essere decise.
Un modo semplice per organizzare queste opzioni è inserirle in una lista, come mostrato sullo schermo. La lista copre più SKU, e per ogni SKU si aggiunge una riga per ogni opzione. Ogni opzione rappresenta una quantità da allocare. Si può allocare zero, una, due, tre, e così via. In realtà, non è necessario procedere all’infinito; ci si può fermare alla quantità di scorte disponibile nel centro di distribuzione. Più realisticamente, di solito si ha anche un limite superiore, come la capacità massima degli scaffali per quel prodotto nel negozio.
Quindi, hai una lista che comprende ogni SKU, e per ogni SKU hai tutte le quantità che possono essere considerate come candidati per l’allocazione dal centro di distribuzione. La colonna del punteggio è associata all’esito marginale che ci si aspetta facendo questa allocazione. Un punteggio ben progettato garantisce che, selezionando le righe in ordine decrescente di punteggio, si ottimizzi l’esito economico per la rete retail.
Per i due SKU mostrati sullo schermo, il punteggio diminuisce all’aumentare dell’allocazione, illustrando il fenomeno dominante dei rendimenti decrescenti osservato per la maggior parte degli SKU. Essenzialmente, inserire la prima unità in un negozio genera quasi sempre maggiori ritorni rispetto alla seconda. La prima unità che inserisci in un negozio è quasi sempre più redditizia della seconda. Inizialmente, non hai nulla, quindi ti trovi in una situazione di stock-out. Se inserisci una unità, hai già risolto il problema di stock-out per il primo cliente. Se inserisci una seconda unità, il primo cliente starà bene, ma è solo se si presentano due clienti che la seconda unità sarà utile, con un conseguente ritorno economico minore. Tuttavia, i rendimenti tendono generalmente a diminuire all’aumentare delle scorte. Esistono alcune eccezioni in cui i ritorni economici potrebbero non diminuire strettamente da una riga all’altra, ma riprenderò questo caso in una lezione successiva. Per ora, ci atterremo alla situazione semplice in cui i rendimenti diminuiscono in modo costante all’aumentare delle scorte.
La rappresentazione che abbiamo, in cui possiamo vedere tutti gli SKU e le opzioni, è tipicamente definita come una griglia. L’intento è ordinare questa griglia in base a un ROI (return on investment) decrescente. Non c’è niente di sbagliato in queste griglie in sé, ma non sono molto efficienti, soprattutto in termini di calcolo o di memoria, e non offrono alcun supporto oltre a essere una grande tabella. Ricordate che stiamo parlando di una rete retail, e questa griglia potrebbe finire per avere circa un miliardo di righe. I big data vanno bene, ma i dati più piccoli sono migliori, poiché creano meno attrito e permettono maggiore agilità. Vogliamo cercare di trasformare il nostro problema di big data in un problema di small data, poiché dati più piccoli rendono tutto più semplice in produzione.
Dunque, una delle soluzioni adottate da Lokad per gestire un grande numero di opzioni è zedfuncs. Questo tipo di dato, proprio come i ranvars, è il corrispettivo di ranvar ma dalla prospettiva decisionale. I ranvars rappresentano tutti i possibili futuri, mentre gli zedfuncs rappresentano tutte le possibili decisioni. Invece di rappresentare probabilità come i ranvars, uno zedfunc rappresenta tutti gli esiti economici associati a una serie discreta unidimensionale di opzioni.
Lo zedfunc, o zedfunction, è tecnicamente una funzione che mappa interi, sia positivi che negativi, in valori reali. Questa è la definizione tecnica. Tuttavia, proprio come per i ranvars, non è possibile rappresentare una funzione arbitraria o complessa come gli zedfuncs con una quantità finita di memoria. In questo caso, bisogna anche fare un compromesso tra precisione e risoluzione.
Nel supply chain management, funzioni economiche arbitrariamente complesse non esistono. Puoi avere funzioni di costo abbastanza complesse, ma non possono essere arbitrariamente complesse. In pratica, è possibile comprimere gli zedfuncs sotto i quattro kilobyte. Facendo così, hai un tipo di dato che rappresenta l’intera funzione di costo e la comprime in modo da rimanere sempre inferiore a quattro kilobyte mantenendo il grado di approssimazione numerica inconsequenziale dal punto di vista della supply chain. Se mantieni l’approssimazione numerica così piccola da non cambiare la decisione finale che stai per prendere, che è discreta, allora l’approssimazione numerica può essere considerata completamente inconsequenziale perché finisci per fare la stessa cosa alla fine, anche se avessi precisione infinita.
La ragione per usare quattro kilobyte è legata all’hardware di calcolo. Come abbiamo visto in una lezione precedente sull’hardware di calcolo moderno per il supply chain management, la memoria ad accesso casuale (RAM) in un computer moderno, sia esso una workstation, un notebook o un computer nel cloud, non ti permette di accedere alla memoria byte per byte. Appena tocchi la RAM, viene recuperato un segmento di quattro kilobyte. Pertanto, è meglio mantenere la quantità di dati al di sotto di quattro kilobyte perché si abbina al modo in cui l’hardware è progettato e opera per la tua supply chain.
L’algoritmo di compressione usato da Lokad per gli zedfuncs differisce da quello usato per i ranvars perché non stiamo affrontando gli stessi problemi numerici. Per i ranvars, ci interessa principalmente preservare la massa delle probabilità dei nostri segmenti contigui. Per uno zedfunc, l’attenzione è diversa. Tipicamente vogliamo preservare la quantità di variazione osservata da una posizione all’altra perché è con questa variazione che possiamo decidere se si tratta dell’ultima opzione redditizia o se dovremmo fermarci. Pertanto, anche l’algoritmo di compressione è diverso.
Sullo schermo, puoi vedere un grafico ottenuto per uno zedfunc che riflette alcuni costi di carrying attesi che dipendono dal numero di unità in stock. Gli zedfuncs beneficiano dell’essere uno spazio vettoriale, il che significa che possono essere sommati e sottratti, proprio come lo spazio vettoriale classico associato alle funzioni. Preservando la località della memoria, le operazioni possono essere eseguite un ordine di grandezza più velocemente rispetto a un’implementazione a griglia ingenua in cui hai una tabella molto grande senza una struttura dati specifica per catturare la località delle opzioni che interagiscono tra loro.
Il grafico che hai visto nella slide precedente è stato generato da uno script. Alle linee uno e due, dichiariamo due funzioni lineari, f e g. La funzione “linear” fa parte della libreria standard, e “linear of one” è semplicemente la funzione identità, un polinomio di primo grado. La funzione “linear” restituisce uno zedfunc, ed è possibile aggiungere una costante a uno zedfunc. Abbiamo due polinomi di primo grado, f e g. Alla linea tre, costruiamo un polinomio di secondo grado attraverso il prodotto di f e g. Le linee dalla 5 alla 10 sono utility, essenzialmente boilerplate, per tracciare lo zedfunc.
A questo punto, abbiamo il nostro contenitore di dati per lo zedfunc e gli esiti economici. Lo zedfunc è un contenitore di dati, proprio come lo era il ranvar per la previsione probabilistica. Tuttavia, abbiamo ancora bisogno di ricette numeriche per calcolare quegli esiti economici. Abbiamo il contenitore di dati, ma non ho ancora descritto come calcoliamo quegli esiti economici e riempiamo gli zedfuncs.
La funzione di ricompensa di stock è un piccolo framework destinato a calcolare i rendimenti economici per ogni livello di stock di un singolo SKU, considerando una previsione probabilistica e una breve serie di fattori economici. La funzione di ricompensa di stock è stata storicamente introdotta da Lokad per unificare le nostre pratiche. Già nel 2015, Lokad lavorava da un paio d’anni con previsioni probabilistiche, e attraverso tentativi ed errori avevamo già scoperto una serie di ricette numeriche che funzionavano bene. Tuttavia, non erano realmente unificate; era un po’ un caos. La funzione di ricompensa di stock ha consolidato tutte quelle intuizioni dell’epoca in un framework pulito, ordinato e minimalista. Dal 2015, sono stati sviluppati metodi migliori, ma anche più complessi. Per chiarezza, è ancora meglio partire dalla funzione di ricompensa di stock e presentare questa funzione per prima.
La funzione di ricompensa di stock riguarda fondamentalmente il trovare una ricetta numerica che ci fornisca un calcolo degli esiti economici associati a quelle previsioni probabilistiche. La funzione di ricompensa di stock obbedisce all’equazione che puoi vedere sullo schermo, e definisce i rendimenti economici al tempo t che puoi ottenere per lo stock disponibile, k. La variabile R rappresenta il rendimento economico, espresso in unità come dollari o euro. La funzione ha due variabili: il tempo (t) e lo stock disponibile (k). Vogliamo calcolare questo rendimento per tutti i possibili livelli di stock.
Ci sono quattro variabili economiche da considerare:
M è il margine lordo per unità venduta. È il margine che guadagnerai servendo con successo un’unità. S è la penalità di stockout, una sorta di costo virtuale che subisci ogni volta che non riesci a servire un’unità a un cliente. Anche se non devi pagare una penalità al tuo cliente, esiste un costo associato al fallimento nel fornire un servizio adeguato, e questo costo deve essere modellato. Uno dei modi più semplici per modellare questo costo è assegnare una penalità per ogni unità che non riesci a servire. C è il costo di carrying, il costo per unità per periodo di tempo. Se hai un’unità in stock per tre periodi, ciò equivale a tre volte C; se hai due unità in stock per tre periodi, equivale a sei volte C. Alpha viene usato per attualizzare i rendimenti futuri. L’idea è che ciò che accade in un futuro lontano conta meno di ciò che sta per accadere nel prossimo futuro. La funzione di ricompensa di stock è semplice quanto basta senza essere eccessivamente semplificata. L’equazione indica che se la domanda supera lo stock disponibile, il rendimento include il margine per tutto lo stock che possediamo.
Questo è ciò che dice la prima linea: abbiamo k margini, quindi vendiamo tutte le unità che abbiamo, e poi subiamo una penalità pari a Y(t) - k per tutte le unità che non siamo riusciti a servire.
Altrimenti, se lo stock disponibile supera la domanda, possiamo beneficiare di Y(t) volte M, che rappresenta il margine di ciò che abbiamo venduto oggi. Poi, dobbiamo pagare i costi di carrying. I costi di carrying per oggi saranno ciò che rimane alla fine della giornata, ovvero (k - Y(t)) per C, più alpha volte la funzione di ricompensa di stock R* per il giorno successivo.
C’è un’eccezione con R*. È quasi identica alla funzione di ricompensa di stock R, tranne per il fatto che impostiamo la penalità di stockout a zero. La ragione è semplice: assumiamo, dal punto di vista dello stock, che avremo ulteriori opportunità per reintegrare lo stock. Se osserviamo uno stockout oggi, è troppo tardi, quindi subiamo la penalità di stockout. Tuttavia, una penalità di stockout che si prevede accada domani è considerata evitabile.
Tuttavia, una penalità di stockout destinata ad accadere in futuro, in un periodo successivo, si presuppone che il reintegro possa avvenire in ogni periodo. Quindi, per lo stockout che si verificherebbe in un periodo successivo, quando abbiamo ancora tempo per fare un ordine tardivo, lo stockout non si è ancora verificato. Abbiamo ancora l’opportunità di farlo, ed è per questo che impostiamo la penalità di stockout a zero, perché prevediamo che ci sarà, si spera, un altro riordino che impedirà lo stockout.
Il fattore di sconto temporale alpha è molto utile perché essenzialmente elimina la necessità di specificare un orizzonte temporale definito. La funzione di ricompensa di stock non funziona con un orizzonte temporale finito; si proietta all’infinito. Grazie ad alpha, che è un valore strettamente minore di uno, gli esiti economici associati a eventi in un futuro molto lontano diventano trascurabilmente piccoli, tanto da risultare inconsequenziali. Non abbiamo alcun tipo di limite, che sarebbe sempre arbitrario, come tagliare l’orizzonte della tua supply chain a 60 giorni, 90 giorni, un anno o due anni.
In Envision, la funzione di ricompensa di stock prende in input un ranvar e restituisce uno zedfunc. La funzione di ricompensa di stock è un piccolo blocco costitutivo che trasforma una previsione probabilistica (un ranvar) in uno zedfunc, che è un contenitore per i rendimenti economici stimati su una serie di opzioni. Come dice il nome, la funzione di ricompensa di stock è il rendimento economico associato a ogni singola posizione di stock: cosa succede se ho zero unità in stock, una unità in stock, due unità, tre unità, e così via. Lo zedfunc rifletterà gli esiti economici per ogni livello di stock, codificando il rendimento economico associato al corrispondente livello di stock.
Il processo per calcolare questi zedfuncs è illustrato sullo schermo. Alla linea 1, introduciamo una domanda simulata per un singolo giorno, che è semplicemente una distribuzione di Poisson casuale. Dalle linee 2 a 7, introduciamo le variabili economiche, e a proposito, abbiamo due alpha. C’è un’altra particolarità: abbiamo un effetto a cricchetto sull’inventario. Una volta che lo stock è stato spinto verso il negozio, di solito è molto costoso riportare lo stock indietro. Questo riflette il fatto che qualsiasi allocazione fatta a un negozio è praticamente definitiva. In termini di costi di carrying, l’alpha non dovrebbe essere troppo piccolo, perché incorreremo veramente in quei costi di carrying se sovraccarichiamo lo stock. Non possiamo annullare questa decisione. Tuttavia, per quanto riguarda l’alpha relativo al margine, la realtà è che, proprio come avremo altre opportunità per affrontare futuri stockout, avremo altre opportunità per portare più stock ed ottenere lo stesso margine con stock spinto in una data successiva. Pertanto, dobbiamo attualizzare in modo molto più aggressivo ciò che accade sul lato del margine rispetto a ciò che accade sul lato del costo di carrying.
Alle linee 9 a 11, introduciamo la funzione di ricompensa di stock stessa. Questa funzione, la funzione di ricompensa di stock che ho introdotto nella slide precedente, può essere decomposta linearmente nelle sue tre componenti, che affrontano rispettivamente il margine, il costo di carrying e la penalità di stockout separatamente. Infatti, abbiamo una separazione lineare, e in Envision, queste tre componenti vengono calcolate separatamente. Possiamo moltiplicare lo zedfunc per il fattore M, che rappresenterebbe il margine lordo.
Alle linee 13 a 15, il rendimento finale viene riformulato aggiungendo le tre componenti economiche. In questo script, sfruttiamo il fatto di disporre di uno spazio vettoriale di zedfuncs. Questi zedfuncs non sono numeri; sono funzioni. Ma possiamo sommarli, e il risultato dell’addizione è un’altra funzione, che è anch’essa uno zedfunc. La variabile reward è il risultato dell’addizione di queste tre componenti. Sotto il cofano, il calcolo della funzione di ricompensa di stock viene effettuato attraverso un’analisi a punto fisso, che può essere eseguita in tempo costante per ogni componente. Questo calcolo in tempo costante potrebbe sembrare una minor technicalità, ma quando si ha a che fare con una vasta rete di vendita al dettaglio, fa la differenza tra un prototipo sofisticato e una soluzione a livello di produzione.
Ora, a questo punto, abbiamo consolidato tutti gli ingredienti necessari per affrontare il problema dell’allocazione dello stock. Abbiamo previsioni probabilistiche espresse come ranvars, una tecnica per trasformare questi ranvars in una funzione che fornisce i rendimenti economici per qualsiasi valore di stock disponibile, e tali esiti economici possono essere comodamente rappresentati come zedfuncs. Per affrontare finalmente il problema dell’allocazione dello stock, dobbiamo rispondere alla domanda chiave: se possiamo spostare una sola unità di stock, quale spostiamo e perché? Tutti i negozi nella rete competono per lo stesso stock nel centro di distribuzione, e la qualità della decisione di spostare un’unità di stock dal centro di distribuzione a un negozio specifico dipende dallo stato complessivo della rete. Non puoi valutare se questa decisione sia buona guardando solamente un negozio.
Per esempio, supponiamo di avere un negozio con già due unità in stock, e se aggiungiamo una terza unità, stiamo aumentando il livello di servizio atteso dall'80% al 90%. Questo è buono, e forse altri all’interno della rete sarebbero d’accordo con l’idea di portare un’unità extra in modo che il livello di servizio possa passare dall'80 al 90. Sembra molto ragionevole, quindi direbbero che è una mossa vantaggiosa. Tuttavia, cosa succede se questa unità che stiamo per spostare, questa terza unità, è in realtà l’ultima disponibile nel centro di distribuzione? Abbiamo un altro negozio nella rete che sta già soffrendo di stockout, e se spostiamo questa unità nel negozio in cui diventa la terza unità, prolunghiamo lo stockout per il negozio che è già a corto dello stesso prodotto. In questa situazione, è quasi certo che spostare l’unità nel negozio già in stockout sia una decisione migliore e debba avere priorità maggiore.
Ecco perché non ha senso valutare economicamente i livelli di stock a livello di SKU. Il problema delle ottimizzazioni locali è che non funzionano se operi in sistemi più grandi. Nel supply chain, se affronti le cose localmente, sposti semplicemente i problemi; non risolvi nulla. L’adeguatezza di un livello di stock di un SKU dipende dallo stato della rete. Questo semplice esempio chiarisce perché i calcoli di safety stock o i calcoli del reorder point sono per lo più insensati, almeno per le situazioni del mondo reale, rispetto agli esempi da manuale presenti nei testi di supply chain.
Qui, vogliamo davvero dare priorità a tutte le allocazioni di stock l’una rispetto all’altra, e l’opzione che risulta essere la migliore è la risposta alla nostra domanda: questa sarà l’unica unità che dovrebbe essere spostata se possiamo spostare una sola unità.
La classificazione delle opzioni di allocazione dello stock è relativamente semplice con gli strumenti adeguati. Rivediamo questo script di Envision. Alla riga 1, creiamo tre SKU denominati A, B e C. Alla riga 2, generiamo dei prezzi d’acquisto casuali compresi tra 1 e 10 come dati fittizi. Alla riga 3, generiamo dei zedfunc fittizi che dovrebbero rappresentare il ritorno per ciascuno di questi SKU. In pratica, un zedfunc dovrebbe essere calcolato con la funzione di rendimento dello stock, ma per mantenere il codice conciso, utilizziamo dati fittizi. Il ritorno è una funzione lineare decrescente che annulla al livello di stock 6. Alla riga 4, creiamo una tabella G, abbreviazione per la griglia che rappresenta i livelli di stock disponibili. Presumiamo che i livelli di stock superiori a 10 non valgano la pena di essere valutati. Questa ipotesi è ragionevole, considerando che, in termini di dati fittizi, abbiamo una funzione di rendimento che diventa negativa oltre un livello di stock di 6. Alla riga 6, estraiamo il rendimento marginale per ogni unità in stock in modo da ottenere questa tabella griglia. Usiamo il zedfunc, una funzione che rappresenta i ritorni, per estrarre il valore per la posizione di stock G.N. È importante notare che, a partire dalla riga 6, non importerebbe come i dati siano stati generati originariamente. Dalla riga 1 alla 4, si tratta solo di dati fittizi che non verrebbero utilizzati in un ambiente di produzione, ma a partire dalla riga 6, sarebbe sostanzialmente lo stesso se fossi in produzione.
Alla riga 7, definiamo il punteggio come rapporto tra i ritorni in dollari (che il zedfunc indica) e il dollaro investito, ovvero il prezzo d’acquisto. Calcoliamo il rapporto tra l’ammontare in dollari che otterrai e quello che devi pagare per una unità. In sostanza, il punteggio più alto si ottiene per l’allocazione dello stock che genera il tasso di rendimento per dollaro allocato più elevato a questo negozio.
Infine, dalle righe 9 a 15, visualizziamo una tabella ordinata per punteggi decrescenti. È importante sottolineare che non c’è alcuna logica elaborata nello script. Le prime quattro righe servono solo per generare dati fittizi, e le ultime sei righe mostrano l’allocazione prioritaria. Una volta che i zedfunc sono presenti e disponiamo di una funzione che rappresenta i rendimenti economici per livello di stock, trasformare quei zedfunc in una lista prioritaria è del tutto semplice.
Sullo schermo, la tabella ottenuta eseguendo il precedente script di Envision mostra che lo SKU denominato C è classificato al primo posto. Tutti gli SKU hanno gli stessi rendimenti economici per la prima unità, ossia un ritorno di $5. Tuttavia, C ha il prezzo d’acquisto più basso, pari a $3.99, e quindi, dividendo il ritorno di $5 per $3.99, otteniamo un punteggio di circa 1,25, che risulta essere il punteggio più alto nella griglia. La seconda unità di C ha un punteggio di circa 1, che è il secondo punteggio più alto.
Per la terza posizione nella griglia, abbiamo un altro SKU denominato B. B ha un prezzo d’acquisto più elevato, e quindi il suo punteggio per la prima unità è solo di 0,96. Tuttavia, a causa dei rendimenti decrescenti che otteniamo allocando le prime due unità a C, la prima unità di B ottiene un punteggio superiore rispetto alla terza unità di C, venendo così classificata al di sopra della terza unità di C. In sostanza, questa lista prioritaria è molto dettagliata, ma l’idea è di troncata con una soglia. Ad esempio, possiamo decidere che esiste un ritorno minimo sull’investimento, e solo le unità che lo superano vengono allocate. Una volta definita la soglia, possiamo selezionare tutte le righe che sono al di sopra del cutoff e contare il numero di righe per SKU. Questo ci dà il numero totale di unità da allocare per ogni singolo SKU. Rivisiteremo questo problema del cutoff tra un attimo, ma l’idea è che, una volta stabilito il cutoff, si aggregano i conteggi per SKU, ottenendo così la quantità totale da allocare per ogni singolo SKU. Questo è esattamente ciò che il tuo WMS o ERP presente nel centro di distribuzione si aspetta per organizzare la spedizione del giorno successivo verso i negozi.
La lista prioritaria è solo una visione concettuale per decidere cosa ha la precedenza. Tuttavia, si stabilisce un cutoff, si aggrega, e poi si torna alle quantità di allocazione per SKU per ogni singolo SKU presente nella rete dei negozi al dettaglio.
La visualizzazione dell’allocazione di stock prioritaria è ingannevolmente semplice eppure potente. Man mano che si passa da una riga all’altra, si vede la competizione tra le opzioni di allocazione prendere forma. I migliori SKU vengono allocati per primi, ma non appena si raggiungono livelli di stock più elevati, quegli SKU diventano meno competitivi rispetto ad altri SKU che non hanno così tanto stock. La lista prioritaria passa da uno SKU all’altro, massimizzando i ritorni attesi sul capitale allocato ai negozi.
Sullo schermo, abbiamo una variante della tabella precedente, ottenuta con un altro script di Envision che è una variante minima di quello introdotto due slide fa. In sostanza, sto scomponendo i fattori economici che contribuiscono al ritorno. Qui abbiamo tre colonne extra: margine, costo di mantenimento e stockout. Il margine è il margine lordo medio atteso per questa unità allocata. Il costo di mantenimento è il costo medio atteso di immagazzinare questa unità nel negozio. Lo stockout rappresenta la penale attesa che verrà evitata, motivo per cui la penale di stockout è un valore positivo qui. Il ritorno finale è semplicemente la somma di questi tre componenti, e tutti questi valori sono espressi in termini monetari, come i dollari. La colonna che indica margine in dollari, costo di mantenimento in dollari, stockout in dollari e ritorni, rappresenta l’ammontare totale in dollari che ci si può aspettare mettendo questa unità nel negozio.
Questo rende la comprensione e il debugging di questa ricetta numerica, espressa in dollari, notevolmente più semplice rispetto alle percentuali. Infatti, qualsiasi ricetta numerica non banale sarà per sua natura piuttosto opaca. Non serve il deep learning per ottenere una profonda opacità; anche una modesta regressione lineare sarà sufficientemente opaca non appena sono coinvolti un paio di fattori in questa regressione. Questa opacità, che si riscontra in qualsiasi ricetta numerica non banale, mette a rischio una reale supply chain perché i professionisti della supply chain possono perdersi, confondersi e distrarsi per via delle tecnicalità di modellizzazione.
La lista prioritaria di allocazione, che scompone i driver economici, è un potente strumento di audit. Permette ai professionisti della supply chain di mettere in discussione direttamente i fondamenti invece di perdersi nelle tecnicalità. Puoi porre domande dirette come: Abbiamo costi di mantenimento che hanno senso considerando la situazione in cui ci troviamo? Questi costi sono allineati con il tipo di rischi che stiamo correndo? Puoi dimenticare le previsioni, la stagionalità, il modo in cui modelli la stagionalità, come consideri il trend decrescente, e via dicendo. Puoi mettere in discussione direttamente il risultato finale, che è in dollari di output per quei costi di mantenimento. Sono reali? Hanno senso? Molto spesso, puoi individuare numeri senza senso e correggerli direttamente.
Ovviamente, vuoi evitare queste situazioni, ma non operare con l’assunzione che nella supply chain tutti i problemi siano incredibilmente sottili problemi di previsione. La maggior parte delle volte, i problemi sono brutali. Può esserci qualche tipo di problema, ad esempio dati non elaborati correttamente, e allora ottieni numeri completamente senza senso, come margini negativi o costi di mantenimento negativi che causano il caos nella tua supply chain.
Se la tua strumentazione per la supply chain si concentra esclusivamente sull’accuratezza delle previsioni di domanda, sei cieco al 90% (o più) dei problemi reali. In una supply chain su larga scala, questa stima probabilmente si aggirerebbe attorno al 99%. L’instrumentation della supply chain è assolutamente fondamentale per evidenziare i fattori chiave che contribuiscono alle decisioni, e tali fattori devono essere di natura economica se vuoi avere qualche speranza di concentrarti su ciò che rende la tua azienda redditizia. Altrimenti, se operi su base percentuale, non potrai dare priorità alle tue azioni, e affronterai le anomalie in modo indifferenziato. Stiamo parlando di una supply chain su larga scala, quindi c’è sempre una legione di anomalie numeriche. Se affronti tutte queste anomalie in modo indifferenziato, significa che stai sempre lavorando su aspetti per lo più irrilevanti. Ecco perché hai bisogno di avere ritorni in dollari e costi in dollari. È così che puoi realmente dare priorità al tuo lavoro e ai tuoi sforzi di sviluppo per le tue ricette numeriche. A volte, non è nemmeno necessario decidere se un bug valga la pena di essere corretto; se parliamo di pochi dollari all’anno di attrito, in pratica non si tratta nemmeno di un bug che valga la pena correggere.
Ora, torniamo alla questione di scegliere il cutoff giusto per la lista di allocazione. Abbiamo visto che si registrano rendimenti decrescenti man mano che si alloca più stock agli SKU dei negozi. Tuttavia, dobbiamo considerare l’intera supply chain, non solo il magazzino o centro di distribuzione. Qui sto usando i due termini in modo intercambiabile. Il magazzino o centro di distribuzione è dominato dai costi fissi. Infatti, è possibile aumentare il personale con lavoratori temporanei, ma tende a costare di più e crea altri problemi, come il fatto che la forza lavoro temporanea sia generalmente meno qualificata di quella permanente.
Pertanto, ogni magazzino o centro di distribuzione ha una capacità target alla quale opera con la massima efficienza economica. La capacità target può essere aumentata o diminuita, ma di solito ciò comporta l’adeguamento delle dimensioni del personale permanente, quindi è un processo relativamente lento. Ci si può aspettare che un magazzino adegui la sua capacità target da un trimestre all’altro, ma non puoi aspettarti che il magazzino modifichi la sua capacità nominale, alla quale raggiunge l’efficienza massima, da un giorno all’altro. Non è così dinamico.
Vogliamo mantenere il magazzino in funzione alla massima efficienza, o il più vicino possibile ad essa, tutto il tempo, a meno che non ci sia un incentivo economico sufficientemente forte a fare diversamente. La prospettiva dell’allocazione di stock prioritaria apre la strada per fare esattamente questo. Possiamo troncare la lista rendendola un po’ più corta o più lunga e spostando il cutoff per mantenerla in linea con la capacità target del magazzino. In pratica, questo comporta tre benefici principali.
In primo luogo, lisciare il flusso del magazzino. In questo modo, mantieni il magazzino operativo alla massima capacità per la maggior parte del tempo, risparmiando così molti costi operativi. In secondo luogo, il tuo processo di allocazione dell’inventario diventa molto più resiliente a tutti i piccoli incidenti che continuano a verificarsi in una supply chain reale. Un camion potrebbe essere coinvolto in un piccolo incidente stradale, alcuni membri del personale potrebbero non presentarsi perché ammalati – ci sono innumerevoli piccoli motivi che possono interrompere i tuoi piani. Questo non impedirà il funzionamento del tuo magazzino, ma potrebbe non operare esattamente alla capacità che avevi previsto. Con questa lista di priorità, puoi sfruttare al massimo qualunque capacità il tuo magazzino stia utilizzando, anche se non è esattamente quella per cui avevi programmato in origine.
Il terzo beneficio è che, con questo approccio di lista prioritaria per l’allocazione di stock, il tuo team della supply chain non deve più gestire in maniera eccessivamente dettagliata i livelli del personale del magazzino. Devi solo adeguare la capacità target del tuo magazzino affinché corrisponda approssimativamente alla velocità di vendita della tua rete retail. La gestione micro dei livelli di capacità a livello giornaliero diventa in gran parte irrilevante.
L’esperienza di Lokad indica che lisciare il flusso del magazzino attraverso un cutoff di capacità flat funziona bene nella maggior parte delle situazioni retail. Sullo schermo, puoi vedere la tipica curva di ritorno economico che osserveresti considerando tutti i possibili cutoff. Sull’asse X, abbiamo il numero di unità spedite dal magazzino. Stiamo ipotizzando concettualmente che le unità vengano spedite una alla volta, in modo da poter osservare il contributo marginale di ogni singola unità. Naturalmente, in produzione le unità vengono spedite in lotti, non una alla volta, ma questo serve solo per poter tracciare la curva. Sull’asse Y, abbiamo gli esiti economici marginali a livello di negozio, quindi per l’n-esima unità spedita a un negozio, qualsiasi negozio della rete. Le prime unità allocate generano la maggior parte dei ritorni. In pratica, i primi elementi della lista consistono invariabilmente in situazioni di stockout che richiedono una risoluzione immediata. Per questo motivo, le prime unità risolvono i problemi di stockout, e perciò i ritorni economici sono molto elevati. Successivamente, i ritorni diminuiscono, e entriamo in una parte piatta della curva.
Questa area è ciò che chiamo l’area di bassa sensibilità economica. In sostanza, stiamo gradualmente avvicinando il livello di servizio al 100% ma senza creare troppo stock in eccesso. Quando esegui questo tipo di allocazione prioritaria, se spingiamo lo stock oltre a risolvere i problemi di stockout, finiamo per accumulare stock sui best-seller. Creiamo stock in luoghi che non sono esattamente necessari in questo momento. Avremo opportunità in futuro di rifornire lo stock senza dover affrontare problemi di stockout nel frattempo, ma l’impatto è minimo perché lo stock verrà venduto abbastanza rapidamente. In sostanza, si tratta semplicemente del costo opportunità di spostare lo stock dal centro di distribuzione a un negozio. Man mano che allochiamo più stock, perdiamo gradualmente opportunità future.
Questa area è relativamente piatta e inizierà a diventare piuttosto negativa quando spingiamo così tanto stock da generare situazioni che causeranno svalutazioni dell’inventario con una probabilità non trascurabile. Se continui a spingere, generi situazioni di overstock più gravi, e quindi, vedi la curva diventare molto negativa. Se spingi troppo, genererai una quantità enorme di svalutazioni dell’inventario in futuro. Finché il cutoff si trova in questo segmento di bassa sensibilità, va bene, e il cutoff non è particolarmente sensibile a dove lo posizioni. Questo è il motivo per cui la capacità del magazzino non deve necessariamente rispecchiare direttamente il volume delle vendite giornaliere.
Infatti, nella maggior parte delle reti retail, si osserva un forte andamento ciclico settimanale nelle vendite, in cui certi giorni — per esempio, il sabato — sono quelli in cui si vende di più. Tuttavia, il magazzino non deve replicare esattamente questo andamento ciclico settimanale. Si può mantenere una media molto piatta, e l’idea è che la capacità target debba approssimativamente corrispondere al volume complessivo delle vendite nella rete dei negozi. Se la capacità target è sempre leggermente inferiore al volume totale delle vendite nella rete, ciò porterà prima a esaurire gradualmente tutti i negozi e poi a creare un grosso problema. Al contrario, se ogni giorno si spinge un po’ più di quanto effettivamente si venda, molto rapidamente saturerai completamente i negozi.
Finché mantieni il tutto relativamente bilanciato, non è necessario gestire in maniera iper-dettagliata il modello settimanale; funzionerà bene. Il motivo per cui non serve micromanagement sul modello settimanale è che le prime unità restituiscono la maggior parte dei ritorni, e il sistema, da un punto di vista economico, non è così sensibile finché il cutoff rimane approssimativamente in questa fascia piatta.
Ora ho presentato la funzione di ricompensa dello stock per motivi di chiarezza e concisione, dato che avevamo già molto da coprire in questa lezione. Tuttavia, la funzione di ricompensa dello stock non rappresenta il culmine della scienza della supply chain. È un po’ ingenua quando si tratta dei dettagli delle previsioni probabilistiche.
Nel 2021, uno di noi di Lokad ha pubblicato la funzione di ricompensa dell’azione. La funzione di ricompensa dell’azione è, se vuoi, il discendente spirituale della funzione di ricompensa dello stock, ma questa funzione offre una prospettiva molto più dettagliata sulle previsioni probabilistiche stesse. Infatti, non tutte le previsioni probabilistiche sono uguali. La stagionalità, i tempi di consegna variabili e gli ETA di intake per i centri di distribuzione sono tutti presi in considerazione nella funzione di ricompensa dell’azione, mentre non lo erano con la funzione di ricompensa dello stock.
A proposito, queste capacità richiedono anche una previsione più granulare, per cui occorre una tecnologia di forecasting superiore che possa generare tutte quelle previsioni probabilistiche per poter utilizzare la funzione di ricompensa dello stock. A questo proposito, la funzione di ricompensa dello stock è meno esigente. A livello concettuale, la funzione di ricompensa dell’azione offre anche una netta separazione tra la frequenza degli ordini (quanto spesso si ordina) e il tempo di approvvigionamento (quanto tempo impiega a rifornire lo stock una volta presa la decisione). Questi due elementi erano inglobati insieme nella funzione di ricompensa dello stock. Con la funzione di ricompensa dell’azione, sono chiaramente separati.
Infine, la funzione di ricompensa dell’azione include anche una prospettiva di proprietà decisionale, che è un espediente semplice ma piuttosto ingegnoso per ottenere la maggior parte dei benefici che si otterrebbero da una vera policy senza doverla introdurre. Ne discuteremo il vero significato da un punto di vista tecnico in lezioni successive, ma in sostanza appena si iniziano a introdurre le policy, le cose si complicano. È un aspetto interessante, ma sicuramente più complicato. Qui, la funzione di ricompensa dell’azione dispone di un astuto trucco che permette letteralmente di bypassare la necessità di adottare una policy, ottenendo così la maggior parte dei benefici economici ad essa associati.
Sia la funzione di ricompensa dello stock che la sua alternativa superiore, la funzione di ricompensa dell’azione, sono state utilizzate in produzione per anni presso Lokad. Queste funzioni semplificano sostanzialmente intere classi di problematiche che altrimenti affliggerebbero le reti retail. Ad esempio, lo stock invenduto diventa banale da valutare semplicemente osservando i ritorni economici associati a ogni unità di stock già presente in un qualsiasi negozio. Tuttavia, ci sono innumerevoli prospettive che oggi non ho affrontato. Le tratterò in lezioni successive.
Alcune di queste prospettive possono essere affrontate con variazioni piuttosto minori rispetto a quanto presentato oggi. È il caso, ad esempio, dei moltiplicatori di lotto e del ribilanciamento dello stock. Occorrono pochissime modifiche agli script che ho appena mostrato per poter affrontare tali problemi. Quando parlo di ribilanciamento dello stock, intendo riequilibrare lo stock tra i negozi della rete, sia riportando lo stock al DC che spostandolo direttamente tra i negozi, ipotizzando costi di trasporto specifici.
Poi, ci sono alcune prospettive che richiedono più lavoro, pur rimanendo relativamente semplici. Ad esempio, tenere conto dei costi opportunità, dei costi di trasporto fissi e del sovraccarico di intake nei negozi, che si verifica quando il personale di un negozio non è in grado di elaborare tutte le unità ricevute. Non hanno il tempo, in un determinato giorno, di esporle sugli scaffali, creando così un grande disordine nel negozio. Queste prospettive sono possibili, ma richiederanno sicuramente un bel po’ di lavoro in più rispetto a quanto presentato oggi.
Ci sono altre prospettive, come il merchandising o il miglioramento dell’attrattiva complessiva dei negozi, che dovrebbero far parte della definizione delle priorità. Esse richiedono un approccio tecnologico superiore, poiché le variazioni minori di quanto presentato oggi non sono sufficienti. Come al solito, consiglio una sana dose di scetticismo ogni volta che un esperto sostiene di possedere un metodo ottimale. Nella supply chain non esiste un metodo ottimale; abbiamo degli strumenti, alcuni dei quali sono migliori, ma nessuno si avvicina nemmeno lontanamente a ciò che potrebbe qualificarsi da ottimale.
In conclusione, le percentuali di errore sono irrilevanti; ciò che conta sono i dollari di errore. Questi dollari sono determinati da ciò che la tua supply chain fa a livello fisico. La maggior parte dei KPI sono, nel migliore dei casi, irrilevanti; fanno parte del processo della supply chain per migliorare continuamente le ricette numeriche che guidano le decisioni della supply chain. Tuttavia, anche considerando quei KPI fondamentali per migliorare le ricette numeriche, stiamo parlando di risultati abbastanza indiretti rispetto al miglioramento diretto della ricetta numerica che guida la decisione e genera immediatamente migliori risultati per la tua supply chain.
I fogli Excel sono onnipresenti nella supply chain, e credo che ciò sia dovuto al fatto che la teoria dominante della supply chain non è riuscita a promuovere le decisioni come cittadini di prima classe. Di conseguenza, le aziende sprecano tempo, denaro e si concentrano su ciò che è di seconda categoria, ossia gli artefatti. Ma alla fine della giornata, le decisioni devono essere prese: lo stock deve essere allocato, e bisogna scegliere il prezzo, il punto vendita e il prezzo d’attacco. In assenza di un adeguato supporto, gli operatori della supply chain ricorrono all’unico strumento che permette loro di considerare le decisioni come cittadini di prima classe, e tale strumento è Excel.
Tuttavia, le decisioni nella supply chain possono essere trattate come cittadini di prima classe, ed è esattamente quanto abbiamo fatto oggi. La dotazione tecnica non è nemmeno così complessa, almeno se si considera la complessità ambientale del tipico panorama applicativo di una supply chain moderna. Inoltre, un’adeguata dotazione tecnica sblocca capacità come uniformare il flusso di inventario dai centri di distribuzione al negozio con il minimo sforzo. Queste capacità sono facilmente realizzabili con gli strumenti adeguati, ma illustrano anche il tipo di risultati che non ci si può mai aspettare dai fogli Excel, almeno non con una configurazione a livello di produzione.
Credo che per oggi sia tutto. La prossima lezione sarà mercoledì 6 luglio, alla stessa ora, alle 15:00 ora di Parigi. Passerò al settimo capitolo per discutere l’esecuzione tattica di un’iniziativa quantitativa per la supply chain. A proposito, tornerò sul Capitolo 5, dove si parla di previsioni probabilistiche, e sul Capitolo 6, in cui si discutono le tecniche decisionali, in lezioni successive. Il mio obiettivo è avere una visione completa e introduttiva di tutti gli elementi prima di approfondire qualsiasi argomento specifico.
Quindi, a questo punto, darò veramente un’occhiata alle domande.
Domanda: La zedfunc potrebbe avere possibilità infinite. In tal caso, non sarebbero tutte soluzioni a breve termine?
La zedfunction è letteralmente un contenitore di dati per una sequenza di opzioni, per cui l’orizzonte applicabile è incorporato nel valore alpha, i valori di sconto temporale che ho utilizzato nei miei script. Fondamentalmente, l’orizzonte temporale target che incorpori nell’esito economico di una zedfunction non risiede veramente nelle zedfunctions stesse; è piuttosto presente nei calcoli economici che le integrano. Non dimenticare che le zedfunctions sono solo contenitori di dati. È questo che le rende a breve o a lungo termine, e ovviamente, devi regolare le tue ricette numeriche in modo che rappresentino le tue priorità. Ad esempio, se la tua azienda è sotto un’enorme pressione a causa di problemi di liquidità, probabilmente adotterai una prospettiva molto più a breve termine per avere un afflusso di denaro, cioè liquidando il tuo inventario. Se sei molto liquido, magari preferirai posticipare le vendite a un periodo successivo, vendendo a un prezzo migliore e garantendo un margine lordo superiore. Quindi, ancora una volta, tutte queste soluzioni sono possibili con le zedfunctions. Le zedfunctions sono solo contenitori; non presuppongono necessariamente alcun tipo di ricetta numerica per gli esiti economici che desideri inserire nelle zedfunctions.
Domanda: Penso che la maggior parte delle ipotesi debba basarsi su valori reali esistenti delle funzioni obiettivo, non credi?
Cos’è reale? Questa è l’essenza del problema che ho discusso nella lezione sull’ottimizzazione sperimentale. Il problema è che ogni volta che dici di avere valori, misurazioni o simili, in realtà hai a che fare con costrutti matematici, costrutti numerici. Non è perché sono numerici che sono corretti. Il mio approccio alla supply chain è quello di considerarla come una scienza sperimentale; devi connetterti con il mondo reale. È così che decidi se qualcosa è reale o no. La questione è, e sono completamente d’accordo, che le ipotesi non debbano basarsi su valori reali preesistenti, perché non esistono valori reali preesistenti. Esse devono essere verificate; le ipotesi vanno controllate e messe in discussione confrontandole con le osservazioni del mondo reale che puoi fare nella tua supply chain. La correttezza delle tue ipotesi può essere valutata solo attraverso il contatto con la realtà della tua supply chain.
È qui che questa prospettiva di ottimizzazione sperimentale si complica, perché la prospettiva di ottimizzazione matematica presuppone semplicemente che tutte le variabili siano note, che tutte siano reali, che tutte possano essere osservate, e che la funzione di perdita possa essere corretta. Ma il punto che sto facendo è che una supply chain è un sistema super complesso. Non è così. La maggior parte delle volte, quello che hai sono misurazioni piuttosto indirette. Quando dico livello di stock, non entro effettivamente nel negozio per verificare se il livello di stock sia corretto. Quello che ho è una misurazione molto indiretta, un registro elettronico ottenuto da un sistema enterprise software che è stato tipicamente implementato due decenni fa per ragioni che non avevano nulla a che fare col fare data science in primo luogo. Questo è il punto: il problema con la realtà è che una supply chain è sempre distribuita geograficamente, per cui tutto ciò che misuri, tutto ciò che osservi in termini di valori, sono misurazioni indirette. In un certo senso, la veridicità di queste misurazioni è sempre messa in discussione. Non esiste l’osservazione diretta. Puoi effettuare un’osservazione diretta solo per un controllo o una verifica, ma essa non può rappresentare altro che una piccolissima percentuale di tutti i valori che devi gestire nella tua supply chain.
Domanda: Nelle funzioni di ricompensa dello stock, oltre a parametri semplici come il margine, ci occupiamo anche di penali per stockout. Come possiamo imparare al meglio a ottimizzare questi parametri complessi?
Questa è una domanda molto interessante. Infatti, le penali per stockout sono reali; altrimenti, nessuno si preoccuperebbe nemmeno di avere alti livelli di servizio. Il motivo per cui si punta a livelli di servizio elevati è che, da un punto di vista economico, ogni rivenditore che conosco è convinto che le penali per stockout siano reali. I clienti non amano non ricevere un servizio di alta qualità. Tuttavia, non direi che siano complesse; sono complicate. Sono intrinsecamente difficili e, in parte, la loro difficoltà deriva dal fatto che è in gioco, letteralmente, la strategia a lungo termine della rete retail. Con la maggior parte dei miei clienti, ad esempio, la penale per stockout è un argomento che discuto direttamente con il CEO dell’azienda. Si arriva fino ai vertici; in gioco c’è la strategia super a lungo termine della rete retail.
Quindi, non è così complesso, ma è sicuramente complicato perché si tratta di una discussione ad alto rischio. Cosa vogliamo fare? Come vogliamo trattare i clienti? Vogliamo dire di avere i prezzi migliori in assoluto, scusandoci se la qualità del servizio non è la migliore possibile, offrendo però qualcosa di unico a prezzi molto bassi? Oppure desideriamo innovazione? Se puntiamo all’innovazione, significa che nuovi prodotti arrivano continuamente, e se i nuovi prodotti arrivano costantemente, vuol dire che i vecchi prodotti stanno venendo eliminati, e dunque va tollerato il verificarsi degli stockout, perché è così che si continua a introdurre innovazione.
La penale per stockout è difficile da valutare perché coinvolge direttamente scommesse ad alto rischio nella strategia a lungo termine dell’azienda. In pratica, il modo migliore per valutarla è condurre degli esperimenti. Si sceglie un valore, si fa una stima approssimativa del valore della penale per stockout, il fattore di penalità sullo stock, e poi si osserva che tipo di stock si ottiene nei negozi. Successivamente, si lascia che le persone, seguendo le proprie sensazioni, giudichino se il livello di stock corrisponde a quello che ritengono ideale per il loro negozio. È quello che desiderano davvero per i loro clienti? È ciò che vogliono veramente ottenere con la loro rete retail?
Vedi, c’è questa discussione di andata e ritorno. Normalmente, il Supply Chain Scientist testerà una serie di valori, presenterà i relativi risultati economici e spiegherà anche i macro costi associati a un driver. Potrebbero dire, “Ok, possiamo imporre una penalità per stockout molto elevata, ma attenzione, se lo facciamo significa che la nostra logica di allocazione dello stock spingerà sempre tonnellate di stock verso i negozi.” Perché se il messaggio è che gli stockout sono letali, allora significa che dovremmo fare tutto il possibile per evitarli. Fondamentalmente, dobbiamo avere questa discussione con molte iterazioni affinché il management possa fare un check della realtà: “La mia strategia a lungo termine è economicamente sostenibile rispetto a ciò che la mia rete retail può realmente fare?” È così che si converge gradualmente. A proposito, non è qualcosa di scolpito nella pietra. Le aziende cambiano e adattano la propria strategia nel tempo, quindi non è perché prendi un fattore penalità per stockout nel 2010 che nel 2022 debba essere lo stesso valore.
Specialmente, ad esempio, con l’ascesa dell’e-commerce. Ci sono molte reti retail che dicono semplicemente, “Beh, sono diventati molto più tolleranti agli stockout nei miei negozi, soprattutto per i negozi specializzati.” Perché fondamentalmente, quando manca un prodotto, in particolare una variante in termini di taglia, le persone lo ordineranno online dall’e-commerce. Il negozio diventa come un vero showroom. Quindi, la qualità del servizio di uno showroom diventa molto diversa da quella che ci si aspettava quando il negozio era letteralmente l’unico modo di vendere i prodotti.
Domanda: Possiamo avere una funzione composta di reward dello stock per comprendere correttamente la tendenza in un dato periodo?
Capire l’andamento di cosa esattamente? Se si tratta di una tendenza della domanda, la funzione di reward dello stock è una funzione che utilizza una previsione probabilistica. Quindi, qualunque tendenza ci sia nella domanda, essa dipende tipicamente dal modo in cui la modelli. Per quanto riguarda la funzione di reward dello stock, la previsione probabilistica incorpora già tutto ciò, che vi sia o meno una tendenza.
Ora, se hai un’altra domanda riguardo alla prospettiva stazionaria del reward dello stock, hai perfettamente ragione. La funzione di reward dello stock ha una prospettiva completamente stazionaria. Presuppone che la domanda si ripeta in modo probabilistico in ogni periodo esattamente allo stesso modo, quindi non c’è né tendenza né stagionalità. È una prospettiva puramente stazionaria. In questa situazione, la risposta è no, la funzione di reward dello stock non è in grado di gestire una domanda non stazionaria. Tuttavia, la funzione di reward per l’azione è in grado di farlo. Questa è stata anche una delle motivazioni per passare alla funzione di reward per l’azione, poiché può gestire una domanda probabilistica non stazionaria.
Domanda: Stiamo assumendo che la capacità del magazzino sia fissa, ma essa dipende dall’attività di picking, packing e shipping. I punti di cutoff della lista non dovrebbero essere definiti dall’ottimizzazione delle operazioni di magazzino?
Sì, assolutamente. È quello che ho detto quando hai questa zona di bassa sensibilità economica. La tua lista di priorità, che rappresenta l’allocazione di stock prioritizzata, non è estremamente sensibile riguardo a dove intervenire, purché sia all’interno di questo segmento. In media, dovresti essere ben bilanciato in termini di quanto spingi e quanto vendi, il che ha senso. Se vuoi regolare leggermente il cutoff dopo aver eseguito la logica di ottimizzazione del magazzino, tenendo conto di tutti gli sforzi e le variazioni di picking, packing e shipping, va bene. Puoi avere variazioni dell’ultimo minuto. Il bello di questa lista di allocazione di stock prioritizzata è che puoi letteralmente finalizzare l’ambito esatto delle unità spedite all’ultimo minuto. L’unica operazione necessaria è un’aggregazione, che può essere eseguita molto rapidamente, offrendoti più opzioni. È esattamente quello che ho detto quando ho menzionato che questo approccio apre nuove classi di ottimizzazione della supply chain. Ti permette di decidere al momento giusto per riorganizzare i tuoi sforzi di picking, packing e shipping invece di rimanere rigidamente vincolato a un envelope di spedizione predefinito che non corrisponde davvero alle risorse esatte che possiedi e allo sforzo necessario per eseguirlo.
Domanda: Per rendere regolari i flussi del magazzino è necessario un flusso di produzione altrettanto regolare. Questo modello decisionale lo considera?
Direi che non richiede necessariamente un flusso di produzione regolare. Per molte reti retail, come i negozi di generi vari, gli ordini sono effettuati da grandi aziende FMCG che producono lotti molto ampi dalla loro parte. Non è necessario rendere omogeneo il flusso di produzione per ottenere benefici in termini di costi operativi dal centro di distribuzione. Anche se la produzione non è stata regolarizzata, hai già dei benefici semplicemente spostando le spedizioni dal centro di distribuzione ai negozi.
Tuttavia, hai assolutamente ragione. Se per caso sei un marchio verticalmente integrato che ha internalizzato le sue strutture produttive, i centri di distribuzione e i negozi, allora c’è un vivo interesse per un’ottimizzazione a livello di supply chain e per regolarizzare l’intero flusso. Questo approccio di ottimizzazione a livello di rete è molto in linea con lo spirito di ciò che ho presentato oggi. Tuttavia, se vuoi davvero ottimizzare una vera rete di supply chain multi-echelon, avrai bisogno di una tecnica diversa da quella che ho presentato oggi. Ci sono molti elementi costitutivi che ti permetteranno di farlo, ma non puoi semplicemente modificare gli script che ho presentato oggi per ottenere quel risultato. Questa sarà quel tipo di tecnologia in cui tratteremo l’assetto multi-echelon, che verrà presentato nelle lezioni successive. È più complicato.
Domanda: L’approccio di reward dello stock e l’errore atteso mi ricordano il concetto di valore atteso della finanza. Dal tuo punto di vista, perché questo approccio non è ancora diventato mainstream nei circoli della supply chain?
Hai perfettamente ragione. Questo genere di analisi, come una vera analisi economica degli esiti, viene effettuato da secoli nei circoli finanziari. Credo che la maggior parte delle banche abbia svolto questi calcoli sin dagli anni ‘80, e probabilmente la gente li faceva già prima con penna e carta. Quindi sì, è qualcosa che viene fatto da secoli in altri verticali.
Credo che il problema delle supply chain fosse che, fino all’avvento di internet, le supply chain erano distribuite geograficamente per natura, con negozi, centri di distribuzione e altro sparsi. Prima del 1995, era possibile, ma molto complicato, trasferire dati attraverso internet per le aziende. Era fattibile, ma farlo in modo affidabile, economico e con sistemi enterprise che permettessero di consolidare tutti quei dati era raro. Quindi, essenzialmente, le supply chain sono state digitalizzate molto presto, negli anni ‘80, ma non erano fortemente interconnesse. L’ingrediente del networking e tutta l’infrastruttura sono arrivati relativamente tardi, direi dopo l’anno 2000 per la maggior parte delle aziende.
Il problema era che, immagina di operare in un centro di distribuzione ma abbastanza isolato dal resto della rete, in modo che il responsabile del magazzino non avesse le risorse per eseguire questo tipo di calcoli numerici elaborati. Il responsabile del magazzino aveva un magazzino da gestire e tipicamente non era un analista. Quindi, quelle pratiche che precedevano l’era di internet, in cui tutte le informazioni erano disponibili in rete, sono rimaste. Questa sarebbe la ragione, e a proposito, le supply chain sono tipicamente entità molto grandi, complicate e complesse, quindi si muovono lentamente.
Avere i dati condivisi in rete tramite ottimi data lake, diciamo che era il 2010, anche se sono passati 10 anni, ciò che osservo è che alcune aziende si stanno muovendo ora, alcune si sono già mosse, ma un decennio non è poi così lungo considerando la dimensione e la complessità delle supply chain. Ecco perché questo tipo di analisi è stato lo standard in finanza per circa quattro decenni, e stanno solo ora emergendo nel campo della supply chain, o almeno questa è la mia umile opinione al riguardo.
Domanda: E per quanto riguarda il costo di stockout, calcolato principalmente sul costo di errata collocazione?
Puoi farlo. Ancora una volta, il costo di stockout è letteralmente una decisione che prendi. È la tua prospettiva strategica sul tipo di servizio che vuoi che la tua rete retail offra ai tuoi clienti. Non esiste una realtà di base; è letteralmente qualunque cosa tu desideri. La questione del costo di errata collocazione è che la realtà è che la maggior parte delle reti retail sopravvive solo perché ha una base di clienti fedeli lealtà e garantisce un’esperienza positiva nel negozio. In genere, il costo della lealtà persa per la maggior parte dei negozi supera di gran lunga i costi di errata collocazione. Un’eccezione che mi viene in mente sono i negozi retail con una strategia di marchio incentrata sull’essere i più economici. In questo caso, potrebbero sacrificare l’assortimento e la qualità del servizio, dando priorità ai prezzi bassi sopra ogni cosa.
Domanda: Qual è l’obiettivo di mantenere scorte nel tuo magazzino? È tenere i prodotti a prezzi bassi o fornire ai negozi prodotti a prezzi più elevati?
Questa è un’ottima domanda. Perché mantenere dello stock nel centro di distribuzione? Perché non cross-dock tutto direttamente, inviandolo tutti ai negozi?
Ci sono reti retail che fanno il cross-docking per tutto, ma anche con questo approccio c’è un ritardo tra il momento in cui effettui un ordine ai tuoi fornitori e quando effettivamente spedisci lo stock ai negozi. Puoi ordinare quantità specifiche con uno schema di allocazione particolare in mente, ma hai la flessibilità di cambiare idea quando lo stock viene consegnato al centro di distribuzione. Non devi essere rigidamente vincolato allo schema di allocazione che avevi in mente due giorni fa.
Puoi decidere di non mantenere stock nel centro di distribuzione e fare solo il cross-docking, ma a causa del ritardo puoi cambiare idea ed effettuare una spedizione leggermente diversa. Questo può essere utile, per esempio, quando si verifica uno stockout a causa di un’improvvisa impennata della domanda. Anche se è preferibile evitare uno stockout, questo indica un eccesso di domanda rispetto a quanto previsto, il che non è del tutto negativo.
In altre situazioni, mantenere delle scorte nel magazzino è necessario a causa dei vincoli di ordinazione imposti dai fornitori. Ad esempio, le aziende FMCG potrebbero permetterti di effettuare un ordine solo una volta alla settimana e di solito vogliono consegnare un camion pieno al tuo centro di distribuzione. I tuoi ordini saranno ingombranti e raggruppati, e il centro di distribuzione funge da buffer per quelle consegne. Inoltre, il centro ti offre l’opzione di cambiare idea riguardo a dove allocare lo stock.
Finché lo stock è nel centro di distribuzione, puoi cambiare idea. Tuttavia, una volta che è allocato a un negozio specifico, il costo di trasporto per riportarlo al magazzino è spesso proibitivamente elevato e qualcosa che vorresti evitare.
Grazie mille, e spero di vederti la prossima volta. Discuteremo di come eseguire strategie tattiche e avviare una vera iniziativa quantitativa di supply chain in un’azienda reale. A presto!