In un articolo precedente ho utilizzato la Teoria delle Code – e nello specifico la Legge di Little come caso particolare – per spiegare perché un sistema di flusso raggiunga la sua massima efficienza intorno al 65% del carico massimo teorico. Questo articolo si rivolge a chi vuole approfondire le basi matematiche di quel risultato e capire cosa succede quando le ipotesi semplificatrici del modello di partenza vengono rilassate.
Il modello sottostante, che ora possiamo nominare esplicitamente, si chiama M/M/1: una coda con un unico canale di servizio (1), arrivi casuali senza memoria secondo una distribuzione di Poisson (la prima M, da Markovian) e tempi di servizio con distribuzione esponenziale (la seconda M). In notazione estesa di Kendall si scriverebbe M/M/1/∞, dove ∞ indica che non c’è limite alla lunghezza della coda, ma per convenzione il quarto elemento si omette quando è infinito.
C’è però un’assunzione nascosta, che vale la pena portare in superficie: il modello M/M/1 fissa la variabilità del sistema a un valore preciso e implicito. Il 65% è corretto, ma solo per quel livello di variabilità. Se il sistema è più regolare, la soglia si alza. Se è più caotico, si abbassa.
La formula che permette di generalizzare questo risultato si chiama formula di Kingman, o equazione VUT. È il punto di arrivo naturale del ragionamento che abbiamo iniziato.
Cosa mancava nel modello precedente
Nel modello M/M/1, sia gli arrivi che i tempi di servizio seguono distribuzioni con una proprietà specifica: il loro coefficiente di variazione – il rapporto tra deviazione standard e media – è esattamente pari a 1.
Questo significa che stavamo implicitamente assumendo una variabilità “standard” sia per gli arrivi che per i tempi di lavorazione. Nella realtà queste assunzioni reggono raramente. Un sistema in cui gli elementi di lavoro (work item) arrivano a ondate – fine mese, fine sprint, richieste urgenti in cluster – ha una variabilità degli arrivi ben superiore a 1. Un sistema in cui alcuni task richiedono un’ora e altri una settimana ha una variabilità dei tempi di servizio anch’essa superiore a 1.
La domanda diventa: come cambia il Tempo di Ciclo quando la variabilità non è quella “standard” del modello M/M/1?

La formula di Kingman
La risposta la fornisce John Kingman, matematico britannico, con una formula che generalizza M/M/1 a sistemi con distribuzioni arbitrarie di arrivi e servizi. La formula calcola una approssimazione accettabile del tempo medio di attesa in coda (Wq), cioè il tempo che un work item trascorre in attesa prima di essere preso in carico:

- Ca² = quadrato del coefficiente di variazione degli arrivi
- Cs² = quadrato del coefficiente di variazione dei tempi di servizio
- ρ = λ / μ = tasso di utilizzazione del sistema, dove λ è il tasso di arrivo dei work item e μ è la capacità produttiva
- Te = tempo medio di servizio
La formula si legge come il prodotto di tre fattori distinti:
- Il fattore di variabilità: (Ca² + Cs²) / 2 – cresce all’aumentare dell’irregolarità del sistema
- Il fattore di utilizzazione: ρ / (1 − ρ) – esplode quando ci si avvicina al 100% di carico
- Il tempo di servizio base: Te – scala il risultato all’unità di misura del sistema
Il tempo totale di permanenza nel sistema – il Tempo di Ciclo che ci interessa (W) – si ottiene sommando il tempo di attesa in coda con il tempo di servizio: W = Wq + Te.
M/M/1 come caso particolare
Se sostituiamo nella formula di Kingman i valori propri del modello M/M/1, ovvero Ca² = 1 e Cs² = 1, otteniamo come tempo medio di attesa in coda (Wq):

Il tempo totale nel sistema (W), che include anche il tempo di servizio, diventa:

Sostituendo Te = 1/μ e ρ = λ/μ:

Che è esattamente la formula del Ws usata nell’articolo precedente. M/M/1 è dunque un caso particolare di Kingman, valido quando la variabilità di arrivi e servizi è esattamente pari a 1.
Per completezza vale la pena notare che le formule esatte per code con distribuzioni specifiche furono sviluppate da Agner Krarup Erlang già a inizio ‘900. Kingman generalizza quel lavoro a distribuzioni arbitrarie, al prezzo di un’approssimazione, sufficientemente accurata per le analisi che ci interessano. Più recentemente Donald Reinertsen in The Principles of Product Development Flow si riferisce alla formula di Allen-Cuneen, che esprime lo stesso risultato in termini di lunghezza media della coda (Lq) anziché di tempo di attesa (Wq) – le due formule sono equivalenti e collegate dalla Legge di Little: Lq = λ · Wq.
Cosa cambia con la variabilità
Il fattore (Ca² + Cs²) / 2 è il moltiplicatore che modifica il tempo di attesa in coda (Wq) rispetto al caso M/M/1. Se è uguale a 1, siamo nel caso precedente. Se è maggiore di 1, Wq cresce proporzionalmente. Se è minore di 1, il sistema regge meglio il carico. Il tempo totale W = Wq + Te cambia di conseguenza, ma in misura attenuata perché Te rimane fisso.
Riprendiamo il sistema dell’articolo precedente: capacità produttiva μ = 10 work item al giorno per ogni giornata lavorativa di 8 ore.
| Carico (λ) | Utilizzo (ρ) | W – bassa variabilità (Ca²=Cs²=0,5) | W – M/M/1 (Ca²=Cs²=1) | W – alta variabilità (Ca²=Cs²=2) |
|---|---|---|---|---|
| 5 | 50% | 1h 12min | 1h 36min | 2h 24min |
| 6 | 60% | 1h 24min | 2h | 3h 12min |
| 7 | 70% | 1h 44min | 2h 40min | 4h 32min |
| 8 | 80% | 2h 24min | 4h | 7h 12min |
| 9 | 90% | 4h 24min | 8h | 15h 12min |
La struttura è la stessa: il Tempo di Ciclo esplode avvicinandosi al 100%. Ma la scala cambia in modo significativo. Con alta variabilità, già al 50% di carico il sistema impiega quasi due ore e mezza per evadere un singolo work item e al 70% di carico il sistema impiega quasi cinque ore, laddove con bassa variabilità lo stesso carico del 70% sarebbe invece ancora ampiamente gestibile.
Il 65% potrebbe essere ottimistico
Il risultato pratico è diretto: la soglia del 65% vale per il caso M/M/1, cioè per un sistema con variabilità “standard”. Nel lavoro di concetto (knowledge work) e nei servizi dove le richieste arrivano in modo irregolare e i tempi di lavorazione possono variare molto da un task all’altro, Ca² e Cs² sono tipicamente superiori a 1.
Questo significa che il 65% è, in molti contesti reali, una stima ottimistica. La soglia di efficienza reale si abbassa. Un sistema con alta variabilità può richiedere di operare al 50% o anche meno per mantenere Tempi di Ciclo accettabili.
Le leve per migliorare il flusso
“Festina lente” (Affrettati lentamente – Svetonio)
Reinertsen suggerisce e rende esplicite tre leve distinte per la gestione delle code, con efficacia e natura diverse. Vale la pena passarle in rassegna.
1. Ridurre il carico (ρ) – leva dominante
È la leva del limite al lavoro in corso (WIP limit): tenere il sistema al di sotto della soglia di saturazione. Il fattore di utilizzazione ρ/(1−ρ) cresce in modo superlineare, a ρ=0,9 vale 9, a ρ=0,95 vale 19. Agire su ρ produce effetti sproporzionatamente grandi rispetto all’entità dell’intervento.
2. Ridurre la variabilità (Ca² e Cs²) – leva incrementale
Il fattore di variabilità entra nella formula in modo lineare rispetto a Ca² e Cs²: raddoppiare la variabilità raddoppia Wq, nulla di più. Nel concreto significa regolarizzare il flusso degli arrivi e ridurre la dispersione dei tempi di lavorazione – standardizzazione, suddivisione dei task in unità più omogenee. Nel knowledge work tuttavia la variabilità è difficile da comprimere per ragioni strutturali: è nella natura del lavoro cognitivo. La riduzione della variabilità è un miglioramento incrementale sopra la leva dominante, non un’alternativa ad essa.
3. Gestire la sequenza della coda – leva compensativa
Quando la coda esiste, l’ordine con cui i work item vengono processati ha un valore economico misurabile. Nel manifatturiero, dove i job sono di solito omogenei per durata e costo del ritardo, FIFO (First-In-First-Out) è ottimale e non c’è nulla da ottimizzare nella sequenza. Nel lavoro di concetto i work item sono eterogenei per definizione, e una disciplina di gestione della coda (queueing discipline) esplicita crea valore. Le due euristiche di base: a parità di durata, prima il job con costo del ritardo più alto; a parità di costo del ritardo, prima il job più corto. Nel linguaggio Kanban, questa leva si traduce in classi di servizio e policy di replenishment.
Vale però sottolineare che la queueing discipline è uno strumento compensativo: serve perché siamo lontani dall’ottimo, non è una soluzione strutturale. L’obiettivo ideale è avere code così piccole da non richiedere discipline di priorità e ci si arriva agendo sulle prime due leve.
Un vantaggio comune alle leve 1 e 3
Limitare il WIP e gestire la sequenza della coda sono interventi su variabili soft: si attuano con una decisione di policy, sono immediati e reversibili. Aumentare la capacità produttiva (μ) è invece una variabile hard: assumere, formare, riorganizzare sono azioni lente e costose. Questa asimmetria pratica rafforza ulteriormente la priorità delle leve operative rispetto all’investimento in capacità.
Quanto costa non avere capacità in eccesso
Fino a qui abbiamo ragionato in termini di flusso. C’è però una formalizzazione economica del problema che vale la pena esplicitare, particolarmente utile quando si deve giustificare una scelta di capacity management a un imprenditore o un responsabile aziendale.
Il costo totale di un sistema in coda è la somma di due componenti che si muovono in direzioni opposte:

- Cc = costo unitario della capacità (il costo di avere una persona in più, un server in più)
- CD = costo unitario del ritardo (il valore economico del tempo perso in attesa)
- Cc·μ = costo totale della capacità, che cresce linearmente con μ
- CD·λ/(μ−λ) = costo totale del ritardo, che decresce all’aumentare di μ e diverge quando μ converge verso il valore di λ
Il minimo del costo totale si trova in:

La lettura è diretta: la capacità ottimale è sempre superiore al tasso di arrivo – operare al 100% non è mai ottimale economicamente. La distanza dall’ottimo dipende dal rapporto CD/Cc: quanto più il costo del ritardo è alto rispetto al costo della capacità, tanto più conviene investire in capacità in eccesso.
Per chi deve prendere queste decisioni, il ragionamento si traduce in una domanda concreta: quanto costa, nella mia organizzazione, un giorno di ritardo su un work item tipico? Se la risposta è “molto” – cliente che aspetta, opportunità che sfuma, deadline contrattuale a rischio – allora la capacità in eccesso non è uno spreco, è un investimento con un rendimento calcolabile. Operare “al risparmio” sulla capacità può essere la scelta economicamente peggiore.
Conclusione
La Legge di Little ci dice che WIP (L), tasso di arrivo (λ) e Tempo di Ciclo (W) sono legati. Il modello M/M/1 mostra come il Tempo di Ciclo esploda avvicinandosi alla saturazione. Kingman completa il quadro: l’esplosione è amplificata dalla variabilità, e variabilità e utilizzazione si moltiplicano, non si sommano.
Il 65% rimane un riferimento utile. Ma in un sistema ad alta variabilità, come può essere il knowledge work, è una soglia da cui partire verso il basso, non un obiettivo da raggiungere. Le leve per migliorare il flusso esistono, hanno efficacia diversa, e – cosa non trascurabile – le più potenti sono anche le più facili da azionare.
Bibliografia
- John F.C. Kingman, The single server queue in heavy traffic, Mathematical Proceedings of the Cambridge Philosophical Society, 1961
- Paul Newbold, Principles of Management Science, Prentice-Hall, 1986
- Donald G. Reinertsen, The Principles of Product Development Flow, Celeritas Publishing, 2009


