Formula Ottimale del Livello di Servizio (Supply Chain)

learn menu
Di Joannès Vermorel, ultima revisione gennaio 2012

Service level (inventario) rappresenta la probabilità attesa di non incorrere in stock-out. Questa percentuale è necessaria per calcolare le scorte di sicurezza. In modo intuitivo, il livello di servizio rappresenta un compromesso tra il costo dell’inventario e il costo degli stock-out (che comportano vendite perse, opportunità mancate e frustrazione dei clienti, tra gli altri). In questo articolo, descriviamo come ottimizzare il valore del livello di servizio. Successivamente, l’analisi viene raffinata per il caso speciale degli alimenti deperibili.

L’articolo è stato scritto da un punto di vista di previsione classica nel 2011. Tuttavia, qualche anno dopo, ci rendiamo ora conto che esistono opzioni molto migliori dal punto di vista della quantitative supply chain che eliminano del tutto la necessità di ottimizzare i livelli di servizio quando la tecnologia è alimentata da previsioni probabilistiche.

Modello e formula

La letteratura classica sulla supply chain è alquanto imprecisa per quanto riguarda i valori numerici da adottare per il livello di servizio. Di seguito, proponiamo di calcolare un livello di servizio ottimale modellando i rispettivi costi dell’inventario e degli stock-out.

Introduciamo le seguenti variabili:

  • $${p}$$ rappresenta il livello di servizio, cioè la probabilità di non avere uno stock-out.
  • $${H}$$ rappresenta il costo di mantenimento per unità per la durata del lead time (1).
  • $${M}$$ rappresenta il costo marginale unitario di stock-out (2).

Scarica il foglio Excel: service-level-formula.xlsx (calcolo illustrato)

(1) L’orizzonte temporale considerato qui è il lead time. Pertanto, invece di considerare il più usuale costo di mantenimento annuale $${H_y}$$, consideriamo $${H = \frac{d}{365}H_y}$$ assumendo che $$d$$ sia il lead time espresso in giorni.

(2) Il costo dello stock-out include al minimo il margine lordo, cioè il profitto istantaneo che sarebbe stato generato se non si fosse verificato uno stock-out. Tuttavia, la perdita del margine lordo non è l’unico costo: ad esempio, la frustrazione dei clienti e la perdita della fidelizzazione dei clienti devono essere presi in considerazione. In linea di massima, abbiamo osservato che molti rivenditori alimentari considerano $${M}$$ pari a 3 volte il margine lordo.

Il livello di servizio ottimale è dato da (il ragionamento è dettagliato di seguito):

$${p=\Phi\left(\sqrt{2\ln\left(\frac{1}{\sqrt{2\pi}}\frac{M}{H}\right)}\right)}$$

Dove $${\Phi}$$ è la funzione di distribuzione cumulativa associata alla distribuzione normale. Questo valore può essere calcolato facilmente in Excel, $${\Phi}$$ è la funzione NORMSDIST. Inoltre, per scopi di calcolo numerico: $${\sqrt{2 \pi} \approx 2.50}$$

Funzione di costo

Per modellare la funzione di costo, introduciamo altre due variabili:

  • $${Q}$$ rappresenta la quantità di inventario ammortizzata (3), una funzione che dipende da $${p}$$.
  • $${O}$$ rappresenta la domanda media in eccesso quando si verifica uno stock-out.

(3) Adottiamo qui un punto di vista di analisi ammortizzata. Il livello dell’inventario varia continuamente, ma il nostro obiettivo, per rendere l’analisi pratica, è ottenere un valore del livello di servizio che sia disaccoppiato dalla previsione della domanda stessa. Pertanto, assumeremo che $${Q}$$ sia uguale al punto di riordino (consulta la nostra guida sulle scorte di sicurezza per i dettagli).

Per un determinato livello di servizio, il costo totale $${C(p)}$$ che combina sia il costo di mantenimento dell’inventario sia i costi di stock-out può essere scritto:

$${C(p) = Q(p)H + (1-p)MO}$$

Dove $${Q(p)H}$$ è il costo dell’inventario e $${MO}$$ il costo dello stock-out, che si verifica solo con una probabilità $${1-p}$$. Utilizzando la formula introdotta nel nostro tutorial sulle scorte di sicurezza, e poiché $$Q(p)$$ è uguale al punto di riordino, abbiamo $${Q(p) = Z + \sigma \Phi^{-1}(p)}$$ dove $${Z}$$ è la domanda nel lead time, $${\sigma}$$ l’errore di previsione atteso e $${\Phi^{-1}(p)}$$ l’inverso della funzione di distribuzione cumulativa associata alla distribuzione normale standard (media zero e varianza uno).

Analisi delle vendite medie perse

L’analisi di $${O}$$, le vendite medie perse, è sottile. Considerando che la distribuzione della domanda è la distribuzione normale $${\mathcal{N}}$$ e che $${q}$$ rappresenta l’inventario disponibile, $${O(q)}$$ è la media condizionale della domanda $${x}$$ quando $${x > q}$$ (meno l’inventario disponibile $${q}$$), cioè:

$${O(q)=\frac{\int_q^\infty{x\mathcal{N}(x)dx}}{\int_q^\infty{\mathcal{N}(x)dx}}-q=\frac{1}{q}+\mathcal{o}\left(\frac{1}{q}\right)}$$

Consulta la funzione a (1).

Questo risultato può essere interpretato in questo modo: se la domanda segue rigorosamente la distribuzione normale, allora la quantità media di vendite perse nell’evento (condizionale) di uno stock-out converge rapidamente a zero all’aumentare del livello di inventario.

Tuttavia, secondo la nostra esperienza, l’errore di previsione non converge come previsto dalla distribuzione normale. Pertanto, di seguito, assumeremo che $${O=\sigma}$$, cioè che la quantità media di vendite perse sia pari all’errore di previsione medio. Ovviamente, questa è più una regola empirica che un’analisi approfondita; ma abbiamo riscontrato che in pratica questa approssimazione fornisce risultati sensati.

Minimizzazione della funzione di costo

Applicando le sostituzioni definite sopra all’espressione di $${C(p)}$$, otteniamo:

$${C(p) = \left(Z + \sigma \Phi^{-1}(p)\right)H + (1-p)M\sigma}$$

Successivamente, l’espressione di $${C(p)}$$ può essere derivata rispetto a $${p}$$ con:

$${\frac{\partial C}{\partial p} = \sigma H \partial \Phi^{-1}(p) - \sigma M}$$

Poiché stiamo cercando il valore minimo, proviamo a risolvere $${\frac{\partial C}{\partial p} = 0}$$ il che dà:

$${\sigma H \partial \Phi^{-1}(p) - \sigma M = 0}$$

Il che può essere semplificato per $${\sigma}$$, diventando:

$${H \partial \Phi^{-1}(p) - M = 0}$$

E infine:

$${\partial \Phi^{-1}(p) = \frac{M}{H}}$$

Quindi, useremo la relazione tra $${\partial \Phi^{-1}}$$ e $${\Phi^{-1}}$$ :

$${\partial \Phi^{-1}(p)=\sqrt{2\pi}e^{\frac{1}{2}\Phi^{-1}(p)^2}}$$

Per una dimostrazione visiva dell’uguaglianza è possibile confrontare (1) e (2).

Questa relazione ci permette di ottenere:

$${\sqrt{2\pi}e^{\frac{1}{2}\Phi^{-1}(p)^2}=\frac{M}{H}}$$

$${\frac{1}{2}\Phi^{-1}(p)^2=\ln\left(\frac{1}{\sqrt{2\pi}}\frac{M}{H}\right)}$$

Prendiamo la soluzione della radice positiva dell’equazione (la radice negativa corrisponde a un massimo locale della funzione) con:

$${\Phi^{-1}(p)=\sqrt{2\ln\left(\frac{1}{\sqrt{2\pi}}\frac{M}{H}\right)}}$$

E infine, applicando $${\Phi}$$ a entrambi i lati, otteniamo il livello di servizio ottimale con:

$${p=\Phi\left(\sqrt{2\ln\left(\frac{1}{\sqrt{2\pi}}\frac{M}{H}\right)}\right)}$$

Discussione della formula

Il primo aspetto interessante della formula è che il livello di servizio ottimale dipende solo da $${H}$$ (costo dell’inventario) e $${M}$$ (costo dello stock-out). Tuttavia, esiste una dipendenza implicita dal lead time poiché $${H}$$ è stato definito come il costo di mantenimento per la durata del lead time.

In secondo luogo, un costo dell’inventario maggiore abbassa il livello di servizio ottimale; analogamente, un costo maggiore di stock-out incrementa il livello di servizio. Questo comportamento è piuttosto intuitivo perché il livello di servizio è un compromesso tra avere più inventario e subire più stock-out.

La formula, quindi, non è valida per tutti i valori di $${M}$$ e $${H}$$. Necessitiamo che $${\sqrt{2\pi}\frac{M}{H} > 1}$$, altrimenti il logaritmo produrrebbe un valore negativo che non è trattabile considerando la radice quadrata esterna. Questo implica $${M > \sqrt{2 \pi} H}$$, che può essere approssimato come $${M > 2.5 H}$$. Se tale condizione non è verificata, significa allora che la funzione di costo iniziale $${C(p)}$$ non ha un minimo, o meglio che il minimo è $${-\infty}$$ per $${p=0}$$. Da un punto di vista pratico, $${M < 2.5 H}$$ potrebbe essere interpretato come una situazione patologica in cui il livello di stock più redditizio stock level è lo zero stock (cioè, stock-out al 100%).

Esempio pratico

Consideriamo un confezione di latte da 1L a 1,50€ prezzo di vendita, venduto con un margine del 10% (cioè 0,15€ di margine lordo). Supponiamo che il lead time sia di 4 giorni. Il costo annuale di mantenimento è 1,50€ (il valore è elevato perché il latte è un prodotto altamente deperibile). Supponiamo che il costo dello stock-out sia 3 volte il margine lordo, ovvero 0,45€. Questo dà $${M=0.45}$$ e $${H=\frac{4}{365} 1.5\approx 0.0055}$$.

Sulla base di questi valori e della formula per il livello di servizio ottimale ottenuta sopra, otteniamo $$ p \approx 98.5 \text{%} $$, che è un valore tipico per prodotti freschi must-have immagazzinati in magazzini che servono le reti di supermercati.

Alimenti deperibili

Domanda posta da Vyacheslav Grinkevych, esperto di supply chain, 2012-02-13:

Sto lavorando su Previsione e Pianificazione della Supply per prodotti lattiero-caseari a vita breve in cui il livello di servizio ottimale è un argomento molto importante. La componente più interessante e complicata qui è H – il costo di mantenimento e la questione del suo valore corretto in pratica.

Ad esempio, per prodotti lattiero-caseari a vita breve una parte importante di H dovrebbe includere non solo il puro costo finanziario del denaro immobilizzato nell’inventario e il costo operativo della logistica di stoccaggio, ma anche il costo delle perdite potenziali dovute alla cancellazione dei prodotti scaduti o a vendite con sconti quando si cerca di svuotare le scorte poco prima della scadenza. Ciò accade quando le vendite sono molto inferiori alla previsione.

Questo compromesso può essere descritto come il rischio di sovraccarichi di scorte potenziali vs. il rischio di stock-out potenziali – due rischi che agiscono in direzioni opposte pur avendo la stessa origine per natura – cioè, interconnessi con le scorte di sicurezza. In caso di sovraprezzosità delle previsioni, che di solito causa problemi di scadenza, gli errori di previsione non sono distribuiti normalmente. Pertanto, mi chiedo come esprimere al meglio tali rischi di sovraccarico potenziale delle scorte.

Tornando alla tua formula, un ulteriore sviluppo potrebbe essere quello di cercare di trovare una relazione tra H e p o di far sì che H sia una funzione di p, cioè H(p), prima di procedere con la minimizzazione del costo totale C(p). Quali sono le tue opinioni in merito?

La formula del livello di servizio presentata sopra si basa infatti su un’ipotesi semplificata in cui i costi, sia di stoccaggio che di stock-out, sono strettamente lineari. Tuttavia, in pratica, si possono riscontrare non linearità marcate, come ad esempio:

  • Il magazzino è pieno, e c’è un punto in cui un’unità aggiuntiva di stock comporta in realtà un enorme onere per ottenere un ulteriore spazio di magazzino.
  • Gli stock-out causano vendite perse incrementali fino al punto in cui un ulteriore stock-out provoca la perdita dell’intero cliente ricorrente.

I prodotti deperibili presentano un ulteriore aspetto: se la copertura delle scorte, ovvero lo stock espresso in giorni anziché in unità, si avvicina alla durata di vita del prodotto prima della scadenza, allora $${H}$$, il costo di mantenimento, aumenta verso un valore infinito.

Infatti, $${H}$$ rappresenta l’attrito associato al possesso di inventario. Una copertura delle scorte superiore alla durata di vita del prodotto rappresenta una situazione assurda in cui, assumendo un inventario FIFO (First In, First Out), nessun prodotto uscirebbe dal magazzino senza prima raggiungere la sua data di scadenza.

Per modellare l’effetto della deperibilità dell’inventario, introduciamo un paio di durate chiave:

  • $${\lambda}$$, il lead time.
  • $${\lambda_\infty}$$, la durata di vita del prodotto prima di raggiungere la scadenza terminale (cioè valore di mercato zero).
  • $${\lambda_½}$$, la durata che raddoppia il costo di mantenimento originale del prodotto a causa della perdita del suo valore di mercato.
  • $${\lambda_c(p)}$$, la copertura delle scorte, ovvero lo stock espresso in giorni anziché in unità di prodotto. Questa durata dipende dal fattore di scorta di sicurezza, quindi dipende da $${p}$$.

Con queste durate, possiamo modellare il costo di mantenimento come:

$${ H(p) = H \left(1 - \frac{\lambda_\infty - \lambda_½}{\lambda_\infty - \lambda} + \frac{\lambda_\infty - \lambda_½}{\lambda_\infty - \lambda_c(p)} \right) }$$

Analizziamo nel dettaglio l’assunzione implicita qui, perché stiamo in qualche modo modificando la consueta nozione di costo di mantenimento per tenere conto del rischio di cancellazione.

Prima, abbiamo $${H(0.5)=H}$$. Ciò si ottiene dalla definizione riportata qui sopra. Infatti, $${\lambda_c(0.5)=\lambda}$$, con un livello di servizio al 50%, la copertura dello stock equivale al lead time. Quindi, stiamo affermando che, in questo modello, $$H$$ rappresenta il costo di mantenimento in cui i costi di write-off associati a un livello di servizio del 50% sono già stati inclusi nel costo $${H}$$. È importante sottolineare che zero scorte di sicurezza non implicano zero write-off, ma solo write-off poco frequenti.

Secondo, per il livello di servizio $${p_½}$$ tale che $${\lambda_c(p_½) = \lambda_½}$$, abbiamo allora $${H(p_½)=2H}$$. Anche in questo caso, si tratta solo di una conseguenza della definizione adottata per $${H(p)}$$. In maniera intuitiva, $${\lambda_½}$$ rappresenta la durata che raddoppia la combinazione dei costi di mantenimento più i costi di write-off, rispetto alla situazione di zero scorte di sicurezza. È chiaro che, in pratica, il sovraccarico di costo derivante dagli sconti di fine vita e dai write-off procederà a passi discreti. Tuttavia, riteniamo che cercare di esprimere questo sovraccarico tramite una durata tipica che in pratica verrebbe definita come una certa frazione della vita utile del prodotto sia probabilmente molto più robusta rispetto alle varie approssimazioni che l’intero approccio comporta, a differenza di un modello più fine che si basa su variabili ancora più incerte.

Infine, man mano che $${p}$$ si avvicina a $${p_\infty}$$ con $${\lambda_c(p_\infty)=\lambda_\infty}$$, allora $${H(p)}$$ tende all’infinito, sempre in base alla definizione della funzione adottata per $${H(p)}$$. A prima vista, può sembrare strano avere un costo di mantenimento che supera il costo unitario del prodotto, ma non c’è alcun paradosso. Il valore $$H(p)$$ rappresenta il costo di attrito per spedire una unità al cliente. Se, a causa di massicci write-off, per spedire 1 unità al cliente finale il magazzino riceve in media 3 unità (2 unità che scadono prima della consegna), allora i costi di attrito saranno molto superiori al prezzo unitario originale del prodotto.

In sintesi, $${\lambda_½}$$ è solo una variabile incerta introdotta. $${\lambda}$$ e $${\lambda_\infty}$$ possono essere considerate note. Riteniamo che questo modello per $${H(p)}$$ sia il più semplice possibile da ottenere introducendo una sola variabile extra. Quindi, per $${\lambda_c(p)}$$, con una modesta approssimazione, abbiamo:

$${\lambda_c(p) = \lambda \left(1 +\frac{\sigma}{Z}\Phi^{-1}(p)\right)}$$

Infatti, $${\lambda_c}$$, la copertura dello stock, può essere vista come un rapporto sul lead time che include la domanda durante il lead time più un fattore di scorta di sicurezza normalizzato. Questo dà la funzione di costo alternativa:

$${C^*(p) = \left(Z + \sigma \Phi^{-1}(p)\right)H\left(1 - \frac{\lambda_\infty - \lambda_½}{\lambda_\infty - \lambda} + \frac{ \lambda_\infty - \lambda_½}{\lambda_\infty - \lambda \left(1 +\frac{\sigma}{Z}\Phi^{-1}(p)\right)} \right) + (1-p)M\sigma}$$

A differenza della funzione di costo precedente, questa funzione non sembra avere un minimo algebrico semplice. Tuttavia, adottando un approccio simile a quello utilizzato per il calcolo della quantità economica d’ordine, è relativamente semplice trovare una soluzione approssimativa iterando con incrementi dello 0,1% dal 80% al 99,9%. Ciò rappresenta 200 iterazioni per raggiungere una precisione dello 0,1% che risulterebbe ampiamente sufficiente per scopi pratici.

Uso pratico previsto

La formula del livello di servizio si basa su un paio di approssimazioni, per cui i valori numerici potrebbero non essere utilizzabili direttamente: in genere richiederanno un po’ di messa a punto. In particolare, il fattore $${\frac{1}{\sqrt(2\pi)}\approx0.4}$$ può essere regolato in base alle necessità. Tuttavia, riteniamo che questa formula offra una buona intuizione su come i rispettivi livelli di servizio dei vostri articoli dovrebbero confrontarsi. Ad esempio, se per due prodotti A e B si ottengono rispettivamente livelli di servizio del 95% (per A) e del 90% (per B), allora per l’allestimento finale della produzione ci si aspetta che il livello di servizio di A sia superiore a quello di B.

Quindi, considerando la natura dell’analisi svolta qui sopra, riteniamo che questa formula non sia rilevante per prodotti associati a una domanda bassa o intermittente. Infatti, tali prodotti a basso volume sono tipicamente associati a punti di riapprovvigionamento bassi, pari a 0 o 1 unità; e una modellizzazione lineare del costo di stoccaggio del prodotto non ha necessariamente senso, poiché va considerata anche la complessità nel conservare un riferimento aggiuntivo.